显式等待机制和隐式等待机制
等待类型:
全局隐式等待:每隔0.5秒查找一次,在服务端的等待,在程序运行周期内生效
显式等待:在客户端的等待,只是在写了等待语句的地方才生效
隐式等待只能校验你的元素是否出现,但是无法校验可点击等属性
查看WebDriver源码可以看到
后面两个参数可以默认不填,poll_frequency=POLL_FREQUENCY第一个是间隔刷新时间,默认为0.5s,ignored_exceptions第二个是报错信息,默认为查找不到元素,nosuch element
until源码分析:其中判断元素是否可见,是否可点击等是用的比较多的
def until(self, method, message='’):
"""Calls the method provided with the driver as an argument until the \
return value is not False."""
screen = None
stacktrace = None
end_time = time.time() + self._timeout#时间,每隔多长时间进行一次调用
while True:
try:
value = method(self._driver)#mathod就是定位元素的方法,然后不停的去查找这个元素
if value:
return value
except self._ignored_exceptions as exc:
screen = getattr(exc, 'screen', None)
stacktrace = getattr(exc, 'stacktrace', None)
time.sleep(self._poll)
if time.time() > end_time:
break
raise TimeoutException(message, screen, stacktrace)
mobileBy源码分析,继承了selenium中By,加了手机端的一些by的一些元素的属性
使用lambda表达式
WebDriverWait(driver,time).until(lambda x:x.find_element_by_id("someId"))
返回一个元素
浙公网安备 33010602011771号