App自動化測驗:等待webview頁面資料加載完成
一、適用場景
App自動化測驗時,經常有混合H5頁面的測驗場景,該場景下通過Python+Appium自動化測驗時用到的方法,與Python+Selenium進行Web端自動化測驗時用到的方法相同,都是繼承于WebDriver,
比如元素的三大顯示等待:
1、表示元素被加載 presence_of_element_located()
2、表示元素可以被看見 visibility_of_element_located()
3、等待元素可以被點擊 element_to_be_clickable()
上面三種常用的顯示等待能基本滿足自動化測驗需要,但也有特殊場景無法滿足的,如下:

需求:在商品詳情頁點擊“立即購買”,可以購買該商品成功,(該頁面是App內嵌的webview頁面)
在App自動化測驗程序中,當進入上面的商品詳情頁時,需要加載大量的詳情資料,但是“立即購買”按鈕先于詳情資料加載完成,所以此時點擊“立即購買”按鈕時,頁面會無任何反應或有錯誤提示,導致自動化測驗程序中斷,
通常的解決辦法是設定顯示等待,查找某個元素加載完成后,再點擊“立即購買”按鈕,但存在一個缺陷是,不知道等待商品詳情頁面的哪個元素,因為詳情頁的元素太多,且每次加載情況還不相同,此時需要一個通用的方法,等待頁面所有的資料加載完成,而不管是什么資料,
二、解決辦法
selenium的page_source方法可以獲取到頁面原始碼,頁面在加載資料時原始碼都是在持續更新的,當頁面資料加載完成時原始碼就不會再更新,因此我們可以封裝一個方法,在原始碼不再更新時執行下一步操作,
封裝的方法如下:
1 def wait_data_load(self):
2 old_page = ''
3 new_page = self.driver.page_source
4 while old_page != new_page:
5 self.swipe_up()
6 # time.sleep(0.3)
7 old_page = new_page
8 new_page = self.driver.page_source
9 my_log.info("webview頁面資料加載完成")
代碼中self.swipe_up() 是自己封裝的向上滑動手機螢屏的方法,也可以不用該方法,使用time.sleep(0.3)強制等待,
上面的方法經本人試用后,一勞永逸的解決了webview頁面,需要等待所有資料加載完成的問題,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/288569.html
標籤:其他
上一篇:RISC-V靠譜嗎?
下一篇:OSGQt編譯安裝
