我正在使用selenium的实习框架,我想执行一个循环来查找表中的元素。循环找到每个元素并将它们保存在数组中,之后将获取元素以便稍后进行操作。
接下来的想法是:
browser.wait(2000)
.then(function () {
while (true) {
ifHasElements=browser.isDisplayed("/html/body/div[1]/div[5]/div[3]/div/div[3]/div[1]/table[2]/tbody/tr["+contRowsTable+"]").end()
if (ifHasElements) {
console.log("into if")
browser.elementByXPath("/html/body/div[1]/div[5]/div[3]/div/div[3]/div[1]/table[2]/tbody/tr["+contRowsTable+"]/td[1]")
.clickElement()
.end()
rows[contRowsTab]=browser.elementByXPath("/html/body/div[1]/div[5]/div[3]/div/div[3]/div[1]/table[2]/tbody/tr["+contRowsTable+"]")
} else {
break
}
contRowsTab++;
contRowsTable++;
}
})
我不知道我是否执行循环并同时获取then块中的元素。有人可以帮助我,非常感谢..
答案 0 :(得分:2)
尝试类似:
var visibleRows = [];
var stopStoring = false;
return browser
.wait(2000)
.then(function () {
return this.parent
// find all the rows
.findAllByXpath('/html/body/div[1]/div[5]/div[3]/div/div[3]/div[1]/table[2]/tbody/tr')
.then(function (rows) {
// store the visible rows until the first non-visible row is encountered
return rows.reduce(function (chain, row) {
return chain.then(function () {
return row
.isVisible()
.then(function (isVisible) {
if (!isVisible) {
stopStoring = true;
}
if (isVisible && !stopStoring) {
visibleRows.push(row);
}
});
});
}, this.parent);
})
.then(function () {
// for each visible row, click the first td in the row
return visibleRows.reduce(function (chain, row) {
return chain
.findByXpath('./td[1]')
.click()
.end();
}, this.parent);
});
});
在这段代码中,我首先找到并存储第一个连续的可见行。然后,对于每一行,我单击行中的第一个表格单元格。