如何获得此XPATH的最后一场比赛?

时间:2015-10-08 14:55:18

标签: selenium xpath

driver.findElement(By.xpath(".//div[contains(text(),'Approval Date')]")).click();

上面找到了表格中的第一个元素。

有三行文字'审批日期'在表中。

如何选择第三行而不是默认选择第一行?

2 个答案:

答案 0 :(得分:2)

如果您想要" 3rd",如您所说,那么您可以去[3]

driver.findElement( By.xpath(".//div[contains(text(),'Approval Date')][3]")).click();

例如,如果你想要"最后"然后进入[last()]

driver.findElement( By.xpath(".//div[contains(text(),'Approval Date')][last()]")).click();

在你的情况下,两者都会给出相同的结果......

关于你的问题"如何选择包含"批准日期"的所有元素:

List<WebElement> elements = driver.findElements( By.xpath(".//div[contains(text(),'Approval Date')]"));

答案 1 :(得分:1)

在包含在括号 * 中的初始xpath表达式 之后添加[last()]位置索引谓词,以仅获取最后匹配的元素原始xpath:

(.//div[contains(text(),'Approval Date')])[last()]
  

“此外,如何选择包含'审批日期'的所有元素”

使用findElements() - 复数's'来查找选择器匹配的所有元素。

*)解释为什么需要括号:How to select specified node within Xpath node sets by index with Selenium?