selenium的find_elements非常慢的解决办法

这篇具有很好参考价值的文章主要介绍了selenium的find_elements非常慢的解决办法。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

在使用find_elements的过程中发现,有时候比较快,有时候非常慢,慢的时候可以达到几分钟,实在不能忍受,必须要解决。

后来看到国外一片文章(抱歉地址忘记了)说,find_elements慢的原因是页面上有很多ajax的请求,默认模式下会等待这些ajax的加载完成后才执行,所以阻塞了find_elements的执行,如果ajax一直在加载中就会一直等待直到超时。所以要解决这个问题的办法很简单,强制修改默认等待时间即可,像下面这样:

    driver.implicitly_wait(180)
    driver.get(url)
...
    driver.implicitly_wait(0.1)
    elements=driver.find_elements(By.XPATH, xpath)
...

实际上find_elements不需要等待ajax的加载完成,等待时间甚至可以设置为0,我还是温柔一点设置为0.1。

记得有文章说设置pageLoadStrategy为eager也可以解决这个问题,但这个毕竟需要修改driver的options,不能中途修改,不够灵活放弃。

另外selenium的find_elements本来也比较慢,如果要追求解析速度,还可以使用第三方的xpath解析器,比如说lxml,但这些第三方解析器不能判断元素是否可见等等和浏览器相关的判断,使用有局限,作为纯粹的xpath搜索还是不错的。(我原来就使用lxml,因为要判断元素是否可见,只好放弃)文章来源地址https://www.toymoban.com/news/detail-770408.html

到了这里,关于selenium的find_elements非常慢的解决办法的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • selenium之find_elements的妙用

    最近因为工作上的需要(我不是测试,不是前端,也不是测试),任务就是下载大量的文件,其中遇到一个页面有多个需要下载的对象,因为是刚入门selenium,很多功能还在摸索。 1.找到所有满足条件的页面元素 driver.find_elements(By.XPATH, 路径) 一般是需要提取所有满足条件的元

    2024年02月11日
    浏览(38)
  • Python selenium find_element()示例详解

    selenium有以下定位方式: 1 2 3 4 5 6 7 8 driver.find_element_by_id(‘ id \\\') driver.find_element_by_xpath( \\\'xpath\\\' ) driver.find_element_by_link_text( \\\'link_text\\\' ) driver.find_element_by_partial_link_text( \\\'partial_link_text\\\' ) driver.find_element_by_name( \\\'name\\\' ) driver.find_element_by_tag_name( \\\'tag_name\\\' ) driver.find_element_by_class_name( \\\'cla

    2024年02月02日
    浏览(49)
  • python.使用selenium新定位方法 driver.find_element(By.‘方式‘, “xxx“) 和 解决复制粘贴不生效也不报错的坑

    最近在家歇着没事做就简单复习一下,然后就踩了两个小坑 新定位方式示例代码如下:

    2024年02月12日
    浏览(61)
  • web自动化系列-selenium find_elements定位方法详解(八)

    接上文 : web自动化测试系列-selenium css_selector定位方法详解(七)-CSDN博客 前面已经介绍了8种定位方法 ,大多数情况下我们都会优先使用这8种方法 。 但有的时候在你选择定位元素时 ,会出现多个同样的定位属性和值 。而且你能选择定位也就这一种情况 。这种情况你只能使用

    2024年04月16日
    浏览(38)
  • selenium driver.find_element 报错 invalid argument: invalid locator

    selenium.common.exceptions.InvalidArgumentException: Message: invalid argument: invalid locator 报错信息:invalid argument: invalid locator 提示的是 定位器 locator 的 参数 argument 是无效的, 为什么无效,是我代码写错了, driver.find_element( \\\'//*[@id=\\\"staffid\\\' ).send_keys(‘handsome’) 定位器 locator 少了最重要的参

    2024年01月25日
    浏览(41)
  • Python爬虫(1)一次性搞定Selenium(新版)8种find_element元素定位方式

    selenium中有8种不错的元素定位方式,每个方式和应用场景都不一样,需要根据自己的使用情况来进行修改 目前selenium已经出现了新的版本的定位方式,虽然说定位语法不一样,但是万变不离其宗。 用旧版的定位语法就会出现这个删除线,你用他来进行爬虫的时候运行时就会提

    2024年02月03日
    浏览(56)
  • Selenium中find_element_by_id无法使用,改用driver.find_element(by=By.ID, value=None)

    在自学selenium的时候,可能教学视频太老了,WebDriver已经没有find_element_by_id这个方法了。 执行结果如下: bug翻译如下: AttributeError:“WebDriver”对象没有属性“find_element_by_id” 通过自动补齐代码发现,WebDriver里面还是有find_element这个方法的。 通过按住Ctrl,点击该方法,我们

    2024年02月11日
    浏览(46)
  • selenium模块中的find_element_by_id方法无法使用,改用driver.find_element(by=By.ID, value=None)

    在学习selenium模块的时候,由于是在白嫖的,往年教程 点击运行后报错 AttributeError: \\\'WebDriver\\\' object has no attribute \\\'find_element_by_id\\\' \\\'WebDriver\\\'没有find_element_by_id这个方法 搜索出来的基本都是就这个方法进行讲解 在尝试方法中发现,finde_element这个方法有 点开配置文件,发现通过find换了

    2024年02月11日
    浏览(46)
  • selenium4.3.0模块中的find_element_by_id方法无法使用,改用driver.find_element(by=By.ID, value=None)

    在selenium最新版本4.3.0中, 使用之前的find_element_by_id会报错 Ctrl+点击find_element,查看代码 最新版本,改为了driver.find_element(By.ID, ‘foo’) 在自己的代码中修改,发现By会被pycharm下划线提示报错,再次查看代码 发现需要import By 再次修改自己的代码,运行通过

    2024年02月13日
    浏览(46)
  • driver.find_element()用法

    driver.find_element()用于在Web页面中定位单个元素。它是Selenium WebDriver库中的 一种方法。该方法接受一个定位器(locator)和一个值作为参数,用于指定要查找的元素 位置。下面是具体的用法和一些例子: 通过ID定位元素: driver.find_element(By.ID, “element_id”) 例如:driver.find_eleme

    2024年02月05日
    浏览(51)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包