如何使用java中的selenium Web驱动程序中的分页搜索表中的元素

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何使用java中的selenium Web驱动程序中的分页搜索表中的元素相关的知识,希望对你有一定的参考价值。

嗨我在我的脚本中遇到问题。我需要验证分页表中是否存在元素。我写下面的代码,但它显示错误,并且循环不起作用。任何人都可以帮助我在我的脚本?这是我的代码和我得到的错误:

//表的分页

    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)

答案

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

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

  }

以上是关于如何使用java中的selenium Web驱动程序中的分页搜索表中的元素的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 selenium Web 驱动程序 python 在 html 中的标签之间添加标签

我已使用 selenium web 驱动程序 JAVA 将产品添加到手推车中,然后将其从购物车中删除。我如何断言产品是不是被移除?

Selenium Web 驱动程序 - 在循环中等待 (Java)

Web 应用程序中的 Selenium Web 驱动程序获取用户输入

Selenium 使用远程 Web 驱动程序下载文件

Selenium:如何使 Web 驱动程序在执行另一个测试之前等待页面刷新