Как получить сообщение проверки HTML5 с селеном? - PullRequest
0 голосов
/ 26 августа 2018

Пожалуйста, см. этот веб-сайт.

После того, как я войду в систему, у меня будет эта форма для ввода учетных данных пользователя, и после попытки войти в систему с отсутствующими Email Address или Password я получил это сообщение:

enter image description here

Поэтому я пытаюсь найти этот элемент, напечатав всю страницу HTML (driver.getPageSource()), но этот текст отсутствует.

Любая идея, как проверить, что у меня есть это error message?

Ответы [ 2 ]

0 голосов
/ 27 августа 2018

Сообщения проверки не являются частью вашего DOM. Они генерируются, потому что ваши входные поля имеют атрибут required. Если вы видите HTML ваших полей -

<input type="text" placeholder="Enter Username" name="uname" required="">

Вы видите, что у него включен обязательный атрибут. Проверьте это . Вы можете убедиться, что ваши поля имеют этот обязательный атрибут или нет, например:

WebElement inputElement = driver.findElement(By.name("uname"));
JavascriptExecutor js = (JavascriptExecutor) driver;  
boolean isRequired = (Boolean) js.executeScript("return arguments[0].required;",inputElement)
if(isRequired )
{
   //element is required and validation error will popup if the field is empty.
}

Нет необходимости заботиться о том, появляется ли сообщение или нет, потому что оно будет обработано браузером.

0 голосов
/ 27 августа 2018

Атрибут validationMessage вернет сообщение, которое будет отображаться при сбое проверки:

WebElement username = driver.findElement(By.name("uname"));    
String validationMessage = username.getAttribute("validationMessage");

Если элемент имеет атрибут required, браузер отобразит сообщение после отправки формы:

boolean required = Boolean.parseBoolean(username.getAttribute("required"));

Вы можете проверить, является ли введенное значение действительным:

boolean valid = (Boolean)((JavascriptExecutor)driver).executeScript("return arguments[0].validity.valid;", username);


Не : текст сообщения и проверка могут быть настроены.Если вы хотите проверить настраиваемую проверку и сообщение.

Здесь тестируемый код для настраиваемой проверки (Java, TestNG):

Assert.assertTrue(Boolean.parseBoolean(username.getAttribute("required")), "Username is required and message should be showin");
Assert.assertEquals(username.getAttribute("validationMessage"), "My custom message", "Message text control");

username.sendKeys("@vasya ");
Assert.assertTrue((Boolean)((JavascriptExecutor)driver).executeScript("return arguments[0].validity.valid;", username), "Username has special characters");
...