如何使用 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," "));