【问题标题】:finding href link using Selenium and java使用 Selenium 和 java 查找 href 链接
【发布时间】:2015-12-05 16:45:50
【问题描述】:

我有一些带有 href 链接的 html 代码。其中一些如下:

<a href="#">

而其他人则喜欢

<a href = "http://.....'>.  

换句话说,对于 xpath,我不能使用 //a[contains(@href,'#')]//a[contains(@href,'http')],因为它们是互斥的,并且每个都只能用于某些不同的 href 值。没有我可以搜索的通用字符串。

现在,理论上,href 不应该是空白的,所以如果我可以使用类似 //a[href not blank] 的东西会很好。甚至//a[has href attribute]

无论如何要这样做?

【问题讨论】:

  • 托尼,重新阅读你的问题。它似乎不完整,可以使用更多信息。
  • @SunSparc 只是 HTML 标记存在问题 - 已修复。

标签: java html eclipse selenium selenium-webdriver


【解决方案1】:

我会使用一个简单的 CSS 选择器来查找具有 href 属性的 A 标记。

List<WebElement> elements = driver.findElements(By.cssSelector("a[href]"));

【讨论】:

    【解决方案2】:

    您还可以使用 XPath or 运算符检查 a 标记的特定实例:

    driver.findElements(By.xpath("//a[@href='#' or starts-with(@href, 'http://')]")
    

    这将返回所有具有等于#href 属性或以http:// 开头的href 属性的锚标记。

    此解决方案不像@alecxe 提供的解决方案那么简单,但它可能会为您的选择提供更大的灵活性。它还为您提供了“过滤掉”不需要的锚标记的选项。例如,此解决方案不会返回带有 href 属性的锚标记,该属性是相对路径,例如 href="path/to/another/webpage.html"

    【讨论】:

    • 我不需要在某个地方加一个“或”吗?
    • 其实,是的,同意。请参阅我的编辑。可以使用|or 来实现。
    【解决方案3】:

    如果您想检查a 链接是否具有href 属性:

    driver.findElements(By.xpath("//a[@href]"));
    

    【讨论】:

      猜你喜欢
      • 2021-12-20
      • 2017-03-17
      • 1970-01-01
      • 1970-01-01
      • 2019-08-28
      • 2020-07-18
      • 2020-07-14
      • 1970-01-01
      • 2012-05-05
      相关资源
      最近更新 更多