2013-02-12 24 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")); 
}