2013-02-12 27 views
0

如果我有一个像下面显示的标记,我想单独访问每个第八个div从它的父div并使用for循环打印它的id。如何获得子div标识的,这是直接在一个父div下的孩子?

<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 ID下的每个八个div的也printing.How只得到每个8周div的的ID在一个for循环的? 我正在使用硒Web驱动程序自动化网站。我想是这样的:

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

Java或JavaScript的?它们不是同一种语言。其他既有Java名称又没有共同之处。 – 2013-02-12 04:33:50

+0

你是指javascript吗? – 2013-02-12 04:34:02

+0

[你有什么尝试?](http://www.whathaveyoutried.com/) – 2013-02-12 04:34:10

回答

0

的选择:

#abc div:nth-child(n) 

选择所有div元素是其父母的第n个子,内#abc。该空间是后代选择器,意味着父代可以是#abc或其中的任何内容。这意味着所有div S的关系来选择,因为他们是父母的所有孩子第n(虽然你的父母元素是.abc#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")); 
}