Selenium(Java):如何找到浏览器验证消息?

时间:2018-07-03 14:06:57

标签: java html css validation selenium

我正在与Selenium和Java一起编写自动化测试。我被赋予了验证表单中必填字段的任务。这个想法是我尝试提交表单而不填写必填字段,然后检查弹出消息。如果消息中存在,那就成功了。一种形式有几个必填字段。

问题是,正如开发人员同事告诉我的那样,弹出消息是浏览器的一部分,并且无论如何都不是HTML代码的一部分,因此我不能像往常一样使用findElement(By)。同样,警告不是一个单独的窗口,您无法单击它(因为它消失了),它只是某种气泡,上面写着:"Please fill out this field"

如何使用Selenium(Java)查找此消息?

2 个答案:

答案 0 :(得分:1)

可能有两件事。

第一:我假设包含{strong>必需属性的f(..)字段。

类似这样的内容:input

如果您在此输入中未提供任何内容并点击 submit (提交)按钮,则会收到以下错误消息:Username: <input type="text" name="usrname" required>,这是< strong> HTML5 必需属性(您可以将其称为第一级验证)。

您可以像这样捕获此异常消息:

"Please fill out this field"

如果您要打印消息String,则会得到以下信息:String message = driver.findElement(By.name("usrname")).getAttribute("validationMessage");

第二:当用户提供的输入不正确时,可能会弹出一个Javascript验证警报。在这种情况下,您将不得不切换到警报提示,然后从特定警报中检索消息。

在这种情况下可以尝试的代码:

Please fill out this field

答案 1 :(得分:0)

我实际上是在寻找相同的问题,因此决定在本文中合并我的发现: https://www.linkedin.com/pulse/working-font-end-web-form-validations-using-test-automation-mohie/

在上述情况下,您可以进行三个验证

  1. 验证该字段为必填字段。

    // this boolean value can be either true if the attribute exists or null if it doesn't
    Boolean isRequired = driver.findElement(username).getAttribute("required");
    
  2. 验证消息文本的配置正确。

    driver.findElement(username).getAttribute("validationMessage");
    
  3. 验证消息是否实际显示。

    这是一个棘手的部分,您可以在元素未显示在主页DOM上的情况下使用视觉验证