Как извлечь подсказку об ошибке из текстового поля, когда пользователь ввел неправильное значение в Selenium

При вводе неверного значения в текстовое поле появляется следующая подсказка:

Как извлечь подсказку об ошибке из текстового поля, когда пользователь ввел неправильное значение в Selenium

HTML:

<form action = "/login" method = "post" class = "form-horizontal"> <input type = "hidden"> 
    <div class = "form-group form-group-withLabel"> 
        <input type = "email" name = "_username" id = "inputEmail" required = "" autofocus = "" autocomplete = "off"> 
        <label for = "inputEmail" class = "inner-label">Email address</label> 
    </div> 
    <div class = "form-group form-group-withLabel"> 
        <input type = "password" name = "_password" id = "inputPassword" placeholder = "Password" required = ""> 
        <label class = "inner-label" for = "inputPassword">Password</label> 
    </div> 
</form>

Мне нужно получить текст из этой подсказки.

Я пытался использовать:

Alert alert = driver.switchTo().alert()->getText();

но это не помогло.

Как получить текст из таких подсказок?

Можете ли вы поделиться HTML-кодом?

cruisepandey 22.03.2022 09:34
<form action = "/login" method = "post" class = "form-horizontal"> <input type = "hidden"> <div class = "form-group form-group-withLabel"> <input type = "email" name = "_username" id = "inputEmail" required = "" autofocus = "" autocomplete = "off"> <label for = "inputEmail" class = "inner-label">Email address</label> </div> <div class = "form-group form-group-withLabel"> <input type = "password" name = "_password" id = "inputPassword" placeholder = "Password" required = ""> <label class = "inner-label" for = "inputPassword">Password</label> </div> </form>
tester 22.03.2022 09:42

Когда вы наводите курсор на это сообщение об ошибке, видите ли вы всплывающую подсказку или какой-либо другой тег?

cruisepandey 22.03.2022 09:44

Нет, эта подсказка не определена в html-коде

tester 22.03.2022 09:52

Feeze DOM в момент появления текстового поля, чтобы увидеть, что он определен в исходном коде. Посмотрите, как заморозить DOM здесь stackoverflow.com/questions/19422214/…

pburgr 22.03.2022 11:31
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
5
47
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

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

Эта подсказка об ошибке в основном является сообщением Проверка ограничений HTML5, которое является результатом метода API ограничений element.setCustomValidity().

Чтобы получить текст из подсказки об ошибке, вам нужно вызвать WebDriverWait для элементToBeClickable(), и вы можете использовать любой из следующих стратегии поиска:

  • Используя cssселектор:

    System.out.println(new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.cssSelector("input#inputEmail[name='_username']"))).getAttribute("validationMessage"));
    
  • Используя xpath:

    System.out.println(new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.xpath("//input[@id='inputEmail' and @name='_username']"))).getAttribute("validationMessage"));
    

Рекомендации

Вы можете найти пару соответствующих подробных обсуждений в:

Спасибо за ответы! это работает для Java, но невозможно получить сообщение проверки в php. Я использовал тот же подход, но безуспешно

tester 26.03.2022 16:23

Не стесняйтесь поднимать новый вопрос в соответствии с вашим новым требованием.

undetected Selenium 26.03.2022 16:25

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