《一》keys.py(Selenium关键字驱动类:常用操作行为给封装为各类关键字)
--a.所有的函数,如果不添加return,最后会返回None
--b.将常用的自行封装到自定义类中,在使用时,直接调用自定义封装的类即可
(1)导入相关的包
from time import sleep
from selenium import webdriver
from selenium.webdriver.support.wait import WebDriverWait
# 基于type_值决定生成的driver对象是什么类型
from test007.test0077.chrome_options import ChromeOptions
(2)open_browser函数
1、源码
def open_browser(type_):
if type_ == 'Chrome':
driver = webdriver.Chrome(options=ChromeOptions().options())
else:
try:
driver = getattr(webdriver, type_)()
except Exception as e:
print("Exception Information:" + str(e))
driver = webdriver.Chrome()
return driver
2、扩展知识:Python反射机制(getattr)
四大内置函数:常用的是其中的getattr函数,就是获取指定类的指定属性
getattr(类,属性) 相当于 类.属性 的意思
例如:webdriver.Chrome == getattr(webdriver,'Chrome')
基于反射获取属性是这个反射函数的基本定义。获取函数就需要在末尾加上()
例如:webdriver.Chrome() == getattr(webdriver,'Chrome')()
例如open_browser()函数:不用反射的形态
if type_ == Chrome:
driver = webdriver.Chrome()
elif type_ == Firefox:
driver = webdriver.Firefox()
elif type_ == Ie:
driver = webdriver.Ie()
elif safari......
elif edge......
(3)Keys类(Selenium关键字驱动类:常用操作行为给封装为各类关键字)
1、构造函数
def __init__(self, type_):
self.driver = open_browser(type_)
self.driver.implicitly_wait(10)
2、访问url
def open(self, url):
self.driver.get(url)
3、定位元素
def locate(self, name, value):
return self.driver.find_element(name, value)
4、点击操作
def click(self, name, value):
self.locate(name, value).click()
5、输入
def input(self, name, value, txt):
self.locate(name, value).send_keys(txt)
6、退出
def quit(self):
self.driver.quit()
7、显式等待
def web_el_wait(self, name, value):
return WebDriverWait(self.driver, 10, 0.5).until(
lambda el: self.locate(name, value), message='元素查找失败')
8、强制等待
def wait(self, time_):
sleep(time_)
9、切换Iframe
def switch_frame(self, value, name=None):
if name is None:
self.driver.switch_to.frame(value)
else:
self.driver.switch_to.frame(self.locate(name, value))
10、切换default窗体
def switch_default(self):
self.driver.switch_to.default_content()
11、断言文本信息
reality = self.locate(name, value).text
assert expect == reality, '断言失败,实际结果为:{}'.format(reality)
《二》case_demo.py(测试代码的内容编写与类的管理)
--a.调用关键字驱动类实现自动化效果
--b.一个py文件,管理一个测试用例
(1)百度搜索业务流程
from test008.test0081.test0081_01.keys import Keys
key = Keys('Chrome')
key.open('http://www.baidu.com')
key.input('id', 'kw', '虚竹')
key.click('id', 'su')
# key.assert_text(xxx,xxx,xxxxx)
人生苦短,及时行乐
浙公网安备 33010602011771号