2013-01-17 68 views
3

下面是我的HTML頁面的一個片段:第n-的型CSS選擇

<td id="Platinum" align="center" width="16%"> 
    <div></div> 
    <a>link1</a> 
</td> 
<td></td> 
<td id="Platinum" align="center" width="16%"> 
    <div></div> 
    <a>link2</a> 
</td> 
<td id="Platinum" align="center" width="16%"> 
    <div></div> 
    <a>link3</a> 
</td> 

在這裏我要選擇具有ID =「白金」

第三TD元素是我的嘗試是driver.findElement(By.cssSelector("#platinum:nth-of-type(3)"));

driver.findElement(By.cssSelector("td[id='platinum']:nth-of-type(3)"));

兩個不工作如何選擇與id='platinum'

+0

那麼什麼瀏覽器和什麼版本的硒? – Arran

+1

爲什麼他們都共享相同的ID? – BoltClock

+0

@Arran:我使用Firefox 11.0和Selenium 2.28.0 –

回答

3

有一個空td不具有的ID,它與:nth-of-type()計數干擾。選擇器意味着「第n個td元素」,而不是「第012個td元素與id='platinum'」。因此使用該ID的第三個td實際上是整行中的第四個td

使用CSS選擇器不可能選擇具有特定ID的第三個td元素。你應該使用XPath來代替:

driver.findElement(By.xpath("//td[@id='Platinum'][3]")); 
+2

當然,我敢肯定。你有什麼問題? – BoltClock

+0

By.cssSelector(td [id ='platinum']:n-type-type(1))正在工作正常 –

+0

這是因爲它是第一個'td',它有這個ID。但這不是你在問題中尋找的元素,所以我不確定你的意思。 – BoltClock

0

那麼首先第三TD任何想法。你不能有幾個同名的ID。你應該使用類。然後你可以使用相同的方法再次嘗試,但使用類。 該代碼將是這樣的:

<td class="Platinum" align="center" width="16%"> 
+0

感謝您的快速回答。你說的是寫,但我測試以下網址http://www.franchising.com/find_a_franchise/這裏的項目有上面提到的HTML相同的ID –

0

我想補充,如果你試圖在此JQuery的,你可能會得到相同的結果。 「#id」可能使用document.getElementByID()函數的快捷方式,它只會返回帶有ID的第一個元素,因爲ID在給定文檔中是唯一的。