Javascript 基于cucumber标记切换multiCapabilites配置

Javascript 基于cucumber标记切换multiCapabilites配置,javascript,selenium,protractor,cucumberjs,Javascript,Selenium,Protractor,Cucumberjs,我想知道是否有人找到了在cucumber.conf.js文件中的不同多电容配置之间切换的方法。目前,我有一个配置,将运行并行chrome驱动程序来运行测试 multiCapabilities: [{ 'browserName': 'chrome', 'platform': 'ANY', shardTestFiles: true, maxInstances: 2 }], 但是如果我还想为多浏览器测试添加一个多容量选项呢 multiCapabilities: [{

我想知道是否有人找到了在cucumber.conf.js文件中的不同多电容配置之间切换的方法。目前,我有一个配置,将运行并行chrome驱动程序来运行测试

multiCapabilities: [{
    'browserName': 'chrome',
    'platform': 'ANY',
    shardTestFiles: true,
    maxInstances: 2
}],
但是如果我还想为多浏览器测试添加一个多容量选项呢

multiCapabilities: [{
    'browserName': 'chrome'
},{
    'browserName': 'firefox'
}]

我不想注释或更改代码,而是存储大量的多容量配置,我可以使用标志、标记或grunt选项来切换这些配置。有人有过这样的运气吗?谢谢

最好的选择是使用量角器内置的命令行选项来传递浏览器或在任何此类功能之间切换

Usage: protractor [configFile] [options]
configFile defaults to protractor.conf.js
The [options] object will override values from the config file.
See the reference config for a full list of options.

Options:
--help                                 Print Protractor help menu
--version                              Print Protractor version
--browser, --capabilities.browserName  Browsername, e.g. chrome or firefox
如果查看量角器的cli选项,并且在MultiCapabilities选项中设置了多个浏览器,则可以这样传递浏览器名称-

protractor config.js --capabilities.browserName='chrome'
protractor config.js --capabilities.browserName='firefox'
您可以在package.json中将其设置为单独的脚本,以便在各种浏览器中运行测试-

"scripts": {
"tsc": "tsc",
"test": "protractor ./config.js",
"chrome-tests": "protractor ./config.js --capabilities.browserName='chrome'",
"firefox-tests": "protractor ./config.js --capabilities.browserName='firefox'"
}
现在您可以使用
npm
-

npm run chrome-tests // it would run your tests in chrome browser
npm run firefox-tests // it would run your tests in firefox browser
您还可以在
conf
文件中使用
params
对象传递参数,并在测试或命令行中的任何位置访问它们

params: {
     primaryBrowser: 'chrome'  // I am biased towards chrome :)
     secondaryBrowser: 'firefox'
 },
您可以通过使用浏览器的全局对象在测试中访问它们-

console.log(browser.params.primaryBrowser);
console.log(browser.params.secondaryBrowser);
同样,您可以在命令行中更改它们-

protractor config.js --params.primaryBrowser='firefox'
通过
getMultiCapabilities
,还有一种更优雅的方式来完成这些事情

您甚至可以通过访问上述函数对象来传递多个浏览器,有关详细信息,请参阅此链接


如果您使用的是gulp,那么以编程方式执行此操作就很简单了。也许不是你想听的,但这就是我所得到的。不,不使用大口大口-希望在任务执行者之外寻找解决方案。但谢谢你:)