有没有办法在量角器套件的每个之前更改浏览器功能。我需要在每个规范执行之前设置Capabilities.name属性。
答案 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服务器。
所需功能在Capabilities
或Multicapabilities
下的conf.js中设置。您可以在运行时通过在conf.js中导出之前获取变量来设置它们。
执行此操作的一种常用方法是使用环境变量设置功能,例如:
Capabilities: {
browserName: process.env.SELENIUM_BROWSER
}
您可以在beforeLaunch()
中设置要在功能中使用的变量,但这只会在读取任何规范之前执行一次。
这里有一个关于量角器/茉莉花挂钩的精彩摘要:
http://timothymartin.azurewebsites.net/protractor-before-and-afters/
我还没有找到一种方法(不修改Protractor源代码)来根据每个规格或每个套件动态更改功能。