2

我不想无头地进行测试,但我不能那样做。

下面的代码启动 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();

下面的代码(摩卡测试代码)不会启动 chrome 浏览$ mocha test.js

无头。吴。

但是测试通过了!我无法理解这。

我检查了 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) 
4

1 回答 1

7

webdriver.io 是异步的。更改您的测试以将其标记为异步,并done在测试中的所有检查完成后使用回调。这两个更改是:1.将done作为参数添加到您传递给的函数中,it以及 2.在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工作之前完成测试。

于 2014-11-26T11:59:14.747 回答