首页 > 解决方案 > Selenium (Java):如何定位浏览器验证消息?

问题描述

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

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

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

标签: javahtmlcssvalidationselenium

解决方案


可以有两件事。

首先:我假设input包含必需属性的字段。

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

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

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

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

如果您要打印消息 String ,您将得到:Please fill out this field

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

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

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

推荐阅读