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

如何处理Element不再附加到页面对象中的DOM?

邓兴为
2023-03-14

我试图使用页面对象测试网站,当我执行我的脚本,我得到的元素不再附加到DOM(Selenium::WebDriver::Error::StaleElementReduce ceError)错误消息间歇调用函数

我该如何克服这个问题,如果有任何建议?

共有3个答案

贺光华
2023-03-14

使用页面工厂初始化页面对象。它将创建实际元素的惰性代理。

public class PageObject {
   @FindBy(id="someID")
   private WebElement someElement;

   public void doSomething() {
      someElement.click();  
   }
}

PageObject po = PageFactory.initElements(driver, PageObject.class);

如果您不将@CacheLookup与@FindBy一起使用,则每当您使用某些元素时,它都会使用查找器查找此元素。

文寒
2023-03-14

当您正在与之交互的元素在DOM中更改时,您会收到此异常。如果您捕获WebElement对象中的元素,然后进一步使用该对象来执行一些单击/键入,并且如果在对该元素的引用更改之间,则您正在使用的对象将不再引用正确的定位器。尝试在与元素交互时使用元素定位器,而不是先在WebElement对象中捕获它,然后进一步使用该对象。

例如代替做:

WebElement e = driver.findElement(By.id("someID"));
e.click();
.
.
.
e.click();

尝试使用:

driver.findElement(by.id("someID")).click();
.
.
.
driver.findElement(by.id("someID")).click();

否则,您可以使用Vinay的方法

朱炜
2023-03-14

我们在项目中也遇到了同样的问题。克服此问题的一种方法是在导致此问题的方法中使用 try catch 块。在 catch 块内,再次重新执行相同的代码行/另一种方法。这将解决该问题。

 类似资料:
  • 问题内容: 我有这样的物体 我需要附加更多数据 所以最终数据应该像这样 我尝试了以下代码。但这不是附加的。 Pluker链接:http ://plnkr.co/edit/gist:3510140 问题答案:

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

  • 可以在页面对象模型中处理动态元素吗? 例子: 我想从测试方法中传递输入的name属性值。

  • 线程“main”org.openqa.selenium.StaleElementReferenceException中的异常:stale的元素引用:该元素不再附加到DOM或页面已刷新

  • 我正在探索AWS Kinesis的数据处理要求,该要求用基于流的方法取代旧的批处理ETL处理。 该项目的关键要求之一是在以下情况下重新处理数据的能力: 发现并修复错误,然后重新部署应用程序。数据需要从一开始就重新处理 这里很好地记录了Kafka-https://cwiki.apache.org/confluence/display/KAFKA/Kafka流数据(重新)处理场景的场景。 我在Kine

  • 我正在使用Selenium 2/WebDriver实现自动化。我有一个表,正在尝试选择其中的一行。当测试运行时,我可以看到该行变得突出显示,就像单击了它一样,但我立即得到: " org . open QA . selenium . staleelementreferenceexception:元素不再附加到DOM " 错误和测试失败。 代码如下: 我已经把一个线程睡眠(2000)放在列表名称()操