问题描述:使用python+appium的方式做移动端测试时,对于一些有进度条或者播放条的页面,获取页面元素时非常缓慢,都会在10s以上,于是会导致各种各样的问题。
具体原因没找到,推测可能是UiAutomator2自身的逻辑
解决方法:
1. 使用坐标定位元素 已下载为例,在开始下载前获取你想要元素的坐标轴,这时即使下载开始后,仍能通过坐标轴来对元素进行点击
from appium.webdriver.common.touch_action import TouchAction
'''
balabala
'''
element = driver.find_element_by_id("download")
x_position = element.location['x'] + element.size['width'] / 2
y_position = element.location['y'] + element.size['height'] / 2
element.click()
time.sleep(5)
TouchAction(driver).tap(x=x_position , y=y_position ).perform()
这种方式适合页面长宽比较固定且只需要点击操作的情况
2. 设置waitForIdleTimeout appium支持的Settings 官网有相关的介绍,可以设置idel状态的超时时间
- 在driver的desired_caps中进行初始化,将在整个driver中起作用
desired_caps['settings[waitForIdleTimeout]'] = 100
- 使用driver.update_settings动态设置
driver.update_settings({'waitForIdleTimeout': 100})
设置完后再看执行时间,基本在1s以内,也能正确点击元素:
|