我的HTML代码由多个div
组成。每个div
内都有一个锚标记列表。我需要获取href
sub-container
中锚标记的div
值和文本值。我使用Selenium来获取网页的HTML代码。
HTML code:
<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
答案 0 :(得分:1)
试试这个,
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());
}
答案 1 :(得分:0)
您可以使用element.getText()
获取链接文字。
如果您只想选择子容器中的链接,可以调整xPath:
//*[@id="sub-container"]/a
答案 2 :(得分: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);
}
答案 3 :(得分:0)
如果id子容器是唯一的,只需使用下面的行
driver.findElements(By.cssSelector("div#sub-container>a"));
感谢