bur*_*q24 5 javascript automation cucumber for-in-loop eslint
我正在使用 Cucumber js,我想填写应用程序中的一些字段,所以我使用 for-in 从 rowHash 中获取数据,但我收到错误消息“for 的正文- in 应该包含在 if 语句中,以从原型 guard-for-in 中过滤不需要的属性”我不确定我应该如何使用 for 中的 if 来编码我的 for-in。
这是我的代码:
this.fillRequiredfields = function(dataTable){
var rows = dataTable.rowsHash();
for (var row in rows) {
var val = rows[row];
if (row === 'firstname') {
element(by.name('firstName')).sendKeys(val).isPresent();
}
if (row === 'lastname') {
element(by.name('lastName')).sendKeys(val).isPresent();
}
if (row === 'emailaddress') {
element(by.name('emailAddress')).sendKeys(val).isPresent();
}
if (row === 'displayname') {
element(by.name('displayName')).sendKeys(val).isPresent();
}
if (row === 'password') {
element(by.name('newPassword')).sendKeys(val).isPresent();
}
}
};
Run Code Online (Sandbox Code Playgroud)
因此,当我尝试在 git 中进行提交时,我从 eslint 获得了“guard-for-in”。如果有人可以向我解释我应该如何在 for-in 中执行 if,那可能会很好。
希望您能够帮助我。
我已经解决了这个问题,就我而言,解决方案是:
代替
var val = rows[row];
Run Code Online (Sandbox Code Playgroud)
我将 if 与 hasOwnProperty() 添加在一起,如下所示:
if (rows.hasOwnProperty(row))
Run Code Online (Sandbox Code Playgroud)
所以代码是这样的:
for (var row in rows) {
if (rows.hasOwnProperty(row)){
if (row === 'firstname') {
element(by.name('firstName')).sendKeys(rows[row]).isPresent();
}
if (row === 'lastname') {
element(by.name('lastName')).sendKeys(rows[row]).isPresent();
}
if (row === 'emailaddress') {
element(by.name('emailAddress')).sendKeys(rows[row]).isPresent();
}
if (row === 'displayname') {
element(by.name('displayName')).sendKeys(rows[row]).isPresent();
}
if (row === 'password') {
element(by.name('newPassword')).sendKeys(rows[row]).isPresent();
}
}
}
Run Code Online (Sandbox Code Playgroud)
希望可以帮助别人。
小智 5
在一些罕见的情况下
if (rows.hasOwnProperty(row))
Run Code Online (Sandbox Code Playgroud)
可能会触发不良影响(例如,如果这是一个函数 hasOwnProperty())。所以这就是为什么建议的方法是
Object.prototype.hasOwnProperty.call(rows, row)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6820 次 |
| 最近记录: |