项目场景:
最近在用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");
参考官网,改造自己的选择器:文章来源:https://www.toymoban.com/news/detail-739076.html
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模板网!