运行Nightwatch.js测试时如何获取当前运行测试的浏览器名称?

时间:2016-06-29 14:25:35

标签: javascript node.js selenium testing nightwatch.js

情境:我们使用Nightwatch在多个浏览器中运行测试 (通过Saucelabs;一切都在Saucelabs 上运行良好)。

渴望:我们想知道 哪个浏览器 测试当前正在运行,因此我们可以保存屏幕截图包括浏览器名称。

是否可以确定哪个浏览器正在运行测试?

1 个答案:

答案 0 :(得分:5)

非常简单,在运行Nightwatch测试时,会传入browserclient )参数,例如:

module.exports = {
  'Demo test GitHub': function (browser) {
    console.log(browser.options); // this will output the browser details
    browser
      .url('http://www.github.com/dwyl')   // visit the url
      .waitForElementVisible('body'); // wait for the body to be rendered
      .assert.containsText('body', 'do what you love') // assert contains
      .saveScreenshot('dwyl_github.png')
      .end();
  }
};

browser对象包含options对象,其格式如下:

{ screenshots: true,
  screenshotsPath: './node_modules/nightwatch/screenshots/1.0.20/',
  skip_testcases_on_fail: true,
  log_screenshot_data: true,
  username: 'thisguy',
  accessKey: 'notimportant',
  desiredCapabilities: 
   { browserName: 'internet explorer',
     javascriptEnabled: true,
     acceptSslCerts: true,
     platform: 'Windows 10',
     version: '11.0',
     name: 'Github' } }

所以我们编写了一个小帮助函数来将浏览器的名称格式化为我们可以包含在屏幕截图文件名中的字符串:

function userAgent(browser) { // see: https://git.io/vobdn
  var a = browser.options.desiredCapabilities;
  return (a.platform + '~' + a.browserName + '~' + a.version).replace(/ /g, '');
}

然后用作:

module.exports = {
  'Demo test GitHub': function (browser) {
    console.log(browser.options); // this will output the browser details
    browser
      .url('http://www.github.com/dwyl')   // visit the url
      .waitForElementVisible('body'); // wait for the body to be rendered
      .assert.containsText('body', 'do what you love') // assert contains
      .saveScreenshot(userAgent(browser) + '_dwyl_github.png')
      .end();
  }
};

示例文件名:Windows10~internetexplorer~11.0~dwyl_github.png

使用~(“tilde”)作为单词分隔符的原因是我们稍后可以在屏幕截图查看器中对此字符进行split。 有关更多详细信息,请参阅:https://github.com/dwyl/learn-nightwatch