gpt4 book ai didi

javascript - 如何使用 webdriver (JavaScript) 在 selenium 中停止测试?

转载 作者:行者123 更新时间:2023-11-28 21:37:56 25 4
gpt4 key购买 nike

我在 nodejs 中使用 selenium webdriver 运行两个测试。我希望第一个测试停止然后运行第二个。但问题是 driver.close 抛出异常。

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

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

driver.get('https://www.website.com/');

var values = [{email:'correctuser@website.com',password:'correct'},{email:'wronguser@website.com',password:'wrong'}];


testCase(values[0].email,values[0].password);

// driver.close throws exception
driver.close();

testCase(values[1].email,values[1].password);

function testCase(email,password){
driver.wait(until.urlIs('https://www.website.com/'))
driver.findElement(By.id('inputEmail')).clear();
driver.findElement(By.id('inputEmail')).sendKeys(email);
driver.findElement(By.id('inputPassword')).clear();
driver.findElement(By.id('inputPassword')).sendKeys(password);
driver.findElement(By.tagName('button')).click().then(()=>{
driver.wait(until.elementLocated(By.className('alert-danger'))).then(() =>{
console.log('Failed login case - success');
}).catch((e)=>{
console.log(e);
});
driver.wait(until.urlIs('https://www.website.com/home')).then(() => {
console.log('Successful login case - success');
}).catch((e)=>{
console.log(e);
});
});

}

错误信息:

(node:1296) UnhandledPromiseRejectionWarning: NoSuchSessionError: invalid session id
(Driver info: chromedriver=74.0.3729.6 (255758eccf3d244491b8a1317aa76e1ce10d57e9-refs/branch-heads/3729@{#29}),platform=Mac OS X 10.13.6 x86_64)

预期结果应该是:

- Successful login case - success
- Failed login case - success

最佳答案

不要使用driver.close(),使用driver.quit()

driver.close() 将关闭现有的 Selenium 窗口,如果没有窗口则会出错。它实际上是为在打开多个不同的浏览器窗口时使用而设计的。

driver.quit() 是 selenium 中的清理命令。它将关闭所有现有窗口,然后取消引用驱动程序对象。如果当前没有打开的窗口,则不会出错。

话虽如此,导致问题的不是驱动程序关闭,而是您运行的第二个测试用例(行 testCase(values[1].email,values[1].password) ;) 假设你有一个浏览器对象。您没有这样做,因为您关闭了上一行中的最后一个窗口,这导致您的浏览器对象被丢弃。

要消除此错误,您需要调用

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

再打电话之前

testCase(values[1].email,values[1].password);

*编辑*

所以给你一个完整的代码块:

var values = [{email:'correctuser@website.com',password:'correct'},{email:'wronguser@website.com',password:'wrong'}];
var driver = new webdriver.Builder()
.forBrowser('chrome')
.build();

driver.get('https://www.website.com/');
testCase(values[0].email,values[0].password);

driver.quit();

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

driver.get('https://www.website.com/');
testCase(values[1].email,values[1].password);

关于javascript - 如何使用 webdriver (JavaScript) 在 selenium 中停止测试?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56142306/

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