#selenium #selenium-webdriver #automated-tests
Вопрос:
Следующий код используется для получения текста указанного элемента кнопки с идентификатором:
EE__printer-menu__activator
В нашей структуре это drop-down
и вот element
с дочерними элементами D OM структуры:
<button data-v-12817ac3="" type="button" class="some classes" id="EE__printer-menu__activator"><div class="v-btn__content">
Printer
<i data-v-12817ac3="" aria-hidden="true" class="some classes">arrow_drop_down</i>
</div>
</button>
Проблема заключается в следующем: когда drop-down
не развернуто, и я пытаюсь получить текст id="EE__printer-menu__activator"
элемента, используя getText()
я получаю :
{Printer
arrow_drop_down}
чего и следовало ожидать. но когда раскрывающийся список расширен, и я использую то же самое, я получаю только текст первого ребенка:
{Printer}
Не могу понять, почему в этом случае getText()
не возвращается "arrow_drop_down"
текст последнего дочернего элемента выбранного элемента.
Ответ №1:
Когда drop down
не продлевается, то, если вы обратите внимание
<i data-v-12817ac3="" aria-hidden="true" class="some classes">arrow_drop_down</i>
для более конкретного атрибута aria-hidden
установлено значение true. поэтому , когда вы звоните .getText
EE__printer-menu__activator
, вы получаете и text
то, и другое .
Теперь, вот небольшое предположение , что когда drop down is expanded
, то aria-hidden
значение будет установлено false
равным . причиняя .getText()
return
то, что у него есть, и у него есть только первое Printer
.
Комментарии:
1. Даже если раскрывающийся список расширен, дочерний элемент все равно будет: <i data-v-12817ac3=»» aria-hidden=»истинный» класс=»некоторые классы»>arrow_drop_down<i data-v-12817ac3=»» aria-hidden=»истинный» класс=»некоторые классы»></i>
2. И еще одна вещь, я понимаю, что атрибут aria-hidden не позволяет программе чтения с экрана читать его, но как это влияет на webdriver?
3. возможно, DOM не был обновлен, или, возможно, элемент был отрисован неправильно. поспи немного и посмотри, поможет ли это. если он не попытается обновить и посмотреть, поможет ли это.
4. Так не должно быть. Страница та же самая, единственное действие, которое я делаю, — это нажимаю на раскрывающийся список. Я пробовал разные вещи, и все время, когда я пытаюсь получить текст элемента <i> перед расширением d-d, я делаю это правильно и всегда получаю пустую строку, когда я пытаюсь сделать то же самое, когда d-d расширяется, что для меня очень странно
5. даже если страница одна и та же, она может вызвать некоторые функции js, и это может повлиять на вашу автоматизацию