我想测试 NOT headlessly ,但我不能这样做。
以下代码启动Chrome浏览器。 不是无头。行。
// test.js
var webdriverio = require('webdriverio');
var options = {
desiredCapabilities: {
browserName: 'chrome'
}
};
webdriverio
.remote(options)
.init()
.url('http://www.google.com')
.title(function(err, res) {
console.log('Title was: ' + res.value);
})
.end();
以下代码( Mocha 测试代码)不会$ mocha test.js
启动Chrome浏览器。
无头即可。 NG。
但测试通过了!我不明白这。
我检查了Selenium Server的日志,但它没有显示(左)任何日志。没有踪影。
// test-mocha.js
var expect = require('expect.js');
var webdriverio = require('webdriverio');
var options = {
desiredCapabilities: {
browserName: 'chrome'
}
};
describe('WebdriverIO Sample Test', function () {
it('should return "Google"', function () {
webdriverio
.remote(options)
.init()
.url('http://www.google.com')
.title(function(err, res) {
var title = res.value;
expect(title).to.be('Google');
})
.end();
})
});
测试结果如下:
WebdriverIO Sample Test
✓ should return "Google"
1 passing (4ms)
答案 0 :(得分:7)
webdriver.io是异步的。更改测试以将其标记为异步,并在完成测试中的所有检查后使用done
回调。这两项更改包括:1。将done
作为参数添加到您传递给it
的功能中,然后在done()
来电后添加expect
来电。
it('should return "Google"', function (done) { // <- 1
webdriverio
.remote(options)
.init()
.url('http://www.google.com')
.title(function(err, res) {
var title = res.value;
expect(title).to.be('Google');
done(); // <- 2
})
.end();
})
如果没有这个,Mocha认为你的测试是同步的,所以它只是在webdriverio
开始工作之前完成测试。