selenium显示等待和隐式等待
程序员文章站
2022-03-24 08:46:22
...
selenium在等待元素时有三种方式:
1.隐式等待:
等待一个元素被发现,或一个命令完成,超出了设置时间则抛出异常,此为全局变量,是针对Driver 每次执行命令的 最长执行时间也可以理解为超时时间
2.显示等待:
明确的要等到某个元素的出现或者是某个元素的可点击等条件,每隔poll_frequency=0.5(默认值)查找一下元素,等不到,就一直等,除非在规定的时间timeout之内都没找到,那么就跳出Exception。
3.线程等待:
Notes:若同时设置了隐式等待和显示等待,则以隐式等待为第一优先级,也就是说,若隐式等待时间大于显示等待,则执行显示等待时,显示等待时间设置无效,因为driver若找不到元素,会先等待隐式等待的时间。
1.隐式等待:
driver.implicitly_wait(30)
等待一个元素被发现,或一个命令完成,超出了设置时间则抛出异常,此为全局变量,是针对Driver 每次执行命令的 最长执行时间也可以理解为超时时间
2.显示等待:
from selenium.webdriver.support.ui import WebDriverWait #WebDriverWait(driver, timeout, poll_frequency=0.5, ignored_exceptions=None) wait = WebDriverWait(context.driver, 30) is_disappeared = wait.until_not(lambda x:x.find_element(by=how, value=what).is_displayed()) element = wait.until(lambda x:x.find_elements_by_xpath(locatorString))
明确的要等到某个元素的出现或者是某个元素的可点击等条件,每隔poll_frequency=0.5(默认值)查找一下元素,等不到,就一直等,除非在规定的时间timeout之内都没找到,那么就跳出Exception。
3.线程等待:
import time time.sleep(2)
Notes:若同时设置了隐式等待和显示等待,则以隐式等待为第一优先级,也就是说,若隐式等待时间大于显示等待,则执行显示等待时,显示等待时间设置无效,因为driver若找不到元素,会先等待隐式等待的时间。
推荐阅读
-
OracleDB隐式和显示数据类型转换讲解
-
selenium爬虫时常常会遇到stale element reference: element is not attached to the page document加了显式等待感觉没什么用
-
Selenium之操作浏览器、元素等待、窗体切换和弹窗处理
-
Python显示等待、隐式等待和强制等待的区别
-
[bug] 验证selenium的显式和隐式等待而发现的一个低级错误
-
Redis实现分布式锁和等待序列的方法示例
-
C#的隐式和显示类型转换
-
Selenium(七):截图显示等待
-
OracleDB隐式和显示数据类型转换讲解
-
JavaScript中声明全局变量的三种方式(包括显示和隐式)