selenium-webdriver+nodejs等待页面加载完毕后执行后续动作

这篇具有很好参考价值的文章主要介绍了selenium-webdriver+nodejs等待页面加载完毕后执行后续动作。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

项目场景:

最近在用selenium-webdriver+nodejs为自己的项目写一个自动登录、自动跳转页面的自动化工具,减少开发环境中切换不同账号时,频繁操作的目的。(特殊环境,浏览器不允许打开密码记录功能)

网络上大部分是python或者java的项目,作为前端,当然要选择nodejs。


问题描述

例如:登录后,点击某个页面时,报错找不到选择器元素。
报错信息如下:

UnhandledPromiseRejectionWarning: NoSuchElementError: no such element: Unable to locate element: {"method":"css selector","selector":"[title="xxx"]"}

原因分析:

分析原因,大概率是点击登录后,页面还没有加载完毕,所以简单地调用属性选择器无法选中相应属性。


解决方案:

这里先分享一下2022年11月2日下载的selenium中,css属性选择器写法,与网上一些老版本略有不同:

        let dangerWorkTab = driver.findElement(By.css('[title="危险作业"]'))

查阅官网可知,nodejs版等待语法demo为:

let ele = await driver.wait(until.elementLocated(By.css('p')),10000);
let foo = await ele.getText();
assert(foo == "Hello from JavaScript");

参考官网,改造自己的选择器:

const {Builder, By,until} = require('selenium-webdriver') //别忘了吧untile工具引入进来
代码省略……

 let dangerWorkTab =await driver.wait(until.elementLocated(By.css('[title="危险作业"]')),10000);
 dangerWorkTab.click()

这里的时间参数’10000’应该是设置的最长超出时间,因为项目中的动作是连续的。文章来源地址https://www.toymoban.com/news/detail-739076.html

到了这里,关于selenium-webdriver+nodejs等待页面加载完毕后执行后续动作的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • 解决Selenium WebDriver 加载页面时出现浏览器闪退

      如果不匹配的话,可以去以下网址下载https://developer.microsoft.com/en-us/microsoft-edge/tools/webdriver/  如果还是不能解决selenium闪退,可以通过以下几行代码来解决此问题。

    2024年02月15日
    浏览(91)
  • 当使用Selenium WebDriver 加载页面时出现浏览器闪退时,如何解决?

    Selenium是一个用于Web应用程序测试的工具。Selenium测试直接运行在浏览器中,就像真正的用户在操作一样,今天在针对js动态网页爬虫时,使用代理并使用Selenium,打开网页时,浏览器总是一闪而退,代码如下: from selenium import webdriver from seleniumwire import webdriver from selenium.webd

    2023年04月09日
    浏览(36)
  • selenium WebDriver 中的几种等待--sleep(),implicitly_wait(),WebDriverWait()

    目录 强制等待:sleep() 隐式等待:implicitly_wait() 显示等待:WebDriverWait() 与until()或者until_not()方法结合使用 WebDriverWait与expected_conditions结合使用 显示等待,自定义等待条件 设置固定休眠时间,单位为秒。 由python的time包提供, 导入 time 包后就可以使用。 缺点:不智能,使用太多的

    2024年02月16日
    浏览(37)
  • Python怎么让页面等待?Python爬虫如何等待网页加载完成

    现在的很多网页都会使用Ajax这种异步加载的技术来提高网页的浏览体验,而异步加载就是让一部分元素在点击或者执行了某些操作时才会加载出来,而这对python爬虫程序会造成很大的影响。下面会来给大家介绍一下python爬虫让网页等待加载的方法,往下看看吧。 之所以要使

    2024年02月20日
    浏览(47)
  • 为你的网站加上Loading等待加载效果吧 | Loading页面加载添加教程

    为你的网站加上Loading等待加载效果吧 | Loading页面加载添加教程 效果图 : 教程开始 新建一个loading样式css 将以下代码放进去 然后引用这个文件 code #Loadanimation{    background-color:#fff;    height:100%;    width:100%;    position:fixed;    z-index:1;    margin-top:0px;top:0px;     } #Loadanimation

    2024年02月09日
    浏览(107)
  • 模拟动态加载网页数据Selenium,Puppeteer,WebDriver,Requests-HTML

    模拟动态加载网页数据,你可以使用以下工具: Selenium:Selenium是一个用于Web应用程序测试的工具,它可以模拟用户在浏览器上的操作,包括点击、滚动、填写表单等。因此,它也可以用于爬取那些动态加载内容的网页。Selenium支持多种浏览器,并且提供了多种编程语言的接口

    2024年04月25日
    浏览(45)
  • Selenium的WebDriver操作页面的超时或者元素重叠引起的ElementClickInterceptedException

    处理由页面加载引起的超时是在使用 Selenium 进行自动化测试中常见的任务。页面加载可能因网络速度慢、页面复杂性或异步操作而导致超时。以下是一些处理页面加载超时的方法: 1.设置隐式等待时间: 使用 implicitly_wait 方法可以设置隐式等待时间,让 Selenium 等待一定时间

    2024年02月07日
    浏览(40)
  • webdriver 的三种等待方式(强制等待、隐式等待、显示等待)

    在自动化测试脚本的运行过程中,webdriver操作浏览器的时候,对于元素的定位是有一定的超时时间,大致应该在1-3秒的样子,如果这个时间内仍然定位不到元素,就会抛出异常,中止脚本执行。我们可以通过在脚本中设置等待的方式来避免由于网络延迟或浏览器卡顿导致的偶

    2024年02月13日
    浏览(37)
  • Selenium设置页面超时时间-快速终止页面加载

    当使用Selenium爬取一些页面时,有些页面加载速度特别慢,而我们又不需要等待页面完全加载完毕。 此时可以通过 driver.set_page_load_timeout() 来设置页面超时时间。 捕获异常,并执行js脚本 window.stop() 即可实现,代码如下。 报错处理: 如果遇到如下,超时错误,可以尝试更新

    2024年02月15日
    浏览(44)
  • Selenium 页面加载策略

    共有三种类型的页面加载策略. 页面加载策略可以在此链接查询 document.readyState , 如下表所述: 策略 就绪状态 备注 normal complete 默认值, 等待所有资源下载 eager interactive DOM 访问已准备就绪, 但诸如图像的其他资源可能仍在加载 none Any 完全不会阻塞 WebDriver 文档的  document.rea

    2024年02月07日
    浏览(34)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包