简体   繁体   English

如何使用Selenium-Webdriver和Java验证html5约束验证消息

[英]How to validate html5 constraint validation message using Selenium-Webdriver and Java

How do I validate the following message? 如何验证以下消息? The required class has the floating message.: 所需的类具有浮动消息:

try the following, but I get the error "no such alert" 尝试以下,但我得到错误“没有这样的警报”

package firsttestngpackage;
import org.openqa.selenium.Alert;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.support.ui.ExpectedConditions;
import org.openqa.selenium.support.ui.WebDriverWait;
import org.testng.Assert;
import org.testng.annotations.Test;

public class LoginBambu {

public String baseUrl = "http://132.148.19.159:8086/panel/#/login";
String driverPath = "H:\\chromedriver.exe";
public WebDriver driver;    

@Test
public void IniciarSesion() {
System.setProperty("webdriver.chrome.driver", driverPath);
driver = new ChromeDriver();
driver.get(baseUrl);

WebElement login = driver.findElement(By.cssSelector("#page-top > div.margen-panel-60.ng-scope > div > div.row.container-fluid.ng-scope > div:nth-child(1) > div > form > button"));
  login.click();

  String mensaje=driver.switchTo().alert().getText();
  System.out.println(mensaje);    
}
}

The HTML5 Constraint validation message is the outcome of Constraint API's element.setCustomValidity() method. HTML5约束验证消息是Constraint API的element.setCustomValidity()方法的结果。

Note : HTML5 Constraint validation doesn't remove the need for validation on the server side. 注意 :HTML5约束验证不会消除服务器端验证的需要。 Even though far fewer invalid form requests are to be expected, invalid ones can still be sent by non-compliant browsers (for instance, browsers without HTML5 and without JavaScript) or by bad guys trying to trick your web application. 尽管可以预期的无效表单请求要少得多,但仍然可以通过不兼容的浏览器(例如,没有HTML5且没有JavaScript的浏览器)或者试图欺骗您的Web应用程序的坏人发送无效的表单请求。 Therefore, like with HTML4, you need to also validate input constraints on the server side, in a way that is consistent with what is done on the client side. 因此,与HTML4一样,您还需要在服务器端验证输入约束,其方式与客户端的操作一致。

Solution

To retrieve the text which results out from the element.setCustomValidity() method, you can use the following solution: 要检索从element.setCustomValidity()方法得到的文本,可以使用以下解决方案:

  • Code Block: 代码块:

     import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; import org.openqa.selenium.chrome.ChromeDriver; import org.openqa.selenium.chrome.ChromeOptions; import org.openqa.selenium.support.ui.ExpectedConditions; import org.openqa.selenium.support.ui.WebDriverWait; public class validationmessage { public static void main(String[] args) { System.setProperty("webdriver.chrome.driver", "C:\\\\Utility\\\\BrowserDrivers\\\\chromedriver.exe"); ChromeOptions options = new ChromeOptions(); options.addArguments("start-maximized"); options.addArguments("disable-infobars"); options.addArguments("--disable-extensions"); WebDriver driver = new ChromeDriver(options); driver.get("http://132.148.19.159:8086/panel/#/login"); WebElement username = new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.cssSelector("input.form-control.ng-pristine.ng-invalid.ng-invalid-required.ng-touched[placeholder='Usuario']"))); System.out.println(username.getAttribute("validationMessage")); } } 
  • Console Output: 控制台输出:

     Please fill out this field. 

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM