python Selenium等待元素出现的具体方法
作者:小妮浅浅 时间:2022-02-22 02:47:20
有一个 Selenium 脚本(Python),它点击回复按钮使anonemail类出现。anonemail 类出现的时间各不相同。因此,我必须使用 sleep 直到元素出现。
我想等到课程出现而不是使用睡眠。我听说过等待命令,但我不知道如何使用它们。
这是我迄今为止所拥有的:
browser.find_element_by_css_selector(".reply-button").click()
sleep(5)
email=browser.find_element_by_css_selector(".anonemail").get_attribute("value")
解决:
1、如果验证任何元素的存在,检查元素期望
诱导WebDriverWait设置expected_conditions作为presence_of_element_located()检查元素是否存在于页面的 DOM 上的期望。这并不一定意味着该元素是可见的。所以有效的代码行将是:
WebDriverWait(browser, 20).until(EC.presence_of_element_located((By.CSS_SELECTOR, ".reply-button"))).click()
2、如果提取任何元素的任何属性,检查元素可见的期望
需要诱导WebDriverWait设置。expected_conditions作为visibility_of_element_located(locator)检查元素是否存在于页面的 DOM 上并且可见的期望。可见性意味着元素不仅被显示,而且高度和宽度都大于 0。所以在你的用例中,代码行将是:
email = WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.CSS_SELECTOR, "element_css"))).get_attribute("value")
3、如果用例要click()在任何元素上调用,检查元素是否可见并启用
要诱导WebDriverWait设置expected_conditions作为element_to_be_clickable()检查元素是否可见并启用以便您可以单击它的期望。所以在你的用例中,代码行将是:
WebDriverWait(browser, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, ".reply-button"))).click()
实例扩展:
from selenium.common.exceptions import TimeoutException
from selenium.webdriver.common.by import By
import selenium.webdriver.support.expected_conditions as EC
import selenium.webdriver.support.ui as ui
# 一直等待某元素可见,默认超时10秒
def is_visible(locator, timeout=10):
try:
ui.WebDriverWait(driver, timeout).until(EC.visibility_of_element_located((By.XPATH, locator)))
return True
except TimeoutException:
return False
# 一直等待某个元素消失,默认超时10秒
def is_not_visible(locator, timeout=10):
try:
ui.WebDriverWait(driver, timeout).until_not(EC.visibility_of_element_located((By.XPATH, locator)))
return True
except TimeoutException:
return False
来源:https://www.py.cn/jishu/jichu/32546.html
标签:python,Selenium,等待元素
![](/images/zang.png)
![](/images/jiucuo.png)
猜你喜欢
firefox 2正则表达式
2008-08-25 19:15:00
python3 scrapy框架的执行流程
2022-04-12 08:53:35
![](https://img.aspxhome.com/file/2023/1/66361_0s.png)
asp程序定义变量比不定义变量速度快一倍
2012-12-04 20:06:32
如何拒绝同一张表单被多次提交?
2009-12-16 18:46:00
一个修改Oracle数据库用户密码的小诀窍
2009-09-30 15:29:00
一文搞懂Python中的进程,线程和协程
2023-06-13 17:26:41
![](https://img.aspxhome.com/file/2023/9/65069_0s.png)
php实现的验证码文件类实例
2023-08-17 17:54:52
基于JavaScript实现单选框下拉菜单添加文件效果
2023-07-15 08:46:33
![](https://img.aspxhome.com/file/2023/5/55955_0s.png)
HTML5硝烟弥漫
2009-07-06 14:44:00
基于python解线性矩阵方程(numpy中的matrix类)
2023-11-03 06:54:12
wxPython学习之主框架实例
2023-11-10 00:41:56
![](https://img.aspxhome.com/file/2023/4/63554_0s.jpg)
JSP学生信息管理系统设计
2023-07-13 03:37:30
ASP+JavaScript的完整的日历使用
2008-10-11 12:16:00
Access为后台数据库的网站统计系统
2008-11-16 17:34:00
asp函数判断服务器是否安装了某种组件
2008-10-11 14:45:00
python中heapq堆排算法的实现
2022-10-13 23:11:40
关于reflow
2007-09-23 13:30:00
phpstudy apache开启ssi使用详解
2023-05-25 08:04:44
跟老齐学Python之数据类型总结
2023-05-30 07:15:07
MySQL百万级高并发网站实战攻略
2009-03-25 15:49:00