需求:在做appium自動化的過程中遇到一個問題,每次下滑都會刷新頁面(比如微信朋友圈),要通過滑動獲取所有頁面信息,直到滑動到頁面底部,但是不知道怎麼判斷滑動到底部從而終止滑動的循環(appium無法得知滑動成功還是失敗)
appium本身沒有直接判斷是否滑動到頁面底部的函數,但是我們可以通過一個比較笨的方法來實現滑動到頁面底部的判斷,思路也比較簡單:判斷滑動前後的頁面元素是否完全一致,如果完全一致則說明滑動失敗(已經滑動到了底部),如果不一致則說明滑動成功。示例代碼如下:
# 獲取滑動前頁面元素
before_swipe = driver.page_source
# 滑動
driver.swipe(300, 1000, 300, 300)
# 獲取滑動後頁面元素
after_swipe = driver.page_source
# 對比滑動前後的頁面元素
# 若滑動前後頁面元素完全相同,則滑動失敗,已達頁尾
if before_swipe == after_swipe:
Swiped = False
# 若滑動前後頁面元素不同,則滑動成功,繼續滑動
else:
Swiped = True
我們用driver.page_source
來獲取頁面元素,用變量Swiped
來標記是否滑動成功(此變量可用作while
循環的判斷條件)
參考
- 思路來源於stackoverflow:How to Swipe and Scroll to the Last in Appium
- Java同需求代碼參考:appium滑動到元素或滑動到頁面底部
- Appium Appium Python API 中文版 By-HZJ
- 注意:java和python的獲取頁面元素的方式不同,java是通過方法
driver.getPageSource()
,而python是通過獲取屬性值driver.page_source