Klicken Sie mit XPath auf einen Hypertext-Link

Entschuldigung, wenn dies eine dumme Frage ist - ich bin neu in Selen.

Ich habe eine Webseite, die ich teste und die einige Hypertext-Links in einer Tabelle enthält. Das HTML sieht so aus:

<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>

Ich möchte einen Klick auf jeden der 'Show'-Links testen. Sie haben alle den gleichen Text, daher kann ich sie nicht per Linktext referenzieren. Ich habe sie von XPath referenziert, so dass:

driver.findElement(By.xpath("//div[@id='content']/div/form/div/table[2]/thead/tr/td[1]").getText()

gibt 'History' und korrekt zurück

driver.findElement(By.xpath("//div[@id='content']/div/form/div/table[2]/tbody/tr/td[1]").getText()

korrekte Rückgabe 'Show'.

Ich würde also denken, dass:

driver.findElement(By.xpath("//div[@id='content']/div/form/div/table[2]/tbody/tr/td[1]")).click()

Klicken Sie in der ersten Spalte auf den Link "Anzeigen". Aber es passiert nichts.

Wenn ich mache:

driver.findElement(By.linkText("Show")).click()

es klickt auf den ersten 'Show'-Link, was ich erwarte.

Ich kann auch:

driver.findElement(By.xpath("//div[@id='content']/div/form/div/table[2].1.0")).click()

und das funktioniert genauso

driver.findElement(By.xpath("(//a[contains(text(),'Show')])[2]")).click()

Also, um es zusammenzufassen, all diese Arbeiten:

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()

aber das tut nicht:

driver.findElement(By.xpath("//div[@id='content']/div/form/div/table[2]/tbody/tr/td[1]")).click()

Warum?

Antworten auf die Frage(3)

Ihre Antwort auf die Frage