是否可以从量角器中的 excel 参数化配置值?



我试图使用excel参数化功能。我使用 npm exceljs 包进行 excel 阅读和写入。我将给出示例代码。

//It will read the value from excel
this.getValueFromExcel = function getValueFromExcel(cellAddress) {
return  workbook.xlsx.readFile('data.xlsx').then(function () {
var worksheet = workbook.getWorksheet(sheetName);
var excelData = worksheet.getCell(cellAddress).value.toString();
console.log(excelData);
return excelData;
})
}
var browservalue = this.getvalueFromExcel(cellAddress);
//if the browservalue is Chrome expect to be execute this one
var Chrome = {    
browserName: 'chrome',
'chromeOptions': {
'args': ["--disable-infobars"]
}  
};
//and browservalue is using here
exports.config = {
capabilities: browserValue,
}

我不确定我做错了什么,数据正在从 excel 获取,因为打印语句工作正常。但是我收到一个错误 --\ '[15:53:43] E/启动器 - 错误: 类型错误: 目标浏览器必须是字符串,但我 s ;你忘了调用浏览器((吗?'

不确定是否有可能,或者做错了什么?

我已经通过链接 参数化量角器配置文件,以及如何在 Angularjs 量角器中使用命令行参数?

正如我在评论中提到的,当字符串需要变量名称时,您正在尝试将字符串传递到功能选项中。browservalue = Chrome工作的原因是因为在这里您传递的是变量名称,而不是字符串。这是一个微妙的区别。

无论如何,有一种方法可以做你想做的事情。

试试这个:

var browserValue = this.getvalueFromExcel(cellAddress);
var Chrome = {    
browserName: 'chrome',
'chromeOptions': {
'args': ["--disable-infobars"]
}  
};
exports.config = {  
capabilities: eval(browserValue),    
}

使用eval()会将传递给它的字符串解释为代码,因此应将字符串"Chrome"计算为变量名。

除非完全必要,否则您不应该使用eval()因为它接收的任何字符串都会尝试作为javascript代码执行,这可能是一个安全问题。但在这种情况下,我不相信有其他方法。

最新更新