使用哪个定位器?我正在使用xpath但无法正常工作

时间:2019-09-08 03:18:18

标签: selenium-webdriver

我的代码使用哪个定位器?

我尝试使用Xpath,但由于某种原因xpath无法正常工作。 xpath:

//*[@id="ext-gen25"]/table/tbody/tr[1]/td[2]/a

driver.findElement(By.xpath("//*[@id='ext-gen25']/table/tbody/tr[1]/td[2]/a")).click();

<a href="repopulateUser.jsp?authAuthSessionId=6956CCD74D7E4BFEA867561228528EF3&amp;r=eyJyb2xlSWQiOiI0OTg3ZjJmNC05Y2E1LTExZTgtOWEzNy0wMDUwNTY4ODE3ZWYiLCJyb2xlTmFtZSI6IkRhdGEgTWFuYWdlciIsInJvbGVDb2RlIjoiREFUQU1BTkFHRVIiLCJyb2xlR3JwSWQiOiJmNGMxMWNhNy05YzFiLTExZTgtOWEzNy0wMDUwNTY4ODE3ZWYiLCJzdHVkeUlkIjoiYjQ0ODg2ZjgtYWM5ZS0xMWU4LWJiNGItMDA1MDU2ODgxN2VmIiwibW9kdWxlcyI6WyJFWENIQU5HRSJdfQ==" class="labels">Data Manager [eXchange]</a>

通过单击该超链接,系统应导航到X模块。

1 个答案:

答案 0 :(得分:0)

如果此Data Manager [eXchange]文本是唯一的,则可以坚持使用它并省略父表:

//a[text()='Data Manager [eXchange]']

演示:

enter image description here

如果您需要匹配特定行的链接,这会比较棘手,但仍然可能,您将需要共享table代码,以便我们提出正确的表达式,例如喜欢:

//table/tr/td[count(//table/tr/th[.='the header you're looking for']/preceding-sibling::th) + 1]/a[text()='Data Manager [eXchange]']

参考文献:

还请注意Table class的一部分HtmlElements framework,它使处理表变得更加容易