目前我正在用硒测试覆盖公司内部项目(比如员工管理系统)。所以表格上有很多强制性的输入。如果任何一个为空,则整个表单都会得到验证。输入附近的文本标签变为(变为)红色,并出现相应的验证器消息。所以我检查验证器是否正常工作的方法非常简单:-我编写了获取颜色文本方法来获取输入附近标签的颜色(如果它是红色,那么验证器已经在提交表单)
public String jsGetColor(String css){
JavascriptExecutor js = (JavascriptExecutor) driver;
StringBuilder stringBuilder = new StringBuilder();
stringBuilder.append("var x=$(\'"+css+"\');");
stringBuilder.append("return x.css('color')");
String res= (String) js.executeScript(stringBuilder.toString());
return res;
}
// the way i use this method:
String defaultTimeOffLabelColor=(String)jsGetColor(propertyKeysLoader("rms.home.timeoffsportlet.addnewtimeoff.typetimeofflabel"));
driverClickByCssSelector("rms.home.timeoffsportlet.addnewtimeoff.submitbutton");
String validationTimeOffLabelColor=(String)jsGetColor(propertyKeysLoader("rms.home.timeoffsportlet.addnewtimeoff.typetimeofflabel"));
//verifying validation works properly using Assert mechanism
Assert.assertFalse("validation is invalid", validationTimeOffLabelColor.equals(defaultTimeOffLabelColor));
另外我应该补充一点,如果验证器有效,则会出现错误消息。因此,您可以找到此消息的定位器并比较适当的文本。在其他情况下,当验证器没有工作时,例如提交表单,验证器消息的样式将类似于“display:none”。因此,要了解一切正常,您只需检查消息是否可见:
driver.findElement(By.cssSelector(...blabla...)).isDisplayed()
最后一点。如果您想验证验证器的消息。
public void addNewTimeOffValidatorsMessagesCheck(String expectedValidationMsg) {
Assert.assertTrue(driver.findElement(By.cssSelector(propertyKeysLoader("rms.home.timeoffsportlet.addnewtimeoff.validationmessage"))).getText().trim().equals(expectedValidationMsg));
}
addNewTimeOffValidatorsMessagesCheck("Timeoff type was not selected!");
希望现在它对你来说变得更清楚了)