【问题标题】:How to select a link in a page based on its href attribute, using selenium?如何使用 selenium 根据其 href 属性选择页面中的链接?
【发布时间】:2013-10-25 06:02:05
【问题描述】:

我是硒的新手。 我正在尝试根据“href”属性选择一个链接。我不能在这里使用 xpath,因为每次页面加载时链接都会在页面中移动。请帮我。 谢谢。

【问题讨论】:

  • 如果您使用 webdriver,您可以使用 By.linkText() 并在您的 anchor 标签中指定文本。
  • 我不能使用它,锚标签中的文本对于这里的所有链接都是相同的。:(
  • Jaydev,你能举个例子解释一下吗?
  • @Jaydev:如果他们在标签内有相同的文本,那么他们必须去(reffering)到同一个页面。而且,如果每次标签都围绕着移动,那么点击哪个标签并不重要。所以你可以放心地使用By.linkText() 方法。

标签: java eclipse selenium-webdriver


【解决方案1】:

使用 xpath //a[contains(@href,'yourhref')] 和 by.xpath 或类似的 css。当你使用 // 它意味着一个相对的 xpath,所以无论层次结构如何,如果你的 href 是唯一的,这将为你完成这项工作。

【讨论】:

    【解决方案2】:

    您可以使用By.linkTextBy.partialLinkText,例如

    <a href="http://www.google.com/search?q=cheese">search for cheese</a>>

    WebElement cheese = driver.findElement(By.partialLinkText("cheese"));

    本示例摘自here

    【讨论】:

    • 我不能用那个。在我的例子中,锚标记中的文本对于所有链接都是相同的,唯一的属性是每个链接不同的 href。
    【解决方案3】:

    您可以使用this xpath 构造方法或以下方法。

    public void clickLink(WebDriver driver) {
    
        List<WebElement> aList = driver.findElements(By.tagName("a"));
    
        for (WebElement el : aList) {
    
            // if (el.getAttribute("href").contains("your href partial value")
    
            if (el.getAttribute("href")
                    .equalsIgnoreCase("your full hreff text")) {
                el.click();
                break;
            }
        }
    }
    

    根据您的要求使用 if 条件。部分或全部比较。

    【讨论】:

      【解决方案4】:

      使用 CSS 选择器,示例- driver.findElement(By.cssSelector("a[href=(your href)]")

      【讨论】:

        猜你喜欢
        • 2011-03-06
        • 1970-01-01
        • 1970-01-01
        • 2016-02-13
        • 2019-08-25
        • 1970-01-01
        • 1970-01-01
        • 2012-01-30
        • 2016-01-08
        相关资源
        最近更新 更多