如何使用Java在Selenium Web Driver中使用分页来搜索表中的元素

时间:2019-02-21 10:05:15

标签: java selenium-webdriver pagination

嗨,我的脚本遇到问题。我需要验证分页表中是否存在某个元素。 我写下面的代码,但它显示错误并且循环也无法正常工作。有人可以在我的脚本中帮我吗? 这是我的代码,也是我得到的错误:

//表的分页

    List<WebElement> allpages=d.findElements(By.xpath("//div[@id='reportPagination_wrapper']//a"));
    System.out.println("Total page : "+allpages.size());

    if(allpages.size()>0)
    {
        System.out.println("pagination exist");

        //click on pagination link

        for(int i=0;i<=allpages.size();i++)
        {
            if(allpages.contains(flight_no))
            {
                System.out.println("record exists");

                break;
            }

            else
            {
                System.out.println("eleenmt no");
                allpages.get(i).click();
            }
            }               
        }

        }

输出:总页数:13

   pagination exist

   eleenmt no
   eleenmt no

失败:search_basedon_flightno

错误: org.openqa.selenium.StaleElementReferenceException:陈旧元素引用:元素未附加到页面文档   (会话信息:chrome = 71.0.3578.98)

1 个答案:

答案 0 :(得分:1)

StaleElementReferenceException当元素在dom中不再可用或变得过时时出现。为了更正它,您需要再次获取元素,然后对其进行操作。
例如,您的情况应该是:

List<WebElement> allpages=d.findElements(By.xpath("//div[@id='reportPagination_wrapper']//a"));
    System.out.println("Total page : "+allpages.size());

    if(allpages.size()>0)
    {
        System.out.println("pagination exist");

        //click on pagination link

        for(int i=0;i<=allpages.size();i++)
        {
            allpages=d.findElements(By.xpath("//div[@id='reportPagination_wrapper']//a"));
            if(allpages.contains(flight_no))
            {
                System.out.println("record exists");

                break;
            }

            else
            {
                System.out.println("eleenmt no");
                allpages.get(i).click();
            }
          }               
      }

  }