0

如果我有如下所示的标记,我想从其父 div 中单独访问第 8 个 div 并使用 for 循环打印其 id。

<div class=abc>
  <div id="parent">
    <div id="one">
       <div id=........</div>
       <div id=........</div>
    <div id="two">
       <div id=........</div>
       <div id=........</div>
    <div id="three">
       <div id=........</div>
       <div id=........</div>
    <div id="four">
       <div id=........</div>
       <div id=........</div>
    <div id="five">
       <div id=........</div>
       <div id=........</div>
    <div id="six">
       <div id=........</div>
       <div id=........</div>
    <div id="seven">
       <div id=........</div>
       <div id=........</div>
    <div id="eight">
       <div id=........</div>
       <div id=........</div>
  </div>
</div>

但是,当我打印(在 Java 中)时,八个 div 下的每个 div id 也在打印。如何在一个 for 循环中只获取每个八个 div 的 id?我正在使用 selenium Web Driver 自动化网站。我试过这样:

List<WebElement> eightdivs = driver.findElements(By.cssSelector("#abc div:nth-child(n)"));
     for(WebElement eachdiv : eightdivs)
      {
         System.out.println(eachdiv.getAttribute("id"));
      }
4

1 回答 1

1

选择器:

#abc div:nth-child(n)

选择div#abc. 该空间是一个后代选择器,这意味着父选择器可以是其中的#abc任何东西。这意味着您的所有divs 都应该被选中,因为它们都是其父母的第 n 个孩子(尽管您的父元素是.abcor #parent,但不是#abc,因此您使用的选择器实际上根本不会返回任何内容)。

您应该更改#abc为,直接在 下#parent使用子选择器,并删除该部分,因为它是多余的:>#parent:nth-child(n)

List<WebElement> eightdivs = driver.findElements(By.cssSelector("#parent > div"));

for (WebElement eachdiv : eightdivs)
{
    System.out.println(eachdiv.getAttribute("id"));
}
于 2013-02-12T06:45:27.210 回答