【问题标题】:Stale Element Exception Java Selenium陈旧元素异常 Java Selenium
【发布时间】:2017-05-28 08:22:06
【问题描述】:

我正在尝试抓取旅行顾问的评论。一些评论具有more 链接,单击该链接会显示评论的整个文本。但是,当我使用 Selenium 模拟点击时,DOM 会发生变化,这给了我Stale Element Exception。我试图通过再次获取 DOM 来解决它,但错误仍然存​​在。我哪里错了?

List reviews = driver.findElements(By.className("review"));
for (int x = 0; x < reviews.size(); x++) {
    WebElement element = driver.findElements(By.className("review")).get(x);
    try {
        if (element.findElements(By.className("expandLink")).size() > 0)
            if (element.findElement(By.className("expandLink")).findElement(By.className("ulBlueLinks")).getText().startsWith("More")) {
                element.findElement(By.className("ulBlueLinks")).click();
                if (driver.findElements(By.className("ui_overlay")).size() > 0)
                    driver.findElement(By.className("ui_overlay")).findElement(By.className("ui_close_x")).click();
            }
    } catch (Exception e) {
        System.out.println(e.getMessage());
    }
    while (driver.findElements(By.className("ui_close_x")).size() > 0)
        driver.findElement(By.className("ui_close_x")).click();
    element = driver.findElements(By.className("review")).get(x);
    String rating = element.findElement(By.className("ui_bubble_rating")).getAttribute("class").split(" ")[1].replaceAll("bubble_", "");
    String review = element.findElement(By.className("entry")).getAttribute("innerHTML").replaceAll("<[^>]*>", "").replaceAll("[,\n]", " ");

【问题讨论】:

    标签: java selenium web-crawler element expand


    【解决方案1】:

    我遇到了同样的事情,这是由于有时硒无法访问的 DOM 元素问题导致异常。 我提出了这个解决方案,它对我有用。

    http://darrellgrainger.blogspot.in/2012/06/staleelementexception.html

    【讨论】:

    • 您好,感谢您的帮助。但是,错误不是因为点击,而是点击后的以下语句,String rating... onwards 语句。
    【解决方案2】:

    您是否考虑过使用@FindBy 注解来声明 WebElements?使用此注解,每次调用 WebElement 时,驱动程序都会在 DOM 中搜索该 WebElement。

    这种方法意味着您只需声明每个元素一次,并存储对 WebElement 的引用。它还允许您使用页面对象模式,这将使您在页面和测试逻辑之间进行清晰的分离。

    这里有一篇文章:

    https://www.toptal.com/selenium/test-automation-in-selenium-using-page-object-model-and-page-factory

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-04-04
      • 1970-01-01
      • 2021-10-02
      • 1970-01-01
      • 1970-01-01
      • 2013-04-16
      • 1970-01-01
      相关资源
      最近更新 更多