相信你們對 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 哦 ~
但願你們能從本篇文章有所收穫~
最後給你們推薦一下個人公衆號 「智能測試開發」,歡迎你們掃描下方海報二維碼領取 進階教程~