最近在翻selenium的官方文檔,禿然發現了一份官方的selenium踩坑指南,不敢獨享,拿出來給大家分享一下。
眾所周知,我們應該把合適的工具用在合適的場景,這跟殺雞的時候不需要用到宰牛刀是一樣的道理。
selenium比較好的使用場景是驗收測試/回歸測試/TDD/BDD,一些同學喜歡把selenium用到某些selenium難以承受的場景,這種方式官方是不推薦的。
下面這些是官方給出的各種神坑,有興趣的同學可以親自踩一下。
驗證碼
一般來說我們不需要用selenium去處理各種驗證碼,有興趣的同學可以逆向思維,親自試試。
那么遇到驗證碼怎么辦?
- 測試環境就關掉驗證碼
- 留個后門,比如萬能驗證碼
下載文件
盡管我們可以使用selenium去點擊下載按鈕,從而達到下載文件的目的,但是這樣做其實並不好。首先處理起來可能比較麻煩,另外關於下載時間下載速度以及下載完整性的驗證我們是不太好做的。
一般來說,建議用selenium拿到下載鏈接,然后使用libcurl之類的庫去直接處理下載比較好。用python的同學可以用requests庫去處理下載了。
HTTP 請求的響應碼
這一part官方苦口婆心的解釋了很多,大意是selenium是站在用戶角度去自動化測試,對於終端用戶來說,他們並不直接關注請求的返回碼,他們關注的是能不能看到404的錯誤頁面之類的可以直接感受到信息。
下面是非官方的建議,嗯,也就是我的建議
- 如果你真的關注響應的狀態碼,那么別在ui自動化層去做,試着去在非ui層,比如接口層做
- 放棄在ui自動化用例中斷言狀態碼的努力,有舍才有得嘛
第三方登陸
使用selenium去自動化第三方登陸原則上是不推薦的。因為
- 增加了用例的復雜度和運行時間,用例容易跑失敗
- 第三方登錄是不穩定的,這會讓你的登錄變得不穩定
在國外一般第三方登錄的提供方會提供對應的API,我們可以把登錄API集成到用例里,這些API相當穩定,比用selenium去自動化登錄過程要好。
國內可以通過類似的思路去做,比如微信登錄就有自己的API,這種實現比較硬核,並且跟ui自動化結合起來也有一定難度,有需求的同學可以嘗試一下。
用例依賴
這個問題甚合我意,終於有官方文檔背書了。
selenium team說了,用例直接不要有依賴,要可以用任意順序運行,原因我之前的文章里有大量說明,大家可以去翻一下。
性能測試
簡而言之,selenium不適合做性能測試,原因我就不詳細說了,總之不合適的話咱就不要強求,有情人總會終成眷屬。
如果需要做性能測試,可以看看jmeter,官方推薦,值得信賴。
鏈接爬蟲
用selenium去遍歷一些鏈接從而達到爬蟲的效果官方是不推薦的,理由是慢,有很多更好的替代方案。
這里我持有保留意見,對於一些反爬蟲很厲害的網站,用selenium做爬蟲其實是不錯的選擇,具體原因就不說明了,大家嘗試之后也許就會理解。
對於學習selenium的同學來說,用selenium做爬蟲其實是非常好的練習方式,盡管爬內容的效率不高,但咱們的目的是多寫代碼,多練習selenium的api,所以其實我是推薦大家把selenium當練習性的爬蟲來用的。
好了,上面這些官方坑是大家可能會經常遇到的,你在使用selenium還遇到過哪些坑呢?歡迎評論留言。