在javascript中使用selenium没有可用的按钮元素时,使用console.log(“text”)
当没有可用的按钮元素但它不工作时,我想在javascript中使用selenium没有可用的按钮元素时,使用console.log(“text”),javascript,node.js,selenium,debugging,setinterval,Javascript,Node.js,Selenium,Debugging,Setinterval,当没有可用的按钮元素但它不工作时,我想console.log(“无元素”) const {Builder, By} = require("selenium-webdriver"); let driver = new Builder().forBrowser("chrome").build(); async function myfun(){ await driver.get("website") await driver.findElement(By.linkText("y
console.log(“无元素”)
const {Builder, By} = require("selenium-webdriver");
let driver = new Builder().forBrowser("chrome").build();
async function myfun(){
await driver.get("website")
await driver.findElement(By.linkText("yes")).click();
await driver.findElement(By.linkText("yes")).click();
await driver.sleep(500);
await driver.findElement(By.id("inputfield")).sendKeys("name");
setInterval(function(err){
if (err){
console.log("No element");
}else{
driver.findElement(By.tagName("button")).click();
}
}, 1000);
}
myfun()
我发现以下错误:
(node:16248) UnhandledPromiseRejectionWarning: NoSuchElementError: no such element: Unable to locate element: {"method":"css selector","selector":"button"}
(Session info: chrome=81.0.4044.92)
我也尝试过try/cath方法,但没有成功
try {
driver.findElement(By.tagName("button")).click();
} catch(err) {
console.log("No element")
}
用户信用。我发现这个帖子完美地解决了我的问题。它是从另一个线程复制的。要获得更清晰的理解,请参阅全文
所选答案未按预期工作(err.state
为undefined
,并且始终抛出NoSuchElementError
)——尽管使用可选回调的概念仍然有效
因为我得到的错误与OP引用的错误相同,所以我认为在确定目标元素是否存在时应该引用。顾名思义,就是当元素不存在时抛出的错误。因此errorCallback中的条件应为:
webdriver.error.NoSuchElementError的错误实例
因此,完整的代码块如下所示(我还使用async
/wait
来帮助那些利用该语法的人):
用户信用。我发现这个帖子完美地解决了我的问题。它是从另一个线程复制的。要获得更清晰的理解,请参阅全文
所选答案未按预期工作(err.state
为undefined
,并且始终抛出NoSuchElementError
)——尽管使用可选回调的概念仍然有效
因为我得到的错误与OP引用的错误相同,所以我认为在确定目标元素是否存在时应该引用。顾名思义,就是当元素不存在时抛出的错误。因此errorCallback中的条件应为:
webdriver.error.NoSuchElementError的错误实例
因此,完整的代码块如下所示(我还使用async
/wait
来帮助那些利用该语法的人):
检查此项:检查此项:
try {
driver.findElement(By.tagName("button")).click();
} catch(err) {
console.log("No element")
}
var existed = await driver.findElement(webdriver.By.id('test')).then(function() {
return true;//it existed
}, function(err) {
if (err instanceof webdriver.error.NoSuchElementError) {
return false;//it was not found
} else {
webdriver.promise.rejected(err);
}
});
//handle value of existed appropriately here