4

请看这个网站。

单击登录后,我有此用户凭据表单,然后尝试登录时丢失Email AddressPassword收到此消息:

在此处输入图像描述

所以我尝试通过打印所有页面HTMLdriver.getPageSource())来找到这个元素,但是这个文本丢失了。

知道如何验证我有这个error message吗?

4

2 回答 2

5

属性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");
于 2018-08-26T23:11:01.197 回答
5

验证消息不是 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.
}

无需关心消息是否出现,因为这将由浏览器处理。

于 2018-08-27T05:09:53.353 回答