If testing my webapp using Selenium. All the form validation in the webapp is done using HTML5 form validations. Is there any way to assert if a form/input validation was tr
Attribute validationMessage will return the message, that will be showing if validation fails:
WebElement username = driver.findElement(By.id("username"));
String validationMessage = username.getAttribute("validationMessage");
If element has required attribute, browser will show the message after submitting the form:
boolean required = Boolean.parseBoolean(username.getAttribute("required"));
You can check whether entered value is valid:
boolean valid = (Boolean)((JavascriptExecutor)driver).executeScript("return arguments[0].validity.valid;", username);
Here test code for custom validation(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("@vasy a^");
Assert.assertTrue((Boolean)((JavascriptExecutor)driver).executeScript("return arguments[0].validity.valid;", username), "Username should not contain not special characters");