webDriver中的分页显示过时元素引用异常

时间:2013-09-25 11:42:41

标签: java eclipse selenium-webdriver junit4

环境:Eclipse,Chrome,Java

我正在处理应用程序中的分页测试用例。我尝试了一些代码,但它只移动到第2页。

代码:

List<WebElement> allpages = driver.findElements(By.xpath("//div[@class='pagination']//a"));
    System.out.println(allpages.size());
    if(allpages.size()>0)
    {
        System.out.println("Pagination exists");
        for(int i=0; i<allpages.size(); i++)
        {
            Thread.sleep(3000);
            allpages.get(i).click();
            driver.manage().timeouts().pageLoadTimeout(5, TimeUnit.SECONDS);
            //System.out.println(i);
        }
    }
    else
    {
        System.out.println("Pagination doesn't exists");
    }
}

显示的大小为12.问题是它仅向上移动到第二页,然后显示StaleElementReference的错误

这是相同分页的HTML代码。 HTML代码:

<div id="page-navigation" class="pull-right">
<div id="303b171e-5a26-e456" class="flex-view">
<div class="pagination">
<ul>
<li class="">
<a href="#" data-value="0">«</a>
</li>
<li class="" data-value="0">
<a href="#" data-value="0">1</a>
</li>
<li class="" data-value="1">
<a href="#" data-value="1">2</a>
</li>
<li class="active" data-value="2">
<a href="#" data-value="2">3</a>
</li>
.....

1 个答案:

答案 0 :(得分:1)

单击其中一个分页链接后加载新页面时,所有页面WebElements不再有效,需要再次找到。您必须在for循环中再次调用allpages = driver.findElements(By.xpath("//div[@class='pagination']//a"));,以便为每个新页面获取新的引用。