道歉,如果这是一个愚蠢的问题 - 我是新来硒。
我有一个网页,我测试的是有一个表中的一些超文本链接。 该HTML看起来是这样的:
<table>
<thead>
<tr>
<td><b>History</b></td>
<td><b>Attributes</b></td>
<td><b>Xml</b></td>
</tr>
</thead>
<tbody>
<tr>
<td><a href=link here>Show</a></td>
<td><a href=link here>Show</a></td>
<td><a href=link here>Show</a></td>
</tr>
</tbody>
</table>
我想测试每个“显示”链接的点击。 它们都具有相同的文字,所以我不能linktext的引用它们。 我已经与XPath引用它们,因此:
driver.findElement(By.xpath("//div[@id='content']/div/form/div/table[2]/thead/tr/td[1]").getText()
正确返回“历史记录”和
driver.findElement(By.xpath("//div[@id='content']/div/form/div/table[2]/tbody/tr/td[1]").getText()
正确的报税表“显示”。
所以,我认为:
driver.findElement(By.xpath("//div[@id='content']/div/form/div/table[2]/tbody/tr/td[1]")).click()
会点击第一列的“显示”链接。 但事实并非如此 - 什么也没有发生。
如果我做:
driver.findElement(By.linkText("Show")).click()
它点击第一个“秀”的链接,这是我所期望的。
我也可以这样做:
driver.findElement(By.xpath("//div[@id='content']/div/form/div/table[2].1.0")).click()
而这样的作品,一样
driver.findElement(By.xpath("(//a[contains(text(),'Show')])[2]")).click()
所以,综上所述,所有这些工作:
driver.findElement(By.linkText("Show")).click()
driver.findElement(By.xpath("//div[@id='content']/div/form/div/table[2].1.0")).click()
driver.findElement(By.xpath("(//a[contains(text(),'Show')])[1]")).click()
但这并不:
driver.findElement(By.xpath("//div[@id='content']/div/form/div/table[2]/tbody/tr/td[1]")).click()
为什么?