Javascript NightWatch.js-根据相对css定位器获取子WebElement的列表
大家好,所有夜视用户 我试图用以下格式解析一个表,以获得一个行列表和每行中的单元格Javascript NightWatch.js-根据相对css定位器获取子WebElement的列表,javascript,css,css-selectors,pageobjects,nightwatch.js,Javascript,Css,Css Selectors,Pageobjects,Nightwatch.js,大家好,所有夜视用户 我试图用以下格式解析一个表,以获得一个行列表和每行中的单元格 <tbody> <tr> // 1 row <td>Item A</td> // name <td>John</td> // owner <td>Monday</td> // create date </tr> <tr> // 2 row <t
<tbody>
<tr> // 1 row
<td>Item A</td> // name
<td>John</td> // owner
<td>Monday</td> // create date
</tr>
<tr> // 2 row
<td>Item B</td>
<td>Mary</td>
<td>Tuesday</td>
</tr>
</tbody>
我的解析函数现在是这样的
function getResultsList(rowResults){
// Here we get the correct set of rows
console.log(rowResults.length + ' rows found'); // this returns 2
// Main loop going through the rows
for(var i = 0; i < rowResults.value.length; i++) {
var row = rowResults.value[i];
console.log(row.value + ' -- row item');
// need to get the <td> inside row
}
}
非常感谢您的任何意见、建议、顾虑和提示。看看这是否适合您:
Page.getTableRows((rows) => {
rows.forEach((row) => {
client.elementIdElements(row.ELEMENT, 'tag name', 'td', (result) => {
console.log(`row td length ${result.value.length}`);
result.value.forEach((cell) => {
client.elementIdText(cell.ELEMENT, (text) => {
console.log(`cell text ${text.value}`);
})
});
});
});
});`
getTableRows的实现
getTableRows(callback) {
this.api.elements('css selector', \`${this.elements.table.selector} tbody tr\`, (data) => {
if(data.state === 'success'){
callback.call(this, data.value);
}
});
},
嘿,你找到解决办法了吗?我也在寻找一种方便的NighwatCHJ方法,在迭代之前找出我行中有多少个表单元格。我也在寻找这个问题的解决方案。。。
// name
browser.getText('css selector', 'tbody tr:nth-child('+i+') td:nth-child(1)')
// creator
browser.getText('css selector', 'tbody tr:nth-child('+i+') td:nth-child(2)')
// date
browser.getText('css selector', 'tbody tr:nth-child('+i+') td:nth-child(4)')
Page.getTableRows((rows) => {
rows.forEach((row) => {
client.elementIdElements(row.ELEMENT, 'tag name', 'td', (result) => {
console.log(`row td length ${result.value.length}`);
result.value.forEach((cell) => {
client.elementIdText(cell.ELEMENT, (text) => {
console.log(`cell text ${text.value}`);
})
});
});
});
});`
getTableRows(callback) {
this.api.elements('css selector', \`${this.elements.table.selector} tbody tr\`, (data) => {
if(data.state === 'success'){
callback.call(this, data.value);
}
});
},