nth-of-type css选择器

时间:2013-01-17 09:34:44

标签: selenium webdriver css-selectors selenium-webdriver

以下是我的HTML页面的片段:

<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 ='platinum'

的第三个td元素

我尝试的是driver.findElement(By.cssSelector("#platinum:nth-of-type(3)"));

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

对于如何使用id='platinum'

选择第三个td,两者都没有任何想法

3 个答案:

答案 0 :(得分:4)

有一个空的td没有ID,这会干扰:nth-of-type()计数。选择器的意思是“第n td个元素”,而不是“td元素的第id='platinum'个元素”。因此,具有该ID的第三个td实际上是整行中的第四个td

使用CSS选择器无法选择具有特定ID的第三个td元素。你应该使用XPath:

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

答案 1 :(得分:0)

首先,好吧。你不能有几个同名的id。你应该使用类。然后你可以使用相同的方法再次尝试,但使用类。 代码如下所示:

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

答案 2 :(得分:0)

添加,如果你在JQuery中尝试过这个,你可能会得到相同的结果。 “#id”可能是使用document.getElementByID()函数的快捷方式,它只返回带有ID的第一个元素,因为ID在给定文档中是唯一的。