【问题标题】:Extracting text from <BR> Tag using selenium Java使用 selenium Java 从 <BR> 标签中提取文本
【发布时间】:2022-12-02 21:57:16
【问题描述】:
我正在尝试从中提取文本
标签。但不幸的是,没有什么对我有用。
<div id="sign_in" class="sign_in">
<h4>usernames lists:</h4>
user_1
<br>
user_2
<br>
user_3
<br>
user_4
<br>
</div>
我试图将其放入列表中,然后提取文本。
List <WebElement> li = driver.findElements(By.xpath("//div[@class='sign_in']/br"));
for(int i=0;i<li.size();i++) {
System.out.println(li.get(i).getText());
}
【问题讨论】:
标签:
java
selenium-webdriver
【解决方案1】:
<br> 不是封闭标签,不能包含任何文本。它只是行分隔符,请参阅https://www.w3schools.com/tags/tag_br.asp。
这将完成工作:
WebElement signIn = driver.findElement(By.id("sign_in"));
String signInFullText = signIn.getText();
String[] splitted = signInFullText.split("\r?\n|\r");
for (String s: splitted) {
if (!s.equals("usernames lists:")) {
System.out.println(s);
}
}
【解决方案2】:
你可以试试下面的方法String[] splitted = str.split("<br>|<br/>"); regex. 因为html标签可以是<br/> or <br>
String str = "<div id="sign_in" class="sign_in">"
+ " <h4>usernames lists:</h4>"
+ " user_1"
+ " <br>"
+ " user_2"
+ " <br>"
+ " user_3"
+ " <br>"
+ " user_4
"
+ " <br>
"
+ "</div>";
String[] splitted = str.split("<br>|<br/>");
System.out.println(Arrays.toString(splitted));
示例输出:
[<div id="sign_in" class="sign_in">
<h4>usernames lists:</h4>
user_1
,
user_2
,
user_3
,
user_4
,
</div>]