『與善仁』Appium基礎 — 24、等待activity出現
阿新 • • 發佈:2021-12-12
目錄
的語法,等到你想點選的頁面
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()