错误:使用非错误调用done():{}

时间:2016-06-17 15:22:12

标签: javascript node.js selenium testing phantomjs

我正在尝试使用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

我不确定为什么会出现这个问题,并且搜索没有帮助,因为我的解决方案不符合我的情况;我在:

  • Mac OS X 10
  • Node.js v4.4.5
  • PhantomJS 2.1.1

这是我的剧本:

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库,但它们都返回了不同的错误;〜;

1 个答案:

答案 0 :(得分:5)

作为参数传递给done回调的任何内容都将被解释为错误。将beforeEach更改为:

beforeEach(function(done) {
    driver = new selenium.Builder()
        .withCapabilities(selenium.Capabilities.phantomjs())
        .build();
    driver.get(URL).then(function(){
        done();
    });
});