How to print the extracted texts obtained from the web page with a space delimiter using Selenium and Java

Paulo Roberto :

With the code String result = driver.findElement (By.id ("ulDezenas")).GetText (); I can get the result 001122334455, which is present in uldezenas. I want to get the numbers, however separated, in this way 00 11 22 33 44 55.

I already tried the split command, but I could not, unfortunately.

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>
DebanjanB :

To extract the numbers separately in the following fashion, 00 11 22 33 44 55 etc you need to create a List you can use either of of the elements and then use StringJoiner Class to add the space character and you can use either of the following Locator Strategies:

  • Using StringJoiner of Java 8 and later

    • Using 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());
      
    • Using 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());
      
  • Using Stream and Collectors of Java 9 and later

    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());
    
  • Using 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," "));
    

Guess you like

Origin http://43.154.161.224:23101/article/api/json?id=151711&siteId=1