2

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>
undetected Selenium
  • 183,867
  • 41
  • 278
  • 352
Paulo Roberto
  • 1,498
  • 5
  • 19
  • 42

2 Answers2

1

Get the parent(ul) webelement first; then find elements by tag name 'li' which returns a list. Iterate over it and get the text.

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

    for (WebElement li : ul.findElements(By.tagName("li"))) {
        System.out.println(li.getText());
    }
Nikesh P
  • 11
  • 1
1

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," "));
    
undetected Selenium
  • 183,867
  • 41
  • 278
  • 352