提问人:Karthik 提问时间:11/16/2016 最后编辑:GabeKarthik 更新时间:11/16/2016 访问量:11743
如何在 Java 中使用 Selenium 在 div 中获取锚标记 href 和锚标记文本
How to get anchor tag href and anchor tag text inside a div using Selenium in Java
问:
我的 HTML 代码由多个 s 组成。每个内部都有一个锚标记列表。我需要获取 .我正在使用 Selenium 来获取网页的 HTML 代码。div
div
href
sub-container
div
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
答:
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"));
谢谢
评论
System.out.println(e.getTagName() + "=" + link + ", " + e.getText());
;