1、什么是等待activity出現
在啟動APP的時候,要配置包名和啟動名,一個啟動名對應一個頁面,也就是啟動APP然后打開某一個頁面。換句話說,在等待這個頁面出現,也就是等待activity
出現。(activity
相當於啟動名)
如果不等待頁面完全展示,就直接做下一步點擊操作,經常會報錯,於是我們會在啟動完成的時候加sleep
。(同Web自動化類似)
那么問題來了,這個sleep
時間到底設置多少合適呢?
設置長了,就浪費時間,設置短了,就會找不到元素報錯了。
這個時候我們可以用wait_activity
的語法,等到你想點擊的頁面activity
出現了,再點擊,可以有效的節省時間。
(同Selenium中的顯示等待和隱式等待相關內容)
2、wait_activity()方法
wait_activity()
方法是Android特有的,入下所示:
wait_activity(self, activity, timeout, interval=1)
# 返回的True 或 False :
說明:
等待指定的activity
出現直到超時,interval
為掃描間隔1秒,即每隔幾秒獲取一次當前的activity
。
Agrs參數:
activity
:需等待的目標activity
(相當於啟動名,就填寫啟動名)timeout
:最大超時時間,單位是s 。interval
:循環查詢時間 。
調用方式:driver.wait_activity(‘.activity.xxx’,5,2)
3、獲取當前頁面的activity方法
獲取當前頁面的activity
方法為:current_activity
。
調用方式:driver.wait_activity(".Settings$DisplaySettingsActivity", 10 , 2 )
4、綜合練習
"""
1.學習目標
熟悉等待activity出現的方法
2.操作步驟
2.1 獲取當前頁面的activity
driver.current_activity
2.2 等待activity出現
driver.wait_activity(activity,最大等待時間,interval=1)
參數說明:
activity:需等待的目標 activity (相當於啟動名,就填寫啟動名)
timeout:最大超時時間,單位是s
interval:循環查詢時間
3.需求
操作設置app,實現上面方法的使用。
"""
# 1.導入appium
import time
from appium import webdriver
# 2.添加啟動參數
desired_caps = {
"platformName": "Android", # 系統名稱
"platformVersion": "7.1.2", # 系統版本
"deviceName": "127.0.0.1:21503", # 設備名稱
"appPackage": "com.android.settings", # APP包名
"appActivity": ".Settings" # APP啟動名
}
# 3.啟動APP
driver = webdriver.Remote("http://127.0.0.1:4723/wd/hub", desired_caps)
# 4.操作APP
# 4.1 設置app點擊顯示按鈕
view = driver.find_element_by_android_uiautomator('new UiSelector().text("顯示")')
view.click()
# 4.2 獲取顯示頁面的activity
# activity = driver.current_activity
# print(activity)
# 注意:
# 這步能夠獲取到顯示頁面的activity,
# 證明顯示頁面的activity已經出現了。
# 在這里我們就先獲取到打印出來查看一下。
# 也方便我們下一步.wait_activity()方法的使用。
# 在實際的代碼中我們可以注釋掉,不執行。
# 4.3 等待顯示頁面activity出現
driver.wait_activity(".Settings$DisplaySettingsActivity", 10)
# 4.4 點擊顯示頁面的壁紙按鈕
driver.find_element_by_android_uiautomator('new UiSelector().text("顯示大小")').click()
# 5.關閉APP
time.sleep(5)
driver.quit()