【问题标题】:Is it possible to parametrze config values from an excel in protractor?是否可以从量角器中的 excel 参数化配置值?
【发布时间】:2017-12-16 17:46:27
【问题描述】:

我正在尝试使用 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/launcher - 错误:TypeError:目标浏览器必须是字符串,但我 小号;你忘记调用 forBrowser() 了吗? '

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

我已经通过链接 Parametrize protractor-config fileHow can I use command line arguments in Angularjs Protractor?

【问题讨论】:

  • 您的问题是您试图从 excel 中读取字符串“Chrome”,并期望它与包含浏览器功能的变量“Chrome”相匹配。实际上正在发生的事情是,您最终在配置中得到了一段代码,它只是读取capabilities: "Chrome",这就是量角器所抱怨的。
  • 但是当我直接给出时它工作正常 - var browservalue = Chrome;那为什么不用excel呢?

标签: javascript angularjs npm automation protractor


【解决方案1】:

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

不管怎样,有一种方法可以做你想做的事。

试试这个:

var browserValue = this.getvalueFromExcel(cellAddress);

var Chrome = {    
     browserName: 'chrome',
    'chromeOptions': {
        'args': ["--disable-infobars"]
    }  
};

exports.config = {  
    capabilities: eval(browserValue),    
}

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

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

【讨论】:

  • 感谢 Hudson 的努力,但不幸的是它也无法正常工作。我得到同样的错误
  • 你能用console.log 输出你从this.getvalueFromExcel(cellAddress) 得到的东西吗?
  • 我得到了 excel 中的确切值,现在是 - Chrome。
  • 我刚刚注意到,在您的代码中,您同时拥有“browservalue”和“browserValue”——这是我无意中复制到自己的代码中的错误(现已更正)。你能确保在实际实现中的两个地方都使用相同的变量名吗?
  • 我在实际实现中使用的是同一个变量
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-04-02
  • 1970-01-01
相关资源
最近更新 更多