Selenium-父元素在等待后加载,但子元素未完全加载

问题描述 投票:0回答:2
<table>
  <tr id="tr1">
    <td id="td1">1</td>
    <td id="td2">2</td>
    <td id="td3">3</td>
    <td id="td4">4</td>
    <td id="td5">5</td>
    <td id="td6">6</td>
    <td id="td7">7</td>
    <td id="td8">8</td>
    <td id="td9">9</td>
    <td id="td10">10</td>
  </tr>
  <tr id="tr2">
    <td id="td1">11</td>
    <td id="td2">22</td>

  </tr>
</table>

我正在使用',检索'tr1'元素,>

WebDriverWait wait = new WebDriverWait(driver, 5);
tableHeaderRow = wait.until(ExpectedConditions.presenceOfElementLocated(By.id("tr1"))); 

然后,我得到'td'列表并遍历td元素。

List<WebElement> headersList = tableHeaderRow.findElements(By.tagName("td"));
System.out.println("Size :" + headersList.size()); //10

列表大小为10。

headersList.forEach(td -> System.out.println(td.getTagName()));

但是当我遍历列表时,遍历4或5个元素后会得到StaleElementReferenceException。

org.openqa.selenium.StaleElementReferenceException: stale element reference: element is not attached to the page document.

问题是,即使加载了'tr1',当迭代发生时,tds也不会完全加载。等待只是检查提到的父元素(tr1)的加载。

是否有适当的方法来处理此问题。等待直到父元素和所有子元素都被加载。

] >>

尝试使用.visibilityOfAllElementsLocatedBy等待元素,并将其收集在列表中。

1 2 3 4

使用此xpath://tr[@id='tr1']//td

java selenium selenium-webdriver xpath css-selectors
2个回答
0
投票

尝试使用.visibilityOfAllElementsLocatedBy等待元素,并将其收集在列表中。


0
投票

要确保同时加载parent

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