背景:
? ? ? ? 之前有做過android和ios的UI自動化宛篇,工作原因web ui自動化沒怎么實踐過,但ui自動化大致框架都是類似的薄湿,這兩天抽空把我們的后臺實現(xiàn)了ui自動化叫倍,不用每次重構(gòu)和發(fā)布前都手工去過主路徑啦。
一豺瘤、框架選型
? ? ? ? 預研了幾款web UI自動化框架段标,其中selenium憑借它的幾點優(yōu)勢讓我直接選擇了它。
? ? ? ? 首先炉奴,selenium與我做android和ios UI自動化時選擇的appium框架類似,寫用例無縫銜接直接上手就好蛇更,沒有學習成本瞻赶;
? ? ? ? 其次,依賴的環(huán)境簡單派任,沒有appium那么多的包要裝砸逊;
? ? ? ? 第三,selenium雖然與之配套的瀏覽器和工具最新的更新沒那么及時掌逛,但舊版本的支持都是現(xiàn)有可用的师逸,特別是selenium IDE支持錄制,firefox還有firebug插件可以右鍵直接獲取xpath豆混,特別省時省力篓像,于是就這么愉快的決定啦动知,玩得飛起~~~
二、環(huán)境安裝
? ? ? ? 1员辩、python2.7 mac 自帶盒粮,不用裝,要裝的小伙伴自行百度奠滑,so easy ~
? ? ? ? 2丹皱、selenium
? ? ? ? 由于selenium IDE在新版本firefox上并不支持,沒有錄制功能寫起來還是挺費神的宋税,我保守的都選擇舊版本摊崭。
? ? ? ? 如果已經(jīng)安裝了selenium3,需要先卸載杰赛;
? ? ? ?查看selenium版本命令:pip show selenium呢簸;
? ? ? ? 卸載selenium命令:sudo pip uninstall selenium。
? ? ? ? selenium用命令行sudo pip install selenium==2.53.6安裝時淆攻,由于被墻了阔墩,選擇下載安裝包自行安裝帽蝶,步驟如下:
? ? ? ? a.下載安裝包selenium-2.53.6.tar.gz躺酒;
? ? ? ? b.將安裝包放到python2.7的site-packages目錄下,解壓堂鲜,我的目錄是/Library/Python/2.7/site-packages/伞芹;
? ? ? ? c.cd到上一步解壓后的selenium目錄下忘苛,python setup.py??install,安裝完成唱较,查看版本號確認安裝成功扎唾。
? ? ? ? 3、下載安裝firefox 40.0版本南缓;
? ? ? ? 4胸遇、下載selenium_ide-2.9.1-fx.xpi,拖到firefox里面安裝好后汉形,firefox右上角多出selenium IDE插件入口纸镊;
? ? ? ? 5、下載firebug-2.0.16-fx.xpi概疆,拖到firefox里面安裝好后逗威,firefox右上角多出firebug插件入口;
? ? ? ? 至此岔冀,環(huán)境安裝完成凯旭。
三、錄制自動化腳本
? ? ? ? 點擊firefox右上角selenium IDE插件圖標,進入selenium IDE主界面罐呼;
? ? ? ? 1鞠柄、在下圖序號1紅框中,輸入你要測試的web url弄贿;
? ? ? ? 2春锋、在下圖序號2紅框中,調(diào)節(jié)你要執(zhí)行用例的速度差凹,一般建議調(diào)到中間期奔;
? ? ? ? 3、在下圖序號3紅框中危尿,點擊錄制按鈕開始錄制呐萌;
? ? ? ? 4、在下圖序號4紅框中谊娇,對錄制結(jié)果進行調(diào)節(jié)肺孤,可以增刪改事件、參數(shù)济欢;
? ? ? ? 5赠堵、在下圖序號3紅框中,點擊停止錄制按鈕停止錄制法褥;
? ? ? ? 6茫叭、在下圖序號5紅框中,點擊按鈕開始執(zhí)行用例半等;
? ? ? ? 7揍愁、可以在菜單中選擇文件——export test case as——python 2/unittest/web driver,將腳本導出為python杀饵,本地編輯直接腳本調(diào)用莽囤。
四、優(yōu)化腳本
? ? ? ? 上步中最后導出的腳本切距,只包含了操作朽缎,沒有包含斷言結(jié)果判斷,也缺少容錯谜悟,想要持續(xù)集成自動生成結(jié)果饵沧,還需要自己按需補充。
五赌躺、jenkins持續(xù)集成
? ? ? ? 新建一個Jenkins任務,調(diào)用python命令執(zhí)行腳本即可羡儿。
六礼患、輸出報告
? ? ? ? 偷懶直接用了之前做app UI自動化的報告模板HTMLTestRunner.py,這個文件網(wǎng)上到處都能下載,簡書我還不會上傳文件缅叠,就不貼了悄泥,貼下測試腳本中需要添加的內(nèi)容:
import HTMLTestRunner
testunit = unittest.TestSuite()
# 將測試用例加入到測試容器中
testunit.addTest(webuitest("testcaseabc"))
runner = HTMLTestRunner.HTMLTestRunner(stream=fp, title='test result', description=u'result:')
runner.run(testunit)
生成的報告挺簡單明了,可以自己加log肤粱。
————————————
最近深入看selenium的書籍弹囚,了解到有selenium grid工具可以實現(xiàn)同一時間不同機器同時執(zhí)行用例,感覺值得學習领曼,mark下