错误:陈旧元素引用:元素未附加到页面文档

时间:2018-07-30 09:05:40

标签: java selenium groovy katalon-studio

问题

我正在尝试执行Katalon脚本。目的是检查该字段是否包含特定值。我使用循环浏览所有表。但是,我不明白该错误。

此外,错误并非总是同时发生。有时它发生在第一次循环迭代中,有时发生在第三次循环中。

版本

  • 卡塔隆5.4
  • Chrome 67

错误

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 + ']')) {
}

0 个答案:

没有答案