如何在 Java 中使用 Selenium 在 div 中获取锚标记 href 和锚标记文本

How to get anchor tag href and anchor tag text inside a div using Selenium in Java

提问人:Karthik 提问时间:11/16/2016 最后编辑:GabeKarthik 更新时间:11/16/2016 访问量:11743

问:

我的 HTML 代码由多个 s 组成。每个内部都有一个锚标记列表。我需要获取 .我正在使用 Selenium 来获取网页的 HTML 代码。divdivhrefsub-containerdiv

HTML 代码:

<body>
    <div id="main-container">
        <a href="www.one.com">One</a>
        <a href="www.two.com">Two</a>
        <a href="www.three.com">Three</a>

        <div id="sub-container">
            <a href="www.abc.com">Abc</a>
            <a href="www.xyz.com">Xyz</a>
            <a href="www.pqr.com">Pqr</a>
        </div>
    </div>
</body>

Java 代码:

List<WebElement> list = driver.findElements(By.xpath("//*[@href]"));
for (WebElement element : list) {
    String link = element.getAttribute("href");
    System.out.println(e.getTagName() + "=" + link);
}

输出:

a=www.one.com
a=www.two.com
a=www.three.com
a=www.abc.com
a=www.xyz.com
a=www.pqr.com

我需要的输出:

a=www.abc.com , Abc
a=www.xyz.com , Xyz
a=www.pqr.com , Pqr
java selenium selenium-webdriver chrome-web-driver

评论

1赞 vins 11/16/2016
System.out.println(e.getTagName() + "=" + link + ", " + e.getText());;
0赞 Karthik 11/16/2016
但我只需要从子容器 div 锚标记值中获取。
0赞 Nick Vanderhoven 11/16/2016
我添加了 xpath 以仅选择子容器锚标记到我的答案中

答:

0赞 Nick Vanderhoven 11/16/2016 #1

您可以使用来获取链接文本。element.getText()

如果您只想选择子容器中的链接,则可以调整您的 xPath:

//*[@id="sub-container"]/a
2赞 Girish Bellamkonda 11/16/2016 #2

试试这个,

List<WebElement> list = driver.findElements(By.xpath("//div[@id='sub-container']/*[@href]"));
        for (WebElement element : list) {
            String link = element.getAttribute("href");
            System.out.println(element.getTagName() + "=" + link +", "+ element.getText());
        }

评论

0赞 Karthik 11/16/2016
但我只需要从子容器 div 锚标记值中获取。
0赞 Girish Bellamkonda 11/16/2016
@Karthik,Uptaded,试试吧。Xpath
0赞 Priya P 11/16/2016 #3

很简单,请尝试以下方法:

 `List<WebElement> list = driver.findElements(By.xpath("//div[@id='sub-container']/a"));
    for (WebElement element : list) {
        String link = element.getAttribute("href");
        String text = element.getText();
        System.out.println(e.getTagName() + "=" + link + ", " + text);
    }

评论

0赞 Karthik 11/16/2016
但我只需要从子容器 div 锚标记值中获取。
0赞 Priya P 11/16/2016
编辑了我上面的答案,在这种情况下尝试更改 xpath。
0赞 noor 11/16/2016 #4

如果 id 子容器是唯一的,则只需使用以下行

driver.findElements(By.cssSelector("div#sub-container>a"));

谢谢