Как распечатать извлеченные тексты, полученные с веб-страницы, с разделителем пробелов, используя Selenium и Java - PullRequest
2 голосов
/ 08 марта 2019

С кодом String result = driver.findElement (By.id ("ulDezenas")).GetText (); я могу получить результат 001122334455 , который присутствует в ульдезенах.Я хочу получить числа, хотя и разделенные, таким образом 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>

Ответы [ 2 ]

1 голос
/ 08 марта 2019

Чтобы извлечь числа отдельно следующим образом, 00 11 22 33 44 55 и т. Д., Вам нужно создать Список , вы можете использовать любой из элементов, а затем использовать StringJoiner Класс для добавления символа пробел , и вы можете использовать любой из следующих Стратегий локатора :

  • Использование StringJoiner из Java 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 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," "));
    
1 голос
/ 08 марта 2019

Получите родительский (ul) webelement первым; затем найдите элементы по имени тега 'li', которое возвращает список. Переберите его и получите текст.

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

    for (WebElement li : ul.findElements(By.tagName("li"))) {
        System.out.println(li.getText());
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...