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()