Protractor 如何在量角器中通过命令提示符传递浏览器名称
我使用的量角器是黄瓜架,带有量角器5.2.2。黄瓜3.2.1。我必须通过命令提示符传递浏览器名称,而不是在配置文件中硬编码。案例1:仅在cmd行中指定浏览器名称,以使脚本在该浏览器上运行Protractor 如何在量角器中通过命令提示符传递浏览器名称,protractor,Protractor,我使用的量角器是黄瓜架,带有量角器5.2.2。黄瓜3.2.1。我必须通过命令提示符传递浏览器名称,而不是在配置文件中硬编码。案例1:仅在cmd行中指定浏览器名称,以使脚本在该浏览器上运行 // conf.js capabilities: { browserName: 'chrome' } progrator conf.js-browser=firefox//将在firefox上运行 量角器conf.js//在chrome上运行 案例2:在启动量角器运行程序之前,是否希望对某些代码
// conf.js
capabilities: {
browserName: 'chrome'
}
progrator conf.js-browser=firefox//将在firefox上运行
量角器conf.js//在chrome上运行
案例2:在启动量角器运行程序之前,是否希望对某些代码逻辑使用浏览器名称
您可以使用process.argv获取命令中的所有内容,并提取传入的浏览器名称
// cmd.params.js
// parse cmd parameters
var params = {};
process.argv.slice(3).forEach(function (arg) {
let flag = arg.split('=')[0];
let value = arg.split('=')[1];
let name = flag.replace('--', '');
params[name] = value;
});
module.exports = params;
dragrator conf.js-browser=firefox//将仅在firefox上运行
progrator conf.js-browser=firefox,chrome//将在firefox上运行,chrome您可以使用browser.browserName获取名称。我可以通过命令提示符传递浏览器名称,并在chrome和firefox中运行,但不能在internet explorer中运行。我使用了命令量角器cumber.conf.js-capabilities.browserName=internetexplorer,错误为SessionNotCreatedError:无法从org.openqa.selenium.remote创建会话。NewSessionPayload@5ca001a9在我的配置文件中,我提供了以下功能:{'browserName':}这是您问题的解决方案吗?为什么您必须通过命令行传递脚本,而不是从配置中获取脚本实际上,我的要求是用户应该能够在单个浏览器或多个浏览器中运行脚本,而无需在配置文件中硬编码浏览器名称。它不是硬编码的。它由框架自动发现。您只需读取值。如果你在chrome中运行它,它会返回chrome;如果你在ie中运行它,它会返回ie。它很有用。当我使用了dragrator conf.js-browser=firefox,dragrator conf.js-browser=internetexplorer时,我可以在单个浏览器中运行。通过在cmd行中指定浏览器名称,我们可以在两个或三个浏览器中同时运行脚本吗?我使用了dragrator conf.js-browser=firefox,chrome。但它不起作用。我在我的项目文件夹中创建了cmd.params.js文件,并在配置文件中进行了更改,但当我运行脚本时,我收到一条错误消息:加载配置文件cucumber.conf.js失败,引用错误:moduel未定义cmd.params.js中的类型错误,应该是module.exportsI已尝试,但错误仍然存在。我们如何解决此问题。提前感谢。如果可以将cucumber.conf.js和cmd.params.js上载到您的github帐户,我将查看并修改它,然后提交回。
// conf.js
var params = require('./cmd.params.js');
var browser = params.browser;
// now you can use the variable: browser anywhere in conf.js
var multiCapabilities = browser.split(',').map(function(browserName){
return {
browserName: browserName.trim()
};
})
exports.config = {
multiCapabilities: multiCapabilities
....
};