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

Selenium问题:陈旧的元素参考:元素未附加到页面文档-单击预期文本后

洪研
2023-03-14

我在执行selenium web测试时遇到了一个问题。在点击并进入下一页(这是正确的)后,我一直得到一个过时的元素引用错误


WebDriver driver = DriverFactory.getWebDriver()

WebElement PositionTable = driver.findElement(By.xpath('//td[2]/table/tbody/tr/td/table'))

List<WebElement> Rows = PositionTable.findElements(By.tagName('tr'))

println('No. of rows: ' + Rows.size())


table: for (int i = 0; i < Rows.size(); i++) {
    
    List<WebElement> Cols = Rows.get(i).findElements(By.tagName('td'))
    
   for (int j = 0; j < Cols.size(); j++) {
       if (Cols.get(j).getText().equalsIgnoreCase(ExpectedPosition)) {
           
           
          Cols.get(j).findElement(By.tagName('a')).click()
          WebUI.delay(5)

          table: break
          
          } 
          }
            
          }

共有1个答案

魏鸿哲
2023-03-14
WebElement PositionTable = driver.findElement(By.xpath('//td[2]/table/tbody/tr/td/table'))

List<WebElement> Rows = PositionTable.findElements(By.tagName('tr'))

println('No. of rows: ' + Rows.size())

Int countrow = 0 


table:     while(countrow<Rows.size) {
++countrow
PositionTable = driver.findElement(By.xpath('//td[2]/table/tbody/tr/td/table'))

Rows = PositionTable.findElements(By.tagName('tr'))
    
    List<WebElement> Cols = Rows.get(i).findElements(By.tagName('td'))
    Int countcol = 0 
    
   whil(countcol < Cols.size()) {
       ++countcol
       Cols = Rows.get(i).findElements(By.tagName('td'))
       if (Cols.get(j).getText().equalsIgnoreCase(ExpectedPosition)) {
           
           
          Cols.get(j).findElement(By.tagName('a')).click()
          WebUI.delay(5)

          table: break
          
          } 
          }
            
          }
 类似资料:
  • 我有一个下拉列表,我第一次能够按索引选择元素。当我第二次尝试选择元素时,它会抛出陈旧的元素引用错误。我尝试了try catch block,显式等待,但没有任何效果。

  • 问题内容: 我试图了解为什么在尝试显示从网站上获取的项目时会出现错误。我也在浏览器中使用google chrome。 还有我代码的其他部分 每当我使用“ chromeDriver.FindElement(By.Id(“ something.link.text”))。Click();“ ,它给出一个错误。我无法显示提取的数据。 在错误消息中,它说“ OpenQA.Selenium.StaleElem

  • 我得到了这个错误,当我试图点击一个下拉ID: 我想用这个代码: 有没有什么方法可以防止无限循环,或者更好的方法在我得到这个异常后点击id?

  • 我正在构建一个刮网站的c#应用程序。我认为这个问题是因为页面在一次又一次提交表单后被重新加载而导致的。我必须从选择列表中选择一个选项,然后按回车键,等待页面重新加载新结果。但是重新加载后会导致此错误; 我的代码是这样的; 我也尝试过类似的东西; 时间不多了,我有个例外,时间不多了。

  • 我有一个客户想要从网站上抓取一些信息。循环第一次工作,但第二次发生错误。有什么帮助吗?我也不建议去实际的网站,它很粗略。 代码: 错误: selenium.common.exceptions.StaleElementReferenceException:消息:陈旧的元素引用:元素未附加到页面文档 完全终端回溯: 完成回溯(最近的最后一次调用):文件"c:\用户\Heage\Coding\自由职业\

  • 所以我正在尝试制作一个在flickr上运行的程序,我已经准备好了所有的东西,直到cookies弹出,它打败了我。 我正在尝试切换到这个iframe,这样我就可以使用“全部接受”按钮。然而,iframe的ID是动态的,所以为了避免这个问题,我尝试以标题为目标。 但是我现在收到了这个错误消息。 我已经尝试添加了10秒的等待时间来给它加载时间,我知道错误的原因是元素不再连接到DOM,但我不知道要使用什么