问题
我正在尝试执行Katalon脚本。目的是检查该字段是否包含特定值。我使用循环浏览所有表。但是,我不明白该错误。
此外,错误并非总是同时发生。有时它发生在第一次循环迭代中,有时发生在第三次循环中。
版本
错误
Test Cases/test FAILED because (of)
org.openqa.selenium.StaleElementReferenceException: stale element
reference: element is not attached to the page document
...
*** Element info: {Using=xpath, value=.//td[4]/a}
商品代码
List<WebElement> elements = driver.findElements(By.xpath('//*[@id="id1"]//tr[td/a]'))
for (element in elements) {
...
if (!excelValue.equals(CustomKeywords.'datadriven.DataDriven.getValueFromExcel'('Sheet1', 'ColumName', 1))) {
element.findElement(By.xpath('.//td[4]/a')).click()
def webvalue = WebUI.getAttribute(findTestObject(object1), 'value')
WebUI.verifyEqual(webvalue.contains(excelValue), true)
WebUI.click(findTestObject(object2))
}
}
HTML代码
<div id='id1'>
<table>
<tbody>
<tr></tr>
<tr>
<td>value 1</td>
<td>value 2</td>
<td>value 3</td>
<td><a> ... </a></td> // a link here
<td>value 5</td>
...
</tr>
<tr></tr>
<tr>
<td>value 1</td>
<td>value 2</td>
<td>value 3</td>
<td><a> ... </a></td> // a link here
<td>value 5</td>
...
</tr>
<tr></tr>
...
</tbody>
</table>
</div>
已尝试
感谢您的帮助!
解决方案1
此问题归因于页面刷新后的引用。
我发现的解决方案是使用for循环创建对象。
List<WebElement> elements = driver.findElements(By.xpath('//*[@id="id1"]//tr[td/a]'))
for(int i = 1; i <= elements.size(); i++) {
WebElement element = driver.findElement(By.xpath('//*[@id="id1"]//tr[td/a][' + i + ']')) {
}