如何在SeleniumWeb驱动程序和java中使用分页搜索表中的元素

如何在SeleniumWeb驱动程序和java中使用分页搜索表中的元素,java,selenium-webdriver,pagination,Java,Selenium Webdriver,Pagination,您好,我的脚本遇到问题。我需要验证分页表中是否存在元素。 我写了下面的代码,但它显示错误,而且循环不工作。有人能帮我写脚本吗? 这是我的代码和我得到的错误: //表的分页 List<WebElement> allpages=d.findElements(By.xpath("//div[@id='reportPagination_wrapper']//a")); System.out.println("Total page : "+allpages.size());

您好,我的脚本遇到问题。我需要验证分页表中是否存在元素。 我写了下面的代码,但它显示错误,而且循环不工作。有人能帮我写脚本吗? 这是我的代码和我得到的错误:

//表的分页

    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();
            }
            }               
        }

        }
失败:搜索基于飞行否

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

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();
            }
          }               
      }

  }

感谢您的工作。但再次显示错误作为索引超出范围。为什么会这样显示?因为当您再次获取元素时,可能会出现一个元素被删除的情况,因此大小减少了一个。
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();
            }
          }               
      }

  }