t.me/atinfo_chat Telegram группа по автоматизации тестирования

Поиск текста в элементе, без учёта дочерних элементов

Теги: #<Tag:0x00007f9afe4844f0> #<Tag:0x00007f9afe4843b0> #<Tag:0x00007f9afe484298>

Всем привет, нигде не смог найти ответа на этот вопрос.
Имеется элемент такого примерно вида

<div  class="content1">Нужный текст
      <div class="content2">Ненужный текст</div>
</div>

Как можно осуществить поиск текста в элементе class=content1 чтобы в результат не попал текст из дочернего элемента class=content2

есть пример сайта, где такое можно увидеть?

вот как-то так получилось сделать, хз как это кодом должно быть

1 Симпатия

У меня к сожалению мой пример на локальной машине, но Ваш пример по сути вроде как подходит) Сейчас попробую это провернуть, и отпишусь по результатам, спасибо за совет!

Это работает, но почему то у меня нет firstChild, есть только lastChild… Буду разбираться) но путь верный однозначно, спасибо

окончательно проблему так и не получилось решить. Я могу получить либо "ненужный текст используя $(“div”).lastChild.getText()
либо получить “Нужный текст Ненужный текст” вместе через $(“div”).getText()

Пробовал искать через $(“div :first-child”).getText() но так находится тоже “Ненужный текст”

ну я делал js-ом в консоли, попробуйте тоже самое, найти элемент и с ним выполнить то, что я сделал в консоли

1 Симпатия

Получилось сделать так

WebElement elem = executeJavaScript(“return document.querySelector(‘div’).firstChild”);
Selenide.element(elem).shouldHave(exactText(“нужный текст”));

3 Симпатий

@Dmitrij_Hizhov Если ещё не видели, мы добавили такую функцию в Selenide 5.15.0:

  $.shouldHave(ownText("Hello"));           // Элемент должен содержать текст "Hello"
  $.shouldHave(exactOwnText("Hello"));      // Текст элемента должен быть "Hello" 

См. https://ru.selenide.org/2020/09/26/selenide-5.15.0/

1 Симпатия