有没有办法在量角器套件的 beforeEach 中更改浏览器功能。我需要在每个规范执行之前设置 Capabilities.name 属性。
3 回答
要创建所需功能的单独实例,例如 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
以下是 sauceLabs 的功能: https ://wiki.saucelabs.com/display/DOCS/Test+Configuration+Options
如果您不指定 aCapabilities.name
它看起来像 sauceLabs 报告每个测试browserName:specFilename
的默认格式。
您无法更改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 源代码)来基于每个规范或每个套件动态更改功能。