首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

selenium之等待页面(或者特定元素)加载完成

文章目录 需求: 1、显示等待(推荐) 2、隐式等待(也不错) 3、time.sleep(一般不推荐) 需求: 有时候,我们使用selenium用来获取一些元素时,需要等待页面将某些元素加载网站才能够获取我们需要的数据...1、显示等待(推荐) 显式等待是你在代码中定义等待一定条件发生后再进一步执行你的代码。 最糟糕的案例是使用time.sleep(),它将条件设置为等待一个确切的时间段。...需要的元素发现就会继续执行 from selenium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.support.ui...默认等待时间是0秒,一旦设置该值,隐式等待是设置该WebDriver的实例的生命周期。...()设置等待时间(一般不推荐这个,时间要么多等才会获取到我们需要的数据元素) from selenium import webdriver import time driver = webdriver.Chrome

5.3K20

selenium 的显示等待与隐式等待

现在很多的网页都采用了 Ajax 技术,那么采用一般的静态爬虫技术会出现抓取不到页面的元素。比如歌曲的主页会有评论数量,一般评论数量是动态加载的。...selenium的页面等待问题 ,动态加载的页面需要时间等待页面上的所有元素都渲染完成,如果在没有渲染完成之前我们就switch_to_或者是find_elements_by_,那么就可能出现元素定位困难而且会提高产生...selenium的页面等待有显示等待和隐式等待 隐式等待 比较简单,提供一个等待时间,单位为秒,则等这个时间过去在去做其他操作。...Selenium Python binding provides some convienence 提供了很多实用的方法。...= WebDriverWait(四个参数).until( EC.条件实现((By类定位方式, 定位值), message)) }finally{ // } 另外使用selenium会打开浏览器自动加载页面

3.6K40
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Selenium4+Python3系列(六) - Selenium的三种等待,强制等待、隐式等待、显式等待

    用一句通俗易懂的话就是:等待元素已被加载完全之后,再去定位该元素,就不会出现定位失败的报错了。 如何避免元素未加载出来而导致定位失败 ? 三种方式,强制等待、隐式等待、显式等待!...1、强制等待 就是sleep() ,也叫硬等待;缺点就是:如果等待时间过长,即使元素已被加载出来了,但还是要继续等,这样会导致整个脚本的执行上会浪费很多时间。...WebDriver 提供了三种隐性等待方法: implicitly_wait 识别对象时的超时时间。...,只是显示等待多了一个指定元素条件超时时间,在使用场景上,可以使用隐式等待来做一个全局的控制,例如设置全局隐式等待6秒; 如果某个控件比较特殊,需要更长的时间加载,比如十几秒或者更长,就可以使用显示等待对其进行单独处理...; 作者:西西卡~~[1] 参考资料 [1] selenium三种等待方式(重点:隐式等待和显示等待的使用场景和区别): https://blog.csdn.net/qq_36821826/article

    2.9K20

    Selenium常用的元素等待方法

    这时就需要考虑是否界面的切换,或者功能的跳转缓慢导致元素未加载完成就执行了操作,所以我们需要加上元素等待。WebDriver提供了几种类型的等待:强制等待、显式等待和隐式等待。...强制等待 设置等待最简单的方法就是强制等待,其实就是time.sleep()方法,不管它什么情况,让程序暂停运行一定时间,时间过后继续运行;缺点是不智能,如果设置的时间太短,元素还没有加载出来一样会报错...') time.sleep(3)#强制等待3秒; driver.quit() 隐式等待 WebDriver提供了implicitly_wait()方法来实现隐式等待。...如果设置了隐式等待,当元素定位时,如果元素可以正常定位,则继续执行;如果元素定位失败,将以轮询的方式不断地判断元素是否被定位到。直到超出设置时长(10秒)还没有定位到元素,则抛出异常。...() #设置等待Alert消失; WebDriverWait(driver,5,0.5).until_not(EC.alert_is_present()) print(u'弹出框Alert已经被关闭啦

    1.7K20

    Python selenium — 一定要会用selenium的等待,三种等待方式解读

    凹凸曼分分中内心一万只羊驼飞过,欺负哥速度慢,哥不跟你玩了,抛个异常撂挑子了。 那么怎么才能照顾到凹凸曼缓慢的加载速度呢?只有一个办法,那就是等喽。说到等,又有三种等法,且听博主一一道来: 1....() 这种叫强制等待,不管你浏览器是否加载完了,程序都得等待3秒,3秒一到,继续执行下面的代码,作为调试很有用,有时候也可以在代码里这样等待,不过不建议总用这种等待方式,太死板,严重影响程序执行速度。...) 隐形等待是设置了一个最长等待时间,如果在规定时间内网页加载完成,则执行下一步,否则一直等到时间截止,然后执行下一步。...注意这里有一个弊端,那就是程序会一直等待整个页面加载完成,也就是一般情况下你看到浏览器标签栏那个小圈不再转,才会执行下一步,但有时候页面想要的元素早就在加载完成了,但是因为个别js之类的东西特别慢,我仍得等到页面全部完成才能执行下一步...有办法,这就要看selenium提供的另一种等待方式——显性等待wait了。

    2K10

    如果,程序猿都集体消失了...

    2XXX年X月X日 当多元宇宙某颗蔚蓝星球的碳基生物们 还在想着用什么借口迟到时 一场灾难正在向他们袭来… 这一天,灭bà不小心打了一下响指, 这颗星球上的程序猿,消失了… 这场灾难首先席卷了全球的IT...为了挽救败局 两大行业决定弱弱联手, 一方面研制出 “育发格子帽”企图重振雄风, 另一方面启动“寻猿计划”, 寻找消失的程序猿。 ?...没有了程序猿的维护,工业器械纷纷停摆。 在经历数百年科技退化的痛苦之后, 人们又慢慢回到了你织布来我耕田的日子, “程序猿”这个词也逐渐遗失在历史长河中... ?...但,故事的发展并没有就此结束, 在一个伸手不见十指的夜晚, 几个少年郎打开了一座画着胖鹅的遗迹 ... ? 他们穿过阴暗的阶梯, 忽然! 发现了一面散发着光芒的墙壁。...注视着眼前光影交织的画面, 这几位少年的眼睛逐渐被喜悦充满, 仿佛是冥冥中的召唤, 他们不约而同 跟着画像喊出了那句失落已久的口号: ?

    61740

    爬虫之Selenium的等待及定位

    爬虫之Selenium的等待及定位 0.导语 1.selenium的三种等待方式 1.1 强制等待 1.2 隐性等待 1.3 显性等待 2. selenium之定位以及切换frame...浏览器的加载速度太慢。代码速度太快。这就造成了定位不准确的问题。...() 这种叫强制等待,不管浏览器是否加载完毕,程序都得等待3秒。...弊端:程序会一直等待整个页面加载完成,也就是一般情况下看到的浏览器标签栏小圈不转,才执行下一步。如果想等到我要的元素出来直接进入下一步,就需要用显示等待了。...显性等待表示程序每隔xx秒看一眼,如果条件成立了,则执行下一步,否则继续等待,直到超过了设置的最长时间,然后抛出TimeoutException。

    97630

    Selenium三种等待方式的使用

    Selenium 提供了三种等待方式来确保在继续执行代码之前,页面元素已经加载并可用。...这三种等待方式分别是: 显式等待(Explicit Waits) 隐式等待(Implicit Waits) 时间等待(Sleep) 下面是每种等待方式的代码示例: 显式等待(Explicit Waits...) 显式等待是指代码会等待某个特定条件发生后再继续执行,最常用的是等待某个元素出现。...时间等待(Sleep) 时间等待是最简单的等待方式,它只是让程序暂停执行一段时间。这种方式并不推荐用于 Web 测试,因为它不检查页面元素的状态,只是简单地让程序等待。...这种方式的问题在于,如果页面加载速度快于 10 秒,那么程序就会浪费时间等待;如果页面加载速度慢于 10 秒,那么程序可能会因为找不到元素而抛出异常。

    38310

    Selenium系列(六) - 详细解读强制等待、隐式等待、显式等待的区别和源码解读

    因为,目前大多数Web应用程序都是使用Ajax和Javascript开发的;每次加载一个网页,就会加载各种HTML标签、JS文件 但是,加载肯定有加载顺序,大型网站很难说一秒内就把所有东西加载出来,不仅如此...,我们才去定位该元素,就不会出现定位失败的现象了 如果我们不设置元素等待,那怎么避免 因元素未加载出来而定位失败 的情况出现呢?...(3) # 找到搜索框 inputElement = driver.find_element_by_id("kw") WebDriver提供了两种类型的等待:显式等待和隐式等待 隐式等待 什么是隐式等待...如果在规定时间内,整个网页都加载完成,则执行下一步,否则会抛出异常 隐式等待的弊端 可以把隐式等待当做全局变量,它影响整个页面,所以程序需要等待整个页面加载完成(就是浏览器标签栏那个小圈不再转)时,才会执行下一步...节省加载时间】 显式等待的代码 #!

    4.3K51

    消失的 100 万,炸了!

    转账这一动作在程序里会涉及到一系列的操作,假设我向你转账 100 万的过程是有下面这几个步骤组成的: 可以看到这个转账的过程涉及到了两次修改数据库的操作。...假设在执行第三步骤之后,服务器忽然掉电了,就会发生一个蛋疼的事情,我的账户扣了 100 万,但是钱并没有到你的账户上,也就是说这 100 万消失了!...,如果一个事务对姓名字段进行了修改,但是在事务提交后,表中的姓名变得非唯一性了,这就破坏了事务的一致性要求,这时数据库就要撤销该事务,返回初始化的状态。...前面我们提到,当多个事务并发执行时可能会遇到「脏读、不可重复读、幻读」的现象,这些现象会对事务的一致性产生不同程序的影响。...的事务是已经提交过的了,于是事务 A 就可以读取这条记录,这也就是所谓的读已提交机制。

    82090

    MIUI加载时的等待图标#有趣的加载icon-1

    最近突发奇想,想用html+css来做一些加载图标,计划做成一个系列吧。这第一集,就从MIUI开始,先来复刻一下MIUI的加载时的icon。...一、原效果 [MIUI原生加载icon] 为了这个效果我可是把手机分身给删了~(希望大家看过可以点一个小小的赞) 二、实现效果 [用HTML+CSS做出来的效果] 三、源码 如果直接用的话,改:root... 四、实现解析 相信各位大佬不用看源码都有思路了~...首先先在最低层先画一个圆形, 然后再弄一个比第一个圆小的圆放在第一步的圆上面(注意:这个圆的颜色和整个网页的背景色应当是相同的,且这个圆的应当比第一个圆要小), 其次再弄一个小小圆放在前两个圆的上面,作为小圆点...(自己把握大小的度,也可以参考我的来), 最后添加上动画旋转循环播放就好。

    96860

    您需要了解的有关Selenium等待方法

    在编写第一个Selenium程序时,您可能会遇到等待命令。但是,您知道Selenium到底 在等待什么吗?好吧,Selenium等待是执行测试用例所需的基本代码。...大多数Web应用程序都是使用Ajax和Javascript开发的。当浏览器加载页面时,我们要与之交互的元素可能会在不同的时间间隔加载。...一旦设置了时间,Web驱动程序将在抛出异常之前等待特定的时间。 语法:driver.manage()。timeouts()。...Selenium Web驱动程序中显式等待的条件 条件1 – 假设我有一个具有某些登录表单的网页,并且登录后需要花费很多时间来加载“帐户”页面或“主页”。...条件2 – 您正在使用旅行应用程序,并且已填写Web表单并单击了提交按钮。现在,您必须等待,直到不显示特定数据。

    1.7K20

    2018第一弹,小程序的两个入口“消失”了!

    1、小程序取消了置顶的选项 之前,我们对于重要的小程序都会使用两个功能,让他不被其他小程序挤下去,那就是将小程序标星或者置顶。...2、“搜一搜”中近期使用的小程序图标不见了 除此之外,之前让运营者封为超级入口的“搜一搜”页面,显示的最近使用过的4个小程序图标也不见了。...所以官方将一些雷同的入口下线,也无口厚非。真的是这样吗?为此,萤连长咨询了官方的小姐姐。...只有下拉栏就够了 萤连长:小姐姐,在不在 小姐姐:在呢 萤连长:刚刚我们发现小程序置顶功能木有了,是取消了吗? 小姐姐:对,已经下了 萤连长:另外,“搜一搜”里也没有最近使用的小程序图标了,也下了?...就像微信公众号后台一样,今天有用户发现,后台的编辑页面回复成以前窄版,两遍又有了留白。

    1.6K60

    selenium爬取异步加载的网站

    为了便利化使用selenium驱动浏览器进行操作,遇到一个网页,大部分内容都是通过xhr请求后再通过前端js处理显示, 带来的一个问题就是,采用显示等待无法准确的定位到需要的节点。...参考链接: Selenium处理异步加载请求获取XHR消息体的2种方法 谷歌浏览器配置参数 selenium3.0不用代理的情况下,获取异步请求的数据 Selenium启动Chrome时配置选项详解 import...json from selenium import webdriver from selenium.webdriver import DesiredCapabilities import os,time...option.add_argument("--disable-extensions") option.add_argument('--disable-infobars') # 禁用浏览器正在被自动化程序控制的提示...# 等待直到某个xhr出现,返回整个异步情况吧 def wait_until_xhr_do(url='',limit = 10): tick = 0 while tick < limit

    1.4K20

    selenium&appium中的三种等待方式---基于python

    我们在实际使用selenium或者appium时,等待下个等待定位的元素出现,特别是web端加载的过程,都需要用到等待,而等待方式的设置是保证脚本稳定有效运行的一个非常重要的手段,在selenium中...(appium通用)常用的等待分为显示等待WebDriverWait()、隐式等待implicitly_wait()、强制等待sleep()三种,下面我们就分别介绍一下这三种等待的区别 在前面的博文中简单介绍了...sleep(): 强制等待,设置固定休眠时间。 python 的 time 包提供了休眠方法 sleep() , 导入 time 包后就可以使用 sleep(),进行脚本的执行过程进行休眠。...默认为0.5秒,即检测元素是否存在的频率 ignored_exceptions, 超时后的异常信息,默认情况下抛driver, webdriver的驱动程序,如(IE、FireFox、chrome、safari...="),调用该方法提供的驱动程序做为一个参数,直到返回值不为False until_not(method,message="),调用该方法提供的驱动程序做为一个参数,直到返回值为False 实例: from

    1.6K20
    领券