【问题标题】:How to find a link with selenium?如何找到与硒的链接?
【发布时间】:2013-08-29 16:11:16
【问题描述】:

问题是:如何在以下场景中找到与 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();
}

但我遇到了一个例外:

InvalidSelectorException

【问题讨论】:

  • 你试过String.format(".//a[contains(@href, '%s')]", sub_hrefText)吗?
  • 太棒了!作品!我的版本有什么问题?
  • .// 开头。它仍然需要是有效的 XPath :P
  • @paul t。您应该将此作为答案提交。

标签: java xpath selenium


【解决方案1】:

你说

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

这样您就可以使用 XPath 1.0 函数 contains(haystack, needle)(请参阅 W3C XPath spec)。

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

这给了我们:

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

【讨论】:

    猜你喜欢
    • 2016-05-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-20
    • 1970-01-01
    • 1970-01-01
    • 2020-08-31
    • 2016-05-11
    相关资源
    最近更新 更多