Selenium WebDriver для соответствия аналогичным xpaths

У меня есть следующие xpaths, которые WebDriver должен обрабатывать таким же образом, мне нужно получить из них текстовый контент.

//*[@id = "dialogMessage"]/div[3]
//*[@id = "dialogMessage"]/div[3]/p
//*[@id = "dialogMessage"]/div[3]/p/span[2]

Я попытался использовать этот код, чтобы соответствовать всем вышеперечисленным.

String result_text = driver.findElement(By.xpath("//*[contains(@value, 'dialogMessage')]")).getText();

Только один из этих xpaths присутствует на странице при каждой загрузке страницы. Я получаю следующее сообщение об ошибке:

org.openqa.selenium.NoSuchElementException: no such element: Unable to locate element: {"method":"xpath","selector":"//id[contains(@value, 'dialogMessage')]"}
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
0
31
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Похоже, вы пытаетесь получить все элементы, которые содержат значение атрибута, равное dialogMessage, вместо этого попробуйте использовать этот xpath:

//*[contains(@id, 'dialogMessage')]

или

 //*[@id='dialogMessage']

...или еще лучше, используйте driver.findElement(By.id("dialogMessage"));.

JeffC 23.05.2019 17:32

Другие вопросы по теме