1

我的 HTML 代码由多个divs 组成。每个里面都有div一个锚标签列表。我需要href获取sub-container div. 我正在使用 Selenium 来获取网页的 HTML 代码。

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
4

4 回答 4

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());
        }
于 2016-11-16T05:32:45.640 回答
0

很简单,试试如下:

 `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);
    }
于 2016-11-16T05:41:22.513 回答
0

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

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

//*[@id="sub-container"]/a
于 2016-11-16T05:26:25.713 回答
0

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

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

谢谢

于 2016-11-16T08:11:06.933 回答