千纸鹤

  博客园  ::  :: 新随笔  ::  ::  :: 管理
  5 随笔 :: 70 文章 :: 0 评论 :: 9301 阅读
《一》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)
posted on   隆江猪脚饭  阅读(80)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示