一个简单的WebdriverIO - Mocha测试不显示浏览器

时间:2014-11-26 07:47:22

标签: javascript selenium webdriver mocha webdriver-io

我想测试 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) 

1 个答案:

答案 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开始工作之前完成测试。