4

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

4

3 回答 3

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

于 2016-03-18T17:11:08.627 回答
0

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

如果您不指定 aCapabilities.name它看起来像 sauceLabs 报告每个测试browserName:specFilename的默认格式。

于 2016-01-29T02:55:33.017 回答
0

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

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

一种常见的方法是使用环境变量设置功能,例如:

Capabilities: {
  browserName: process.env.SELENIUM_BROWSER
}

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

量角器/茉莉花钩在这里有一个很好的总结:http:
//timothymartin.azurewebsites.net/protractor-before-and-afters/

我还没有找到一种方法(无需修改 Protractor 源代码)来基于每个规范或每个套件动态更改功能。

于 2017-11-17T23:22:38.963 回答