当前位置: 首页 > 知识库问答 >
问题:

使用循环导航到下一页时,Selenium出现陈旧异常

邹博裕
2023-03-14

列出所有国家和语言后,我想导航到下一页。下面是我正在使用的代码。通过这段代码,我获得了第一个国家的数据,之后我得到了陈旧的异常。

    int indexGroupRow = 0;  
    for (WebElement rowElement:listRows) 
    {
      if (rowElement.getAttribute("class").contains("dxgvGroupRow") 
          && rowElement.getAttribute("id").contains("Content_gvCountries_DXGroupRowExp"+indexGroupRow))
      {
           String t = rowElement.getText();
           System.out.println("Country: "+t);
      }
      if (rowElement.getAttribute("class").contains("dxgvDataRow") 
          && rowElement.getAttribute("id").contains("Content_gvCountries_DXDataRow"+indexGroupRow))
      {
           String t1 = rowElement.getText();
           System.out.println("Available Language: " + t1);
           List<WebElement> linkElement = rowElement.findElements(By.xpath("td[position()>1]"));
           for (WebElement er: linkElement)
           {
               er.findElement(By.xpath("//*[@id='Content_gvCountries_cell" 
                   + indexGroupRow 
                   + "_2_lnkSelectCountry_" 
                   + indexGroupRow + "']")).click();
           }
      }
      indexGroupRow++;
   }

组织。openqa。硒。StaleElementReferenceException:StaleElement引用:元素未附加到页面文档(会话信息:chrome=52.0.2743.116)(驱动程序信息:chromedriver=2.16.333243(0bfa1d3575fc1044244f21ddb82bf870944ef961),平台=Windows NT 6.1 SP1 x86\u 64)(警告:服务器未提供任何堆栈跟踪信息)命令持续时间或超时:26毫秒,用于记录此错误,请访问:http://seleniumhq.org/exceptions/stale_element_reference.html构建信息:版本:“2.53.1”,修订:“A36B8B1CD57287168E54B817830ADCE9B0158D”,时间:“2016-06-30 19:26:09”系统信息:主机:“WINJITLAPTOP96”,ip:“192.168.224.1”,操作系统。名称:“Windows 7”,操作系统。arch:“amd64”,操作系统。版本:“6.1”,java。版本:“1.7.0\u 67”会话ID:adf74ce205fd64d8b3d5c5064781985b驱动程序信息:org。openqa。硒。铬。ChromeDriver功能[{platform=XP,acceptSslCerts=true,javascriptEnabled=true,browserName=chrome,chrome={userDataDir=C:\Users\deepakv\AppData\Local\Temp\scoped_dir11036_1170},rotatable=false,locationContextEnabled=true,mobileEmulationEnabled=false,version=52.0.2743.116,takesHeapSnapshot=true,cssSelectorsEnabled=true,databaseEnabled=false,handlesAlerts=true,browserConnectionEnabled=false,webStorageEnabled=true,nativeEvents=true,hasTouchScreen=false,applicationCacheEnabled=false,takesScreenshot=true}]。反映NativeConstructorAccessorImpl。sun上的newInstance0(本机方法)。反映NativeConstructorAccessorImpl。sun上的newInstance(NativeConstructorAccessorImpl.java:57)。反映授权ConstructorAccessorImpl。java上的newInstance(DelegatingConstructorAccessorImpl.java:45)。lang.reflect。构造函数。org上的newInstance(Constructor.java:526)。openqa。硒。遥远的ErrorHandler。在org上创建throwable(ErrorHandler.java:206)。openqa。硒。遥远的ErrorHandler。throwIfResponseFailed(ErrorHandler.java:158)位于org。openqa。硒。遥远的RemoteWebDriver。在org上执行(RemoteWebDriver.java:678)。openqa。硒。遥远的RemoteWebElement。在org上执行(RemoteWebElement.java:327)。openqa。硒。遥远的RemoteWebElement。LoginTest上的getText(RemoteWebElement.java:179)。testLogin(LoginTest.java:61)已断开与目标VM的连接,地址:“127.0.0.1:23563”,传输:“socket”

共有1个答案

通骁
2023-03-14
for (WebElement er: linkElement)
       {
           er.findElement(By.xpath("//*[@id='Content_gvCountries_cell" + indexGroupRow + "_2_lnkSelectCountry_" + indexGroupRow + "']")).click();
       }

第一次单击后,您会丢失另一个链接,所以驱动程序无法单击linkElement列表中的第二个元素(因为它属于上一页)。您需要在每次单击后找到指向下一页的链接

 类似资料:
  • 我的WebDriver脚本只是在第1页(产品展示页)上找到元素,然后单击第1个元素,看看它是否工作,然后导航回产品展示页。 它抛出过时的元素引用错误,并且没有单击页面上的第二个元素,表示元素没有附加到页面。 代码是:

  • 我试图自动化一个场景,条件是我必须从下拉列表中选择一个选项,然后在它旁边有另一个下拉列表,我必须单击下一个下拉列表中的一个选项才能启用按钮。我尝试了代码,但它只单击第一个选项。显示错误为陈旧的元素引用:元素没有附加到页面文档中。请帮助。如果不太清楚,请告诉我。

  • all_divs包含我得到的所有链接。我需要点击它们,但当我尝试点击它们时,selenum会抛出一个陈旧的错误: “Selenium.Common.Exceptions.StaleElementReferenceException:消息:的元素引用已过时;该元素不再附加到DOM,不在当前帧上下文中,或者文档已刷新。”

  • 问题内容: 我在Selenium 2 Web驱动程序测试中具有以下代码,该代码在调试时有效,但是在构建中运行它时,大多数情况下会失败。我知道这一定与未刷新页面的方式有关,但不知道如何解决它,因此,任何有关我做错事情的指针都应该受到赞赏。我正在使用JSF primefaces作为我的Web应用程序框架。当我单击添加新链接时,会出现一个弹出对话框,其中包含一个输入框,我可以在其中输入日期,然后单击“保

  • 我正在写一个小的抓取程序,它导航到一个包含链接列表的页面, 它单击第一个链接,打开一个新页面,获取一些详细信息,然后导航回包含链接列表的页面,然后尝试查找下一个链接,但我得到: 组织。openqa。硒。StaleElementReferenceException:stale元素引用:元素未附加到页面文档 你知道我该怎么避免吗?