在 Android UIAutomator2 中,處理異步操作的方法是使用 UiDevice
類中的 waitFor
方法
以下是一個簡單的示例:
import time
from appium import webdriver
from appium.webdriver.common.by import By
from appium.webdriver.support.ui import WebDriverWait
from appium.webdriver.support import expected_conditions as EC
# 配置 Appium 驅動
desired_caps = {
"platformName": "Android",
"deviceName": "YourDeviceName",
"appPackage": "com.example.app",
"appActivity": "com.example.app.MainActivity",
}
driver = webdriver.Remote("http://localhost:4723/wd/hub", desired_caps)
# 執行異步操作,例如點擊一個按鈕
button = WebDriverWait(driver, 10).until(
EC.presence_of_element_located((By.ID, "com.example.app:id/async_button"))
)
button.click()
# 等待異步操作完成,例如等待一個文本視圖更新
text_view = WebDriverWait(driver, 10).until(
EC.presence_of_element_located((By.ID, "com.example.app:id/updated_text"))
)
# 獲取文本視圖的文本內容
updated_text = text_view.text
print("異步操作已完成,文本內容為:", updated_text)
# 關閉驅動
driver.quit()
在這個示例中,我們首先使用 WebDriverWait
等待異步操作完成。然后,我們獲取更新后的文本視圖并打印其內容。請注意,waitFor
方法允許你設置一個超時時間,以防異步操作無法在規定時間內完成。