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,等待元素
0
投稿

猜你喜欢

  • firefox 2正则表达式

    2008-08-25 19:15:00
  • python3 scrapy框架的执行流程

    2022-04-12 08:53:35
  • 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
  • php实现的验证码文件类实例

    2023-08-17 17:54:52
  • 基于JavaScript实现单选框下拉菜单添加文件效果

    2023-07-15 08:46:33
  • HTML5硝烟弥漫

    2009-07-06 14:44:00
  • 基于python解线性矩阵方程(numpy中的matrix类)

    2023-11-03 06:54:12
  • wxPython学习之主框架实例

    2023-11-10 00:41:56
  • 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
  • asp之家 网络编程 m.aspxhome.com