在 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
方法允许你设置一个超时时间,以防异步操作无法在规定时间内完成。