При вводе неверного значения в текстовое поле появляется следующая подсказка:
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();
но это не помогло.
Как получить текст из таких подсказок?
<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>
Когда вы наводите курсор на это сообщение об ошибке, видите ли вы всплывающую подсказку или какой-либо другой тег?
Нет, эта подсказка не определена в html-коде
Feeze DOM в момент появления текстового поля, чтобы увидеть, что он определен в исходном коде. Посмотрите, как заморозить DOM здесь stackoverflow.com/questions/19422214/…
Эта подсказка об ошибке в основном является сообщением Проверка ограничений 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. Я использовал тот же подход, но безуспешно
Не стесняйтесь поднимать новый вопрос в соответствии с вашим новым требованием.
Можете ли вы поделиться HTML-кодом?