1

问题是:如何在以下场景中找到与 Selenium JAVA API 的链接:

  • 链接没有ID
  • 有很多链接,这些只是href不同
  • 我知道一些关于(子字符串)我想点击的链接的 href 的独特信息
  • 所有链接都有相同的文字

我写了这个方法,我尝试使用 xpaths 匹配功能:

public void clickOnLink(String sub_hrefText){
    String xpath = String.format("a[matches(@href,'%s')]",sub_hrefText);
    browser.findElements(By.xpath(xpath)).get(0).click();
}

但我有一个例外:

无效选择器异常

4

1 回答 1

1

你说

我知道一些关于(子字符串)我想点击的链接的 href 的独特信息

因此您可以使用 XPath 1.0 函数contains(haystack, needle)(请参阅W3C XPath 规范)。

您还需要在表达式的开头使用//or -- 更安全 --来选择文档树下方的上下文节点(在您的情况下为根节点)的后代元素,而不仅仅是直接子节点。.//aa

这给了我们:

public void clickOnLink(String sub_hrefText){
    String xpath = String.format(".//a[contains(@href, '%s')]",sub_hrefText);
    browser.findElements(By.xpath(xpath)).get(0).click();
}
于 2013-08-29T17:57:07.130 回答