量角器 - 在运行时更改浏览器功能

时间:2016-01-16 03:34:19

标签: protractor gulp-protractor

有没有办法在量角器套件的每个之前更改浏览器功能。我需要在每个规范执行之前设置Capabilities.name属性。

3 个答案:

答案 0 :(得分:1)

要创建所需功能的单独实例,例如capabilities.name,您需要尝试通过Protractor提供的multiCapabilities选项。一个示例看起来类似于下面的内容并驻留在conf.js文件中。这允许您为每个测试会话提交唯一的名称。

  onPrepare: function(){
  var caps = browser.getCapabilities()
  },

  multiCapabilities: [{
    browserName: 'firefox',
    version: '32',
    platform: 'OS X 10.10',
    name: "firefox-tests",
    shardTestFiles: true,
    maxInstances: 25
  }, {
    browserName: 'chrome',
    version: '41',
    platform: 'Windows 7',
    name: "chrome-tests",
    shardTestFiles: true,
    maxInstances: 25
  }],

这里可以看到一个完整的例子:

https://github.com/saucelabs-sample-test-frameworks/JS-CucumberJS-Protractor3.0/blob/master/conf.js

答案 1 :(得分:0)

这是sauceLabs的功能: https://wiki.saucelabs.com/display/DOCS/Test+Configuration+Options

当您未指定Capabilities.name时,看起来sauceLabs默认会将每个测试格式化为browserName:specFilename

答案 2 :(得分:0)

您无法更改beforeEach()(Jasmine hook)或onPrepare()(Protractor conf.js)中的功能,因为已经创建了浏览器实例并且已经启动了webdriver会话功能已发送到Selenium服务器。

所需功能在CapabilitiesMulticapabilities下的conf.js中设置。您可以在运行时通过在conf.js中导出之前获取变量来设置它们。

执行此操作的一种常用方法是使用环境变量设置功能,例如:

Capabilities: {
  browserName: process.env.SELENIUM_BROWSER
}

您可以在beforeLaunch()中设置要在功能中使用的变量,但这只会在读取任何规范之前执行一次。

这里有一个关于量角器/茉莉花挂钩的精彩摘要:
http://timothymartin.azurewebsites.net/protractor-before-and-afters/

我还没有找到一种方法(不修改Protractor源代码)来根据每个规格或每个套件动态更改功能。