Нажав на гипертекстовую ссылку, используя XPath
Извиняюсь, если это глупый вопрос - я новичок в Selenium.
У меня есть тестируемая веб-страница с несколькими гипертекстовыми ссылками в таблице. 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>
Я хочу проверить клик по каждой из ссылок «Показать». Все они имеют одинаковый текст, поэтому я не могу ссылаться на них по тексту ссылки. Я ссылаюсь на них с помощью 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()
Почему?