如何使用 Selenium 和 Java 打印从带有 space 分隔符的网页中提取的文本
How to print the extracted texts obtained from the web page with a space delimiter using Selenium and Java
使用代码 String result = driver.findElement (By.id ("ulDezenas")).GetText ();
我可以获得结果 001122334455,它存在于 uldezenas 中。
我想以这种方式获取数字,无论分开多少 00 11 22 33 44 55.
我已经尝试过 split 命令,但不幸的是我不能。
HTML
<ul class="numbers diaDeSorte" id="ulDezenas">
<li>00</li>
<li>11</li>
<li>22</li>
<li>33</li>
<li>44</li>
<li>55</li>
<li>66</li>
</ul>
先获取parent(ul) webelement;然后按标签名称 'li' 查找 returns 列表中的元素。遍历它并获取文本。
WebElement ul = driver.findElement(By.id("ulDezenas"));
for (WebElement li : ul.findElements(By.tagName("li"))) {
System.out.println(li.getText());
}
要按照以下方式分别提取数字,00 11 22 33 44 55
等您需要创建一个 List 您可以使用任一元素,然后使用 StringJoiner Class to add the space character and you can use either of the following :
使用 Java 的 StringJoiner 8 及更高版本
使用 cssSelector:
List<WebElement> elementList = driver.findElements(By.cssSelector("ul.numbers.diaDeSorte#ulDezenas li"));
ArrayList<String> values = new ArrayList<>();
for(WebElement element:elementList)
values.add(element.getText());
StringJoiner joiner = new StringJoiner(" ");
for (String item : values)
joiner.add(item.toString());
System.out.println(joiner.toString());
使用 xpath:
List<WebElement> elementList = driver.findElements(By.xpath("//ul[@class='numbers diaDeSorte' and @id='ulDezenas']//li"));
ArrayList<String> values = new ArrayList<>();
for(WebElement element:elementList)
values.add(element.getText());
StringJoiner joiner = new StringJoiner(" ");
for (String item : values)
joiner.add(item.toString());
System.out.println(joiner.toString());
使用 Java 的 Stream and Collectors 9 及更高版本
List<WebElement> elementList = driver.findElements(By.cssSelector("ul.numbers.diaDeSorte#ulDezenas li"));
ArrayList<String> values = new ArrayList<>();
for(WebElement element:elementList)
values.add(element.getText());
System.out.println(values.stream().
map(Object::toString).
collect(Collectors.joining(" ")).toString());
使用org.apache.commons.lang3.StringUtils:
List<WebElement> elementList = driver.findElements(By.xpath("//ul[@class='numbers diaDeSorte' and @id='ulDezenas']//li"));
ArrayList<String> values = new ArrayList<>();
for(WebElement element:elementList)
values.add(element.getText());
System.out.println(org.apache.commons.lang3.StringUtils.join(values," "));
使用代码 String result = driver.findElement (By.id ("ulDezenas")).GetText ();
我可以获得结果 001122334455,它存在于 uldezenas 中。
我想以这种方式获取数字,无论分开多少 00 11 22 33 44 55.
我已经尝试过 split 命令,但不幸的是我不能。
HTML
<ul class="numbers diaDeSorte" id="ulDezenas">
<li>00</li>
<li>11</li>
<li>22</li>
<li>33</li>
<li>44</li>
<li>55</li>
<li>66</li>
</ul>
先获取parent(ul) webelement;然后按标签名称 'li' 查找 returns 列表中的元素。遍历它并获取文本。
WebElement ul = driver.findElement(By.id("ulDezenas"));
for (WebElement li : ul.findElements(By.tagName("li"))) {
System.out.println(li.getText());
}
要按照以下方式分别提取数字,00 11 22 33 44 55
等您需要创建一个 List 您可以使用任一元素,然后使用 StringJoiner Class to add the space character and you can use either of the following
使用 Java 的 StringJoiner 8 及更高版本
使用 cssSelector:
List<WebElement> elementList = driver.findElements(By.cssSelector("ul.numbers.diaDeSorte#ulDezenas li")); ArrayList<String> values = new ArrayList<>(); for(WebElement element:elementList) values.add(element.getText()); StringJoiner joiner = new StringJoiner(" "); for (String item : values) joiner.add(item.toString()); System.out.println(joiner.toString());
使用 xpath:
List<WebElement> elementList = driver.findElements(By.xpath("//ul[@class='numbers diaDeSorte' and @id='ulDezenas']//li")); ArrayList<String> values = new ArrayList<>(); for(WebElement element:elementList) values.add(element.getText()); StringJoiner joiner = new StringJoiner(" "); for (String item : values) joiner.add(item.toString()); System.out.println(joiner.toString());
使用 Java 的 Stream and Collectors 9 及更高版本
List<WebElement> elementList = driver.findElements(By.cssSelector("ul.numbers.diaDeSorte#ulDezenas li")); ArrayList<String> values = new ArrayList<>(); for(WebElement element:elementList) values.add(element.getText()); System.out.println(values.stream(). map(Object::toString). collect(Collectors.joining(" ")).toString());
使用org.apache.commons.lang3.StringUtils:
List<WebElement> elementList = driver.findElements(By.xpath("//ul[@class='numbers diaDeSorte' and @id='ulDezenas']//li")); ArrayList<String> values = new ArrayList<>(); for(WebElement element:elementList) values.add(element.getText()); System.out.println(org.apache.commons.lang3.StringUtils.join(values," "));