PageObject:
工具模块–>区域页面文件–>testcase/test_.py
如果工具模块要调整只修改工具模块。
如果业务调整就修改 区域页面文件和testcase/test_.py
精简版 是业务代码只修改testcase/test_*.py testcase/.py文件按区域划分
工具模块把APi封装成更便捷和稳定,精简代码量 具体可以看助教老师 资料的文件
也可以在魔法学院里搜其他我写的selenium帖子
APi封装
拉起浏览器
跳转其他浏览器+断言
单个元素显式等待
多个元素显式等待
单个元素非显式等待
单击/双击 封装
定位器+send_keys
定位器+单击/双击
…等等
里面webdriver api很多都i加了断言模式 比如以下
def assert_title(self, titleText):
"""
页面标题上是否包含关键字,支持传入多个参数
:param titleStr: 关键字
:param args: 支持传入多个参数
:return:布尔
"""
try:
assert titleText in self.driver.title, \\
"在title里没有找到%s" % titleText
print("加载网页正确") # 业务self.assertTrue()
return True
except Exception as error:
print(format(error))
return False
def _get_current_url(self, _url):
try:
assert _url == self.driver.current_url
except Exception as error:
print(format(error))
def F5(self, _url):
"""
刷新后验证网页正确 now_url覆写使用
:return:
"""
self.driver.refresh()
print("刷新正确")
self._get_current_url(_url) # 刷新后判断当前网页
def forward(self, _url, time_wait=4):
"""
配合浏览器回退使用,回到之前的页面
:param _url:形参是验证当前页面
:param time_wait:属于time_sleep方法
:return:
"""
self.time_sleep(time_wait)
self.driver.forward()
self._get_current_url(_url)
print("forward网页成功")
工程结构
D:selenium_uses
│
│ run.py 入口函数执行run.py
│ __init__.py
│
├─Conf
│ │ caseSkip.py unittest.skip用
│ │ config.ini 配置文件
│ │ filedata.txt
│ │ setting.py 公共导入库
│
├─driver 驱动文件 和浏览器版本挂钩
│ chromedriver.exe
│ geckodriver.exe
│ IEDriverServer.exe
│
├─logs 日志文件夹
│ WebTest_20180820_0000.log
│ WebTest_20180820_0008.log
│ WebTest_20180820_0018.log
│
├─Pic 截图文件夹
│ loginFiled.jpg
│ test_send_keys.jpg
│
├─Report-20180819 当日报告
│ Report-222156.html 22:21:56
│
├─test 临时文件夹可以命名为temp
│ sizelog.txt 尺寸写入
│ __init__.py
│
├─test_case *测试用例
│ │ test_baidu_api.py
│ │ test_baidu_keys.py
│ │ test_checkTesterhome.py
│ │ test_loginTesterhome.py
│ │ test_loginTesterhome_log.py
│ │ test_tianmao.py
│ │ utils_import.py
│ │ __init__.py 文件夹提升成模块
│ └─
│
├─test_data 数据驱动 可以和Conf放在一起
│ data.xlsx 如果大量文件都是用excel读取的就摆这里
│ __init__.py 直接读不用init
│
└─util 工具类模块
│ Base.py 基本类,不包含webdriver
│ ClientSelenium.py 包含webdriver
│ Err.py 异常类
│ HTMLTestRunner.py *报告类 即时使用
│ log.py\t\t *日志类 即时使用
│ ParserConfig.py 读取ini文件
│ ReadOpenData.py\t 读取excel文件
│ __init__.py 文件夹提升成模块
作业
1.0818的作业可以用封装过的来实现。
2.util/ClientSelenium.py可以从头到尾敲一次, 随着工作中学习,可以继续丰富