Clicando em um link de hipertexto usando o XPath
Desculpas se esta é uma pergunta idiota - eu sou novo no Selenium.
Eu tenho uma página da web que estou testando que tem alguns links de hipertexto em uma tabela. O HTML se parece com isso:
<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>
Quero testar um clique em cada um dos links "Mostrar". Todos eles têm o mesmo texto, então não posso referenciá-los por linktext. Eu tenho feito referência a eles pelo XPath, para que:
driver.findElement(By.xpath("//div[@id='content']/div/form/div/table[2]/thead/tr/td[1]").getText()
retorna corretamente "Histórico" e
driver.findElement(By.xpath("//div[@id='content']/div/form/div/table[2]/tbody/tr/td[1]").getText()
retornos corretos 'Show'.
Então eu pensaria que:
driver.findElement(By.xpath("//div[@id='content']/div/form/div/table[2]/tbody/tr/td[1]")).click()
clicaria no link "Mostrar" na primeira coluna. Mas isso não acontece - nada acontece.
Se eu fizer:
driver.findElement(By.linkText("Show")).click()
clica no primeiro link "Show", que é o que eu espero.
Eu também posso fazer:
driver.findElement(By.xpath("//div[@id='content']/div/form/div/table[2].1.0")).click()
e isso funciona, assim como
driver.findElement(By.xpath("(//a[contains(text(),'Show')])[2]")).click()
Então, para resumir, tudo isso funciona:
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()
mas isso não acontece:
driver.findElement(By.xpath("//div[@id='content']/div/form/div/table[2]/tbody/tr/td[1]")).click()
Por quê?