所以我有一个包含250行的表,我想从一列获取所有值并检查它们是否符合所需条件:
const rows = browser.elements(selector..);
const numbers = [];
rows.value.forEach(cellData => {
const value = browser.elementIdText(cellData.value.ELEMENT).value;
// some logic to check if the value is ok
numbers.push(value);
});
// check if all numbers are sorted correctly
,但大部分时间它都在线上失败(它显示为stale element reference: element is not attached to the page document
):
const value = browser.elementIdText(cellData.value.ELEMENT).value;
我尝试了cellDate.getText()
,但是有一个Java套接字错误,有人可以帮忙吗?我假设选择器没有按照指示连接到页面,但是我无法弄清楚如何只是循环遍历它们。
答案 0 :(得分:3)
我之前有一个类似于你的方法的解决方案,虽然它似乎有用,但我认为你的代码可能会稍微调整一下以获得你想要的东西。我从来没有在elementIdText调用结束时链接很多运气。
步骤1:抓取所有数据(browser.elements或浏览器。$$):
let cellData = browser.$$('selector that matches desired Column Data')
上面返回一个JSON WebElements数组。如您所知,您可以正确地遍历数组,查看"值"。如果您使用与您要查找的列值匹配的选择器,则应将所有类似数据存储在element.value.ELEMENT
中。
步骤2:遍历cellData数组并使用ELEMENT
browser.elementIdText()
的文本值
cellData.forEach((elem) => {
let number = browser.elementIdText(elem.value.ELEMENT)
//elementIdText also returns a JSON WebElement so it's number.value
if(number.value === <condition>) {
console.log('number looks good')
//perform other on value logic
}
})
//perform other logic still in loop EX: array.push()
})
我希望这有帮助!如果你遇到任何障碍,请告诉我!