如果我有如下所示的标记,我想从其父div中单独访问每个eigth 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)时,8个div中的每一个下面的每个div id也都在打印。如何在一个for循环中只得到每个8个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"));
}
答案 0 :(得分:0)
选择器:
#abc div:nth-child(n)
在div
中选择所有#abc
元素作为其父级的第n个子元素。空间是后代选择器,这意味着父级可以是#abc
或其中的任何内容。这意味着所有应该选择div
,因为他们是父母的第n个孩子(尽管您的父元素是.abc
或#parent
,但不是#abc
,所以你使用的选择器实际上会返回 nothing 。
您应该将#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"));
}