相信你们对 Selenium & UI 测试都不陌生,然而在实践过程当中可能会碰到以下几个问题~css
笔者固然也碰到过这些问题,因而乎有了 violent-webdriver ( 基于 python ) 的诞生。python
violent-webdriver 诞生于二次封装 Selenium Webdriver,内部封装了许多方法来确保浏览器操做的执行性,你不须要去担忧定位到的元素是否存在于当前页面或者元素是否在当前时刻处于可点击状态,报错重试机制能够帮你自动解决这些没必要要的麻烦。git
简单来讲,violent-webdriver 就是一个 Selenium 插件库,以 对测试友好的角度 从新封装了 Selenium 内部的方法。github
安装过程很是简单,仍是同样的 pip install 大法 ( 请先确保正确安装了 Selenium 以及对应的浏览器驱动 ):web
pip install violent-webdriver
复制代码
假设咱们拥有以下一条用例, 而且咱们须要将该用例转化成 自动化测试用例。chrome
用例执行步骤:浏览器
使用了 violent-webdriver 后,咱们测试代码能够这么写~ (以下所示):框架
# 导包
from violent_webdriver import Chrome
# 初始化 driver
dr = Chrome.violent_chromedriver(executable_path='C://MyDownloads/Download/chrome-win32/chromedriver.exe',
use_mobile_emulation=True)
# 访问「百度首页」
dr.get('https://www.baidu.com')
# 导入 TouchActions
from selenium.webdriver.common.touch_actions import TouchActions
# 期待标题
expected_title = '百度翻译'
# 期待翻译结果
expected_result = '测试'
# 百度搜索框输入 test
dr.v_send_keys(locate_rule={'id': 'index-kw'}, message='test')
# 点击搜索按钮
dr.v_click(locate_rule={'id': 'index-bn'})
# 点击第一个命中的搜索结果 (框架内默认对第一个知足条件的元素进行操做)
dr.v_click(locate_rule={'tag name': 'em', 'text': 'test'})
# 获取实际的标题
actual_title = dr.v_get_text(locate_rule={'css selector': '.sfa-title'})
# 获取实际的翻译结果
actual_result = dr.v_get_text(locate_rule={'css selector': 'p[class=\'trans-content\']'})
# 趣味性断言 ~ .~
if actual_title and actual_title == expected_title and actual_result and actual_result == expected_result:
dr.execute_script('alert(\'测试经过୧(๑•̀◡•́๑)૭\')')
else:
dr.execute_script('alert(\'测试失败o(╥﹏╥)o\')')
复制代码
每一行代码都有很是明确的注释,相信读者能够清晰的看到,我并无加入任何的 time.sleep , 而且能经过一个简单的参数传递 ( use_mobile_emulation ) 实现移动端的模拟。测试
运行代码后执行过程以下:spa
测试经过୧(๑•̀◡•́๑)૭
当 UI 测试代码量逐渐增大、测试流程愈来愈复杂时,我相信,violent-webdriver 必定能帮助到你~
violent-webdriver 开源地址: github.com/amazingTest…
记得点个 star 哦 ~
但愿你们能从本篇文章有所收获~
最后给你们推荐一下个人公众号 「智能测试开发」,欢迎你们扫描下方海报二维码领取 进阶教程~