Appium等待元素时间过长

最近做appium自动化,但是发现查询元素的时间过长,元素已经显示很久了,依旧没有点击的工作。修改了几次,等待元素显示的方法,效果依旧不明显。

在网上查找的方法,试的都不太靠谱。直到遇到链接:https://blog.youkuaiyun.com/qq744746842/article/details/115793956 。亲测好用。

https://github.com/appium/appium-uiautomator2-driver#settings-api 根据api添加idle时长,uiautomator2在执行过程中去判断设备是否处于空闲的状态,如果没有的话,他会等待10s的时间,然后才真正的执行对应的操作。
在这里插入图片描述

### 关于Appium中的元素等待方法及最佳实践 #### 隐式等待 隐式等待会告诉 WebDriver 查找元素时轮询 DOM 一段时间。默认设置为0秒,一旦设置了这个时间,它将在整个WebDriver生命周期内有效。 ```python driver.implicitly_wait(10) # seconds ``` 这种方式简单易用但是不够灵活,因为无论何时都会强制等待指定的时间长度即使页面上的元素早已加载完毕[^1]。 #### 显式等待 显式等待允许代码在一个特定条件下暂停执行直到该条件成立或超时发生。这提供了更精确控制的能力,并且可以减少不必要的延迟。常见的做法是使用`WebDriverWait`配合`expected_conditions`模块来定义具体的等待逻辑: ```python from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC from selenium.webdriver.common.by import By element = WebDriverWait(driver, 10).until( EC.presence_of_element_located((By.ID, "myDynamicElement")) ) ``` 上述例子展示了如何配置最长等待时间为10秒并持续尝试定位ID为`"myDynamicElement"`的元素直至找到为止;如果超过设定时限仍未发现目标,则抛出异常[^2]。 对于更加复杂的场景比如动态变化的内容或者动画效果结束后的操作,还可以自定义预期条件函数来进行处理。 #### Fluent Wait (流畅等待) Fluent Wait 提供了一种更为精细的方式来管理等待行为,能够更好地适应不同的网络状况和应用响应速度差异较大的情况。可以通过调整polling interval(轮询间隔)以及忽略某些类型的异常来自定义等待策略: ```python wait = WebDriverWait(driver, timeout=30, poll_frequency=5, ignored_exceptions=[NoSuchElementException]) element = wait.until(EC.element_to_be_clickable((By.XPATH,"//div"))) ``` 这段代码表示最大等待30秒,每隔5秒检查一次是否存在可点击状态下的XPath路径匹配项,期间遇到找不到元素的情况不会立即终止而是继续重试[^3]。 ---
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值