簡述自動化測試的三大等待
- 強制等待。直接使用time.sleep()方法讓程序暫停指定的時間。優點是實現簡單,缺點是不夠靈活,可能會導致不必要的等待時間浪費。
- 隱式等待。設置一個固定的等待時間,在這個時間內不斷嘗試去查找元素,如果能找到,則繼續執;如果找不到,則拋出異常。在瀏覽器對象的整個生命周期起作用,優點是能夠適應頁面加載速度,缺點就是隱式等待會對整個webDriver期間全局生效,意味著不需要等待的場景下,也會有潛在的延遲,無形中延長了整體測試執行時間。一般都是使用driver.implicitly_wait()實現
- 顯式等待。他是觸發式等待策略,能夠支持測試腳本中某個特定條件變成真之后再繼續執行。使用的是webDriverWait類
你對 selenium 二次封裝的關鍵字,是怎么封裝的?以等待元素的關鍵字舉例,設計了哪些參數?
主要就是對一些繁瑣的操作抽象成簡單易懂的函數或方法。
以等待元素的關鍵字舉例,需要設計:
- 元素定位方式、定位表達式。根據id還是xpath等
- 超時時間。如果超過超市時間還沒有滿足條件,則拋出異常
- 輪訓時長。設置多久檢查一次是否滿足條件。
- 異常處理。能夠自定義超市或條件不符合的處理例如,比如打印錯誤日志,截圖等。
做WebUI自動化遇到過那些問題,如何解決的?
元素定位不穩定。使用XPATH可以減少這種情況
元素異步加載問題。等待元素加載即可
上述都是一些常規的問題,在我實際工作中,使用UI自動化測試過實時渲染的表格,這種表格前端使用的是Canvas,也就是對圖形進行實時渲染,這種情況下F12抓取DOM樹只能抓到這個canvas這個標簽,測試這種情況,我當時使用的是圖像對比。
(如果繼續問圖像對比是如何實現的,則)可以繼續說,使用PIL庫進行比較。先截取當前頁面,和預設的圖片去做比對,可以使用工具去標注不同的像素區域。
如果你做接口測試,接口返回成功,但實際數據庫沒有相應數據,可能存在什么問題?如何定位?
- 最開始,我會考慮是否數據庫鏈接錯了,那數據庫肯定是沒有相應數據的
- 如果數據庫正確的,簡單的考慮就是網絡不好,沒有加載出來,多刷新一下等下,也會嘗試直接使用sql語句去查詢;復雜一點的考慮,可能就是后端的代碼問題,也許還沒提交事務,就先返回了響應,那肯定也是沒有數據的
- 最后還會找后端開發協助排查,嘗試復現,或者到服務器上面翻日志