我正在尝试使用Node上的Selenium上的Mocha和PhantomJS设置自动测试。我正在使用selenium-webdriver
库,因为它似乎是一个受欢迎的库,但当我运行测试并尝试从页面中提取数据时,它会给我这个错误:
1) Test "before each" hook for "Test":
Error: done() invoked with non-Error: {}
at ManagedPromise.invokeCallback_ (node_modules/selenium-webdriver/lib/promise.js:1379:14)
at TaskQueue.execute_ (node_modules/selenium-webdriver/lib/promise.js:2913:14)
at TaskQueue.executeNext_ (node_modules/selenium-webdriver/lib/promise.js:2896:21)
at node_modules/selenium-webdriver/lib/promise.js:2775:27
at node_modules/selenium-webdriver/lib/promise.js:639:7
我不确定为什么会出现这个问题,并且搜索没有帮助,因为我的解决方案不符合我的情况;我在:
这是我的剧本:
var selenium = require("selenium-webdriver");
var should = require("should");
var URL = "https://android.com";
var driver;
describe("Test", function() {
this.timeout(15000);
beforeEach(function(done) {
driver = new selenium.Builder()
.withCapabilities(selenium.Capabilities.phantomjs())
.build();
driver.get(URL).then(done);
});
/* is this an HTML page? */
it("Test", function() {
driver
.getPageSource()
.should.eventually
.match(/(.*)\<\!doctype\ html\>(.*)/i);
});
afterEach(function(done) {
driver.quit().then(done);
});
});
我也尝试过使用我找到的一些gulp脚本和其他Node.js库,但它们都返回了不同的错误;〜;
答案 0 :(得分:5)
作为参数传递给done
回调的任何内容都将被解释为错误。将beforeEach
更改为:
beforeEach(function(done) {
driver = new selenium.Builder()
.withCapabilities(selenium.Capabilities.phantomjs())
.build();
driver.get(URL).then(function(){
done();
});
});