讓 UI 測試變得更便捷 - violent-webdriver

起源

出問題了

相信你們對 Selenium & UI 測試都不陌生,然而在實踐過程當中可能會碰到以下幾個問題~css

  • 被測試執行過程當中遇到的各類偶發錯誤所困擾;
  • 爲確保一個用例操做的正確執行而寫了很是多冗餘的代碼 ( time.sleep() 等 );
  • 各類異常狀況致使的測試結果不許確。

怎麼辦

筆者固然也碰到過這些問題,因而乎有了 violent-webdriver ( 基於 python ) 的誕生。python

什麼是 violent-webdriver

violent-webdriver 誕生於二次封裝 Selenium Webdriver,內部封裝了許多方法來確保瀏覽器操做的執行性,你不須要去擔憂定位到的元素是否存在於當前頁面或者元素是否在當前時刻處於可點擊狀態,報錯重試機制能夠幫你自動解決這些沒必要要的麻煩。git

簡單來講,violent-webdriver 就是一個 Selenium 插件庫,以 對測試友好的角度 從新封裝了 Selenium 內部的方法。github

使用

安裝

安裝過程很是簡單,仍是同樣的 pip install 大法 ( 請先確保正確安裝了 Selenium 以及對應的瀏覽器驅動 ):web

pip install violent-webdriver
複製代碼

最佳實踐

假設咱們擁有以下一條用例, 而且咱們須要將該用例轉化成 自動化測試用例chrome

用例執行步驟:瀏覽器

  • 訪問百度首頁
  • 搜索 test
  • 點擊進入第一個搜索結果
  • 驗證搜索結果是否爲「百度翻譯」
  • 驗證翻譯結果是否爲「測試」

使用了 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 哦 ~

但願你們能從本篇文章有所收穫~

最後給你們推薦一下個人公衆號 「智能測試開發」,歡迎你們掃描下方海報二維碼領取 進階教程~

相關文章
相關標籤/搜索