【问题标题】:Selenium (Java): how to locate browser validation message?Selenium (Java):如何定位浏览器验证消息?
【发布时间】:2018-12-11 21:23:45
【问题描述】:

我正在使用 Selenium 和 Java 编写自动化测试。我的任务是验证表单中的必填字段。这个想法是我尝试在不填写必填字段的情况下提交表单,然后检查弹出消息。如果它与消息一起存在,那么它就是成功的。一个表单有多个必填字段。

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

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

【问题讨论】:

  • 请相关HTML和代码试用

标签: java html css validation selenium


【解决方案1】:

我实际上是在寻找同样的问题,并决定在这篇文章中巩固我的发现: 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 上

【讨论】:

  • 那么问题是什么?请说出您的问题以便得到解答。
【解决方案2】:

可能有两件事。

First :我假设 input 字段包含 required 属性。

类似这样的东西:Username: <input type="text" name="usrname" required>

如果您在此 input 中未提供任何内容并点击 submit 按钮,您将收到此错误消息:"Please fill out this field",这是 的结果HTML5 必需属性(您可以将其称为第一级验证)。

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

String message = driver.findElement(By.name("usrname")).getAttribute("validationMessage");  

如果你要打印消息字符串,你会得到这个:Please fill out this field

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

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

Alert alert = driver.switchTo().alert();
alert.getText();

【讨论】:

  • validationMessage 属性起到了作用,还没有在其他任何地方找到答案。谢谢!
猜你喜欢
  • 1970-01-01
  • 2019-08-13
  • 2014-08-26
  • 2016-06-26
  • 1970-01-01
  • 1970-01-01
  • 2013-12-27
  • 2014-02-03
  • 1970-01-01
相关资源
最近更新 更多