gpt4 book ai didi

javascript - selenium-webdriver node.js : how to handle missing element after wait timeout (exception can't seem to be caught)

转载 作者:行者123 更新时间:2023-11-30 15:40:21 27 4
gpt4 key购买 nike

我正在使用 Node.js selenium-webdriver,但遇到了这个烦人的问题。我有这个登录功能,可以填写一些字段,然后尝试通过点击按钮来登录网站。我知道登录是否成功的方法是在单击按钮后等待某个元素。我想等 5 秒钟,然后相应地响应来电者。

问题是 wait 函数抛出异常并且使用 try/catch 解决不了问题(异常没有被捕获并且程序退出)。

这是我的代码:

var webdriver = require('selenium-webdriver'),
By = webdriver.By,
until = webdriver.until;

var driver = new webdriver.Builder()
.forBrowser('chrome')
.build();

var timeout = 5000;

function login(username, password, callback) {
driver.get('https://www.example.com/');

driver.switchTo().frame(driver.findElement(By.css("iframe")));
driver.findElement(By.name('userid')).sendKeys(username);
driver.findElement(By.name('password')).sendKeys(password);
driver.findElement(By.id('submit_btn')).click();

driver.wait(until.elementLocated(By.className('indication-that-login-was-successful')), timeout).then(function(elm) {
callback(true);
driver.quit();
});
}

因此,如果登录不成功(例如因为密码不正确),元素 indication-that-login-was-successful 永远不会出现(好事)。但在这种情况下,我不断得到

TimeoutError: Waiting for element to be located By(css selector, .indication-that-login-was-successful) Wait timed out after 5001ms

理想情况下,我可以用 false 捕获这个异常和回调并退出驱动程序:

try {
driver.wait(until.elementLocated(By.className('indication-that-login-was-successful')), timeout).then(function(elm) {
callback(true);
driver.quit();
});
} catch (ex) {
callback(false);
driver.quit();
}

但是如上所述,用 try/catch block 将其包装起来似乎没有帮助,永远不会捕获异常并且程序存在。

有什么想法吗?

最佳答案

你可以试试:

driver.wait(until.elementLocated(By.className('indication-th‌​at-login-was-success‌​ful')), 5000).then(function(elm) {
callback(true);
driver.quit();
}).catch(function(ex) {
callback(false);
driver.quit();
});

关于javascript - selenium-webdriver node.js : how to handle missing element after wait timeout (exception can't seem to be caught),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40920130/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com