当前位置: 首页 > 知识库问答 >
问题:

硒 2.0 网络驱动程序: 元素不再附加到使用 Java 的 DOM 错误

欧阳嘉
2023-03-14

我正在使用PageObject/PageFactory设计模式来实现UI自动化。使用Selenium2.0WebDriver.JAVA,我随机得到错误:org.openqa.Selenium。StaleElementReferenceException:当我尝试以下逻辑时,元素不再附加到DOM:

@FindBy(how = HOW.ID, using = "item")
private List<WebElement> items

private void getItemThroughName(String name) {
    wait(items);

    for(int i = 0; i < items.size(); i++) {
        try {
            Thread.sleep(0500);
        } catch (InterruptedException e) { }

        this.wait(items);
        if(items.get(i).getText().contains(name)) {
            System.out.println("Found");
            break;
        }
    }
}

错误随机发生在if语句行,正如您所看到的,我已经尝试了一些方法来避免这种情况,比如睡眠少量时间,或者再次等待元素,这两种方法都不是100%有效

共有1个答案

曾永新
2023-03-14

首先,如果你真的在by上有多个ID为“item”的元素,你应该记录一个bug,或者与网站上的开发人员讨论解决这个问题。ID应该是唯一的。

因为对问题的评论已经暗示了你应该在这种情况下使用ExplicitWait:

private void getItemThroughName(String name) {
    new WebDriverWait(driver, 30)
               .until(ExpectedConditions.presenceOfElementLocated(
                 By.xpath("id('item')[.='" + name + "']")
               ));
    // A timeout exception will be thrown otherwise
    System.out.println("Found");
}
 类似资料:
  • 下面是我为firefox浏览器初始化的selenium web驱动程序。 尽管我给出了隐式等待,但我没有等待元素。它会立即抛出not found异常。如果我放那么它工作正常,没有任何问题。但是把现在测试用例包含更多线程的任何地方。sleep比实际的测试用例代码低。有人能给我建议正确的方法吗?

  • 我有一个网页,其中包含一些JavaScript并执行一些Ajax调用。当尝试使用Selenium测试它时,我随机得到“PHPUnit_Extensions_Selenium2TestCase_WebDriverException:Element不再附加到DOM”消息,可能是5次运行中的一次。 现在我意识到了Ajax调用和测试引擎之间的竞争问题,我已经采取了措施来保护它,但仍然存在一些问题。我的场景

  • 我的目标是使用硒为Python自动在线账单支付。 使用以下代码使用 Web 驱动程序登录成功: 登录后,一个新的页面加载,我的下一步是点击一个链接。代码: 什么也没发生。没有导航到该法案 但仍然没有。我还应该尝试其他什么? 错误: Traceback(最近调用的最后一次):File"/home/队长/. PyCharmEdu30/config/划痕/scratch_1.py",第12行,在clic

  • 我正在使用Java和Firefox和Firebug,我无法找到第二页上的元素。例如,如果我登录gmail,我就无法找到并点击已发送邮件或下一页上的任何其他按钮。 我尝试使用xpath(绝对值和相对值),但每次我都得到一个错误,即找不到元素。使用代码,我可以成功登录,但一旦页面加载,就会出现错误“元素未找到”。 请提出任何解决方案

  • 我在eclipse中使用SeleniumWebDriver和TestNG。问题是页面在某些数据的中途重新登录,并且重新加载的时间是灵活的,这就是为什么我不能应用显式等待时间。我想让webdriver等待,直到重新加载完成。 我正在尝试通过此代码执行此操作……但它不起作用。

  • 我对自动化测试完全陌生。在参考了一些教程之后,我创建了一个自动测试用例。我尝试自动化的测试用例是在单击表的一个标题后检查排序是否正常工作。 我的自动测试用例失败,出现以下异常: 以下是代码: 例外情况来自此行: 有人能告诉我isse的原因以及如何解决吗? 非常感谢您的帮助