我正在使用Sauce Labs以Mocha作为测试框架来运行我的Selenium测试脚本。脚本运行完美,但问题是,作业没有完成 - 似乎driver.quit()
被忽略,并且在90秒后我被提示超时错误。
以下是代码:
const { driver } = require('./config');
const { By, until } = require('selenium-webdriver');
describe('Integration test', function () {
this.timeout(20000);
it('can login as test user', function () {
driver.get('https://www.example.com');
driver.wait(until.elementIsNotVisible(driver.findElement(By.id('vale'))), 8000, 'Vale cannot fade');
driver.findElement(By.name('email')).sendKeys('test_user@test.com');
driver.findElement(By.name('password')).sendKeys('password');
return driver.findElement(By.id('authFormSubmitButton')).click();
});
after(() => {
console.log('Quiting driver');
// This does not work!
driver.quit();
});
});
在配置中构建driver
并连接到远程服务器。
运行时,在控制台中我可以看到测试传递和Quiting driver
消息,但在Sauce labs仪表板中,任务只是一直等到超时。
顺便说一句,我使用本地chromdriver
测试了上述代码,一切正常 - driver
在任务完成后立即退出。
感谢任何帮助或想法。
答案 0 :(得分:1)
return
之前需要driver.quit()
。
而不是调用done(),Mocha接受一个promise作为返回值。如果 测试返回一个承诺,Mocha知道它是异步的, 并等待Promise在传递给下一个之前得到解决 测试
这article很有价值。