#coding=utf-8
import os, time
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.wait import WebDriverWait
from Driver import My_driver
from selenium.webdriver.support.select import Select
class My_page(object):
'''页面基本的元素操作
包括:点击, 输入, iframe, wait
'''
def __init__(self, driver):
self.driver = driver
def Click(self, *loc):
# 点击元素
return self._Wait_Run(self._click, *loc)
def Input(self, text, *loc):
# 输入text
return self._Wait_Run(self._input, text, *loc)
def Select_List(self, text, *loc):
# 根据text去选择下拉框内容, text为下拉框里的值
return self._Wait_Run(self._select_list, text, *loc)
def Element(self, *loc):
# 定位单个元素
return self._Wait_Run(self._element, *loc)
def Elements(self, *loc):
# 定位多个元素
return self._Wait_Run(self._elements, *loc)
def Iframe(self, *loc):
# 进入iframe
return self._Wait_Run(self._iframe, *loc)
def DisIframe(self):
# 退出iframe
return self._Wait_Run(self._disiframe)
def Switch_alert(self):
'''获取弹出框内容'''
return self._Wait_Run(self._switch_alert)
def Exit_alert(self):
'''释放弹出框'''
return slef._Wait_Run(self._exit_alert)
def _click(self, *loc):
# 点击元素
return self.driver.find_element(*loc).click()
def _input(self, text, *loc):
# 输入字符串
return self.driver.find_element(*loc).send_keys(text)
def _select_list(self, text, *loc):
# 下拉框
return Select(self.driver.find_element(*loc)).select_by_visible_text(text)
def _element(self, *loc):
# 定位单个元素
return self.driver.find_element(*loc)
def _elements(self, *loc):
# 定位多个元素, 以list的方式返回
return self.driver.find_elements(*loc)
def _iframe(self, *loc):
# 进入iframe
return self.driver.switch_to.frame(self._element(*loc))
def _disiframe(self):
# 释放Iframe
return self.driver.switch_to_default_content()
def close_process(self, process_name='chromedriver.exe'):
'''
--------------------
|杀死进程,主要用来杀死chromedriver.exe的进程
|浏览器每一次的调用都会启用一次Chromedriver
||根据名称去杀死进程
'''
if process_name[-4:].lower() != '.exe':
process_name += '.exe'
os.system('taskkill /f /im ' + process_name)
def _Run(self, name, *args):
'''|运行方法
|函数当做参数去传递
'''
return name(*args)
def _Wait_Run(self, name, *args):
'''
||由时间来控制函数的运行
|操作完成后直接return,结束函数
|超过时间限制的时候跳出循环,return 结束函数
'''
endtime = time.time() + float(5)
while True:
try:
return self._Run(name, *args)
except BaseException as e:
print 'Your Fail: %s' % e
remaining = endtime - time.time()
if remaining <= 0:
raise
time.sleep(min(remaining, 0.01))
errors_text = '现在的时间 %s, 你剩余的运行时间 %s' %(time.strftime('%Y-%m-%d %H:%M:%S'), remaining)
print errors_text
def _switch_alert(self):
'''获取弹出框内容'''
return self.driver.switch_to.alert.text
def _exit_alert(self):
'''释放弹出框'''
return self.driver.dismiss()
import os, time
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.wait import WebDriverWait
from Driver import My_driver
from selenium.webdriver.support.select import Select
class My_page(object):
'''页面基本的元素操作
包括:点击, 输入, iframe, wait
'''
def __init__(self, driver):
self.driver = driver
def Click(self, *loc):
# 点击元素
return self._Wait_Run(self._click, *loc)
def Input(self, text, *loc):
# 输入text
return self._Wait_Run(self._input, text, *loc)
def Select_List(self, text, *loc):
# 根据text去选择下拉框内容, text为下拉框里的值
return self._Wait_Run(self._select_list, text, *loc)
def Element(self, *loc):
# 定位单个元素
return self._Wait_Run(self._element, *loc)
def Elements(self, *loc):
# 定位多个元素
return self._Wait_Run(self._elements, *loc)
def Iframe(self, *loc):
# 进入iframe
return self._Wait_Run(self._iframe, *loc)
def DisIframe(self):
# 退出iframe
return self._Wait_Run(self._disiframe)
def Switch_alert(self):
'''获取弹出框内容'''
return self._Wait_Run(self._switch_alert)
def Exit_alert(self):
'''释放弹出框'''
return slef._Wait_Run(self._exit_alert)
def _click(self, *loc):
# 点击元素
return self.driver.find_element(*loc).click()
def _input(self, text, *loc):
# 输入字符串
return self.driver.find_element(*loc).send_keys(text)
def _select_list(self, text, *loc):
# 下拉框
return Select(self.driver.find_element(*loc)).select_by_visible_text(text)
def _element(self, *loc):
# 定位单个元素
return self.driver.find_element(*loc)
def _elements(self, *loc):
# 定位多个元素, 以list的方式返回
return self.driver.find_elements(*loc)
def _iframe(self, *loc):
# 进入iframe
return self.driver.switch_to.frame(self._element(*loc))
def _disiframe(self):
# 释放Iframe
return self.driver.switch_to_default_content()
def close_process(self, process_name='chromedriver.exe'):
'''
--------------------
|杀死进程,主要用来杀死chromedriver.exe的进程
|浏览器每一次的调用都会启用一次Chromedriver
||根据名称去杀死进程
'''
if process_name[-4:].lower() != '.exe':
process_name += '.exe'
os.system('taskkill /f /im ' + process_name)
def _Run(self, name, *args):
'''|运行方法
|函数当做参数去传递
'''
return name(*args)
def _Wait_Run(self, name, *args):
'''
||由时间来控制函数的运行
|操作完成后直接return,结束函数
|超过时间限制的时候跳出循环,return 结束函数
'''
endtime = time.time() + float(5)
while True:
try:
return self._Run(name, *args)
except BaseException as e:
print 'Your Fail: %s' % e
remaining = endtime - time.time()
if remaining <= 0:
raise
time.sleep(min(remaining, 0.01))
errors_text = '现在的时间 %s, 你剩余的运行时间 %s' %(time.strftime('%Y-%m-%d %H:%M:%S'), remaining)
print errors_text
def _switch_alert(self):
'''获取弹出框内容'''
return self.driver.switch_to.alert.text
def _exit_alert(self):
'''释放弹出框'''
return self.driver.dismiss()
_Wait_Run()该方法之前有说过就不多说了
close_process()这个方法是用来杀死driver驱动的方法,可以放在tearDown()方法中,每次执行完成一个用例就去杀死一次,要不然driver.exe在windwos上会越来越多,造成电脑卡死
_iframe()用来封装driver.switch_to.frame()方法,该方法的定位方式比较少,可以通过获取driver.find_element()定位去定位,可以使用多种定位方式