python Selenium等待元素出现的具体方法

有一个 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

到此这篇关于python Selenium等待元素出现的具体方法的文章就介绍到这了,更多相关python Selenium如何等待元素出现内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • 用Python selenium实现淘宝抢单机器人

    一.痛点 各大电商在一些特定的日子都会开启促销活动,如618.双十一等,有时还得盯着时间抢限量发售的商品,但你的成功率高吗?是否经常会遇到App一直加载,刷新后发现商品被一扫而光了?事实是,很多和你竞争抢购商品的对手比你的手更快更准,因为他们很多都是能精准执行命令的机器人. 气不气?没关系这篇文章将手把手教你零基础建设一个自己的机器人,帮你在设定好的时间自动下单,再也不用为抢不到心爱的宝贝烦恼了! 二.准备工作 在建设机器人之前,请确保你准备好了如下工具: 一台电脑:不需要多快多新,能用就行 C

  • Python使用Selenium自动进行百度搜索的实现

    目录 安装 Selenium 写代码 点位网页元素 我们今天介绍一个非常适合新手的python自动化小项目,项目虽小,但是五脏俱全.它是一个自动化操作网页浏览器的小应用:打开浏览器,进入百度网页,搜索关键词,最后把搜索结果保存到一个文件里.这个例子非常适合新手学习Python网络自动化,不仅能够了解如何使用Selenium,而且还能知道一些超级好用的小工具. 当然有人把操作网页,然后把网页的关键内容保存下来的应用一律称作网络爬虫,好吧,如果你想这么爬取内容,随你.但是,我更愿意称它为网络机器人.

  • python+opencv+selenium自动化登录邮箱并解决滑动验证的问题

    前言 大家做自动化登录时可能都遇到过滑块验证码需要手动验证的问题,这次我们就来解决他 如下:    在我们做自动化登录时,总会遇到各种奇奇怪怪的验证码,滑块验证码就是其中最常见的一种.若我们的程序自动输入账号密码之后,还需要我们人工去滑动验证码那还能称得上是自动化吗? 那么先给大家说一下我的'解题步骤'. 1.使用selenium打开邮箱首页. 2.定位到账号密码框,键入账号密码. 3.获取验证图片,使用opencv处理返回滑块应拖动的距离. 4.创建鼠标事件,模拟拖动滑块完成验证.   需要解

  • Python中Selenium对Cookie的操作方法

    1.Cookie介绍 HTTP协议是无状态的协议.一旦数据交换完毕,客户端与服务器端的连接就会关闭,再次交换数据需要建立新的连接,这就意味着服务器无法从连接上跟踪会话.也就是说即使第一次和服务器连接后并且登录成功后,第二次请求服务器依然不能知道当前请求是哪个用户.举个例子:用户A购买了一件商品放入购物车内,当再次购买商品时,服务器已经无法判断该购买行为是属于用户A的会话,还是用户B的会话了.要跟踪该会话,必须引入一种机制. 什么是一次会话: 用户打开浏览器访问某个网站, 在这个网站上浏览任意页面

  • python Selenium等待元素出现的具体方法

    有一个 Selenium 脚本(Python),它点击回复按钮使anonemail类出现.anonemail 类出现的时间各不相同.因此,我必须使用 sleep 直到元素出现. 我想等到课程出现而不是使用睡眠.我听说过等待命令,但我不知道如何使用它们. 这是我迄今为止所拥有的: browser.find_element_by_css_selector(".reply-button").click() sleep(5) email=browser.find_element_by_css_

  • Python Selenium 设置元素等待的三种方式

    Selenium 设置元素等待的三种方式 1. sleep 强制等待     2. implicitly_wait() 隐性等待     3. WebDriverWait()显示等待 三种方式的优缺点 1. sleep 强制等待 from selenium import webdriver from time import sleep driver = webdriver.Chrome() sleep(2) #设置等待2秒钟 driver.get('http://www.baidu.com')

  • Python Selenium自动化获取页面信息的方法

    1.获取页面title title:获取当前页面的标题显示的字段 from selenium import webdriver import time browser = webdriver.Chrome() browser.get('https://www.baidu.com') #打印网页标题 print(browser.title) #输出内容:百度一下,你就知道 2.获取页面URL current_url:获取当前页面的URL from selenium import webdriver

  • Python中列表元素转为数字的方法分析

    本文实例讲述了Python中列表元素转为数字的方法.分享给大家供大家参考,具体如下: 有一个数字字符的列表: numbers = ['1', '5', '10', '8'] 想要把每个元素转换为数字: numbers = [1, 5, 10, 8] 用一个循环来解决: new_numbers = []; for n in numbers: new_numbers.append(int(n)); numbers = new_numbers; 有没有更简单的语句可以做到呢? 1. numbers =

  • Python 删除List元素的三种方法remove、pop、del

    1.remove: 删除单个元素,删除首个符合条件的元素,按值删除,从左向右依次删除符合条件的值 举例说明: >>> str=[1,2,3,4,5,2,6] >>> str.remove(2) >>> str [1, 3, 4, 5, 2, 6] 2.pop: 删除单个或多个元素,按位删除(根据索引删除) >>> str=[0,1,2,3,4,5,6] >>> str.pop(1) #pop删除时会返回被删除的元素

  • Python统计列表元素出现次数的方法示例

    1. 引言 在使用Python的时候,通常会出现如下场景: array = [1, 2, 3, 3, 2, 1, 0, 2] 获取array中元素的出现次数 比如,上述列表中:0出现了1次,1出现了2次,2出现了3次,3出现了2次. 本文阐述了Python获取元素出现次数的几种方法.点击获取完整代码. 2. 方法 获取元素出现次数的方法较多,这里我提出如下5个方法,谨供参考.下面的代码,传入的参数均为 array = [1, 2, 3, 3, 2, 1, 0, 2] 2.1 Counter方法

  • python selenium保存图片最好的两种方法

    目录 1. 通过抓包 1-1.通过拦截器 1-2. 请求后在所有请求中获取 2. 通过canvas 总结 selenium爬取页面时经常遇到要保存图片的需求,通常的做法是获取链接后用 requests 下载,但这种方法脱离了selenium环境,如遇到有校验的情况还需要绕过校验. 下面介绍两种直接通过selenium保存图片的方法: 1. 通过抓包 selenium-wire 是selenium扩展,它可以对所有请求抓包,同时还可以修改请求头,请求body,请求返回值等,功能非常强大. sele

  • Python中无限元素列表的实现方法

    本文实例讲述了Python怎么实现无限元素列表的方法,具体实现可使用Yield来完成. 下面所述的2段实例代码通过Python Yield 生成器实现了简单的无限元素列表. 1.递增无限列表 具体代码如下: def increment(): i = 0 while True: yield i i += 1 for j in increment(): print i if (j > 10) : break 2.斐波那契无限列表 具体代码如下: def fibonacci(): i = j = 1

  • python删除列表元素的三种方法(remove,pop,del)

    remove 删除单个元素,删除首个符合条件的元素,按值删除,返回值为空 List_remove = [1, 2, 2, 2, 3, 4] print(List_remove.remove(2)) print("after remove", List_remove) # None # after remove [1, 2, 2, 3, 4] -------------------------------------------------------------------------

  • Python爬虫之Selenium设置元素等待的方法

    一.显式等待 WebDriverWait类是由WebDirver 提供的等待方法.在设置时间内,默认每隔一段时间检测一次当前页面元素是否存在,如果超过设置时间检测不到则抛出异常(TimeoutException) from selenium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.support.ui import WebDriverWait from seleniu

随机推荐