https://github.com/wuranxu/webTestcss
但願你們可以喜歡!!!html
本框架基於Python3+selenium3+unittest組成,用戶以Page Object的模式編寫用例。元素的定位和操做按照頁面劃分,達到Web端自動化迴歸測試的目的,並生成測試報告。瀏覽器兼容性暫時未完善。
本例子展現了一個必應首頁搜索"龍珠超"的測試用例,比較簡陋。python
git clone https://github.com/wuranxu/webTest.git
mysql
進入下載好的webTest目錄,並在此目錄運行install.py
mac/Linux: python3 install.py
windows: python install.py
linux
在webTest目錄輸入命令(確保chrome瀏覽器已安裝, 驅動會自行下載):git
python run_case.py
github
project └───ErrorPic | └───DataBase | └───Log | └───Xmind | └───Page | └───Report | └───Page | └───TestSuite | | base_case.py | └───templates | | report_templates.html └───TestResult | | report_templates.html | | GenerateReport.py | | Result.py | └───chromedriver │ │ chromedriver.exe | └───Tools | | chrome.py | | decorator.py | | driver.py | | logger.py | | web_tool.py | │ README.md │ run_case.py | requirements.txt │ config.py | webdriver_test.log
chromedriverweb
存放chromedriver驅動, 若本機未安裝chromedriver則自動匹配本機chrome版本下載對應驅動。sql
DataBasechrome
存放Mysql和Mongodb的鏈接類
ErrorPic
存放出錯截圖, 目前根據用例名稱建立文件夾並存放。
Log
存放全部日誌文件, 目前只有webdriver_test.log, 主要目的是將日誌區分開來。
Page
頁面目錄, 可擴展, 針對不一樣模塊的頁面可設計不一樣目錄結構。通常存放該頁面的操做(Action)以及元素(Location), 用例具體斷言不建議寫於此處(因人而異)。
Report
存放測試報告,爲html形式,可右鍵經過瀏覽器打開,使用chrome效果尤佳。
templates
存放html模板,傳入測試結果以生成測試報告。
TestResult
GenerateReport.py
是組織測試結果, 生成測試報告, 填入數據至html報告模板的方法。
Result.py
繼承自unittest.TextTestResult類, 存放測試結果。
TestSuite
測試套件目錄, 可擴展, 子目錄爲某個測試集。測試集中存放測試用例。
base_case.py
存放基礎測試用例。
Tools
chrome.py
用於更新/下載chromedriver, 目前只支持mac os和windows系統。
decorator.py
用於存放自動截圖/重跑等裝飾器, 主要是爲測試函數添加錯誤截圖以及重跑等功能。
driver.py
繼承自WebDriver類, 主要用於簡化原生api以及添加切換frame/handle等api。
logger.py
記錄日誌的功能函數。
web_tool.py
用於Web自動化測試的工具類, 包括截圖、獲取用例等方法。
xmind_reader.py
用於解析xmind文件,暫時不支持過於複雜的xmind。用例的大概編寫方式以下圖。
Xmind
存放Xmind文件, xmind文件用於編寫測試用例。
config.py
用於存放絕大部分配置。繼承於BaseConf類, 可擁有本身的配置。
requirements.txt
用於存放本框架所需庫。
run_case.py
存放組織用例, 生成測試套件, 運行測試用例等函數。
webdriver_test.log
存放測試用例執行時候的有關操做和錯誤信息等。
安裝Python3
下載對應操做系統的Python版本並安裝。
下載IDE(非必須)
推薦Pycharm
安裝必須的庫
目錄中有install.py, 安裝好Python以後, 在終端窗口中輸入以下命令:
Linux/mac: python3 install.py
windows: python install.py
注意: 安裝時須要帶上install.py路徑或者進入該文件所在目錄。
Pycharm配置(如有)
第一步: 配置項目Python環境
File->Open
選擇webTest目錄, 點擊窗口右下角的Open
打開Preferences, 在Project Interpreter裏選擇剛纔安裝Python的地址, 點擊OK
點擊Edit Configurations
若是沒有Python配置的話, 點擊圖中"+"圖標, 而後選擇Python並添加
配置腳本
右擊run_case.py, 選擇Run則爲運行模式, Debug則爲調試模式
用例編寫規則
Python:
Location類實例化的時候可指定第三個參數, 方便使用其餘定位的同窗。如:
menu = Location("大後臺左側菜單", ".menuItem", "XPATH")
Xmind:
畫布(必填)
爲TestSuite名, 可容許重複畫布名
根元素(必填)
爲用例的Class名
描述(最好有)
爲該用例的測試點
頁面(必填)
須要填寫Page下的頁面, 子節點爲其頁面下須要用到的方法, 方法後若是還有子節點,則爲該方法返回值, 如有多個返回值則用;分割且該返回值會被保留方便作斷言
跳過(不填默認生成用例)
不爲True的時候均會生成用例
重跑次數(可選)
用例若失敗, 從新運行的次數, 默認爲0。
步驟(必填)
子節點爲頁面方法或斷言, 若以assert開頭則爲斷言, 不然則判斷爲方法, 若在頁面中忘了填寫該方法, 則調用系統內部方法。
方法節點的子節點爲參數, 一樣以;分割。
斷言的子節點爲2或3個, 如assertEqual, 可理解是A==B?true:msg
, 最後一個參數是msg, 具體出錯緣由。
瀏覽器驅動
集成jenkins
解決方案:
phantomJs(不合適, 仍是要寫出來)
新版selenium使用的時候會提示被廢棄, 建議用無頭模式取代, 且運行不穩定。
Chrome無頭模式(centos7以上應可行)
因爲jenkins所在機器centos6.x版本太低, 被Chrome放棄支持, Chrome瀏覽器沒法安裝
Firefox無頭模式(目測不可行, 測太屢次了記不住)
Firefox可正常安裝, 可是geckodriver比較挑瀏覽器版本, 屢次試驗不成功, 換了無數個瀏覽器版本+geckodriver版本後已經忘了是否可行。
Firefox+虛擬桌面(目前解決方案)
見用例driver.py文件。但不完美, 錯誤截圖顯示的網頁內容都····一言難盡, 好像一個瞎子終於重獲光明卻發現本身滿臉麻子。回到正題, 爲何不自動同步firefox驅動, 由於在c方案卡殼過久比較噁心。
版本信息:
geckodriver0.16
selenium>=3.4
firefox52.0
測試報告
因爲郵件不支持js和引入的css, 致使報告巨難看。因此採用了附件形式, 目前是個比較大的痛點。
Page Object
關於po, 確實也沒有很深的研究, 只等小白鼠試水了。
api封裝
api封裝得還不夠多, 除了經常使用方法之外。可是基本上每一個方法都插入了顯示等待, 大大下降了元素找不到, 點不到, 各類不到的可能性。
重跑
解決了使用裝飾器重跑用例不執行setUp+tearDown的問題。
錯誤截圖
截圖用base64保存, 因此只有錯誤的時候纔會截圖。由於base64太大。
Xmind編寫用例
這算一個小亮點吧。
自動化配置環境
已完成, 方便使用。
數據庫
支持mongo和mysql。
執行效率
目前是單線程, 還沒作多線程, 時間緊迫。因此在jenkins那臺老爺機比較慢, 若是用例多起來了確定是不行的。
代碼規範/質量
寫得一塌糊塗, 你們看不過去就幫忙改了吧, 跪謝orz