在iOS上,Appium提供了一种等待元素不再起作用的解决方法。以下是一个包含代码示例的解决方案:
from appium import webdriver
from appium.webdriver.common.mobileby import MobileBy
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.common.exceptions import TimeoutException
# 设置 Appium 的 desired capabilities
desired_caps = {
"platformName": "iOS",
"platformVersion": "13.5",
"deviceName": "iPhone 11",
"app": "path/to/your/app"
}
# 连接 Appium 服务器
driver = webdriver.Remote("http://localhost:4723/wd/hub", desired_caps)
# 使用显式等待来等待元素不再起作用
try:
# 等待元素出现
element = WebDriverWait(driver, 10).until(
EC.presence_of_element_located((MobileBy.ID, "your_element_id"))
)
# 等待元素不再起作用
WebDriverWait(driver, 10).until_not(
EC.element_to_be_clickable((MobileBy.ID, "your_element_id"))
)
# 其他操作
# ...
except TimeoutException:
print("元素不再起作用")
# 关闭 Appium 连接
driver.quit()
在上面的示例中,我们使用了WebDriverWait
类来设置等待时间,并使用expected_conditions
类中的条件来指定等待条件。在这个例子中,我们等待元素首先出现,然后等待元素不再是可点击状态。
如果元素在超时时间内仍然是可点击状态,那么TimeoutException
异常将被抛出,我们可以在异常处理中处理这种情况。