Selenide 如何只找到 child 个 SelenideElement

Selenide how to find only child of SelenideElement

我有 SelenideElement 并想找到特定元素 - 他的 child,但我得到的不是这个,而是另一个元素的 child。

在应用程序中,我有 table,即内部有 30 个 tbody。我对每个 div 进行迭代,并且我想对特定元素的每个迭代 child 进行迭代。而不是这个,我得到第一个元素的 child 。 IE。 我有以下元素:

<table>
 <tbody>Element 1
  <tr>Child
   <td>Child's child 1</td>
   <td>Child's child 2</td>
  </tr>
 </tbody>
 <tbody>Element 2
  <tr>Child
   <td>Child's child 1</td>
   <td>Child's child 2</td>
  </tr>
 </tbody>

我想从元素 2 中获取文本:Child 的 child 2 而不是这个,我从元素 1

得到 Child 的 child 2
SelenideElement element = $x("//table//tbody[2]/tr", i);
element.find(byXpath("//td[2]/div")).getText()

预期结果:我得到了元素2的内容,但是我得到了元素1的内容..

有两种解决方法(都可以):

  1. 通过$("tbody:nth-child(2)").find(By.cssSelector("tr"));

  2. 导航到子元素
  3. 使用.get()函数:$$("tbody").get(1).find(By.cssSelector("tr")).getText();

Get 函数旨在在集合元素中导航。因此,如果您有 10 个 tbody,您可以轻松地浏览其中的任何一个,而无需在选择器中指定它。