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

问题描述 投票:0回答:1

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

//表的分页

    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)

java selenium-webdriver pagination
1个回答
1
投票

当元素在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();
            }
          }               
      }

  }
© www.soinside.com 2019 - 2024. All rights reserved.