如何使用Selenium和Java打印使用空格分隔符从网页获取的提取文本

问题描述 投票:2回答:2

使用代码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>
java selenium-webdriver xpath css-selectors delimiter
2个回答
1
投票

要以下列方式单独提取数字,00 11 22 33 44 55等您需要创建一个List,您可以使用其中一个元素,然后使用StringJoiner类添加空格字符,您可以使用以下任一Locator Strategies

  • 使用Java 8及更高版本的StringJoiner 使用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 9及更高版本的StreamCollectors 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," "));

1
投票

首先获取父(ul)webelement;然后按标签名称'li'查找返回列表的元素。迭代它并获取文本。

WebElement ul = driver.findElement(By.id(“ulDezenas”));

    for (WebElement li : ul.findElements(By.tagName("li"))) {
        System.out.println(li.getText());
    }
© www.soinside.com 2019 - 2024. All rights reserved.