java - Selenium (Java):如何定位浏览器验证消息?
问题描述
我正在使用 Selenium 和 Java 编写自动化测试。我的任务是验证表单中的必填字段。我的想法是我尝试在不填写必填字段的情况下提交表单,然后检查弹出消息。如果它与消息一起存在,那么它就是成功的。一个表格有几个必填字段。
问题是弹出消息 - 正如开发同事告诉我的那样 - 是浏览器的一部分,它不是 HTML 代码的一部分,所以我不能findElement(By)
像往常一样使用。此外,警告不是一个单独的窗口,您不能单击它(因为它会消失),它只是某种气泡,上面写着:"Please fill out this field"
如何使用 Selenium(Java) 找到此消息?
解决方案
可以有两件事。
首先:我假设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();
推荐阅读
- git - 恢复之前推送到 GitHub 的已删除分支
- swift - 由于“内部”保护级别,无法访问初始化程序
- java - 将字典放入带有重复单词的 HashMap 问题中
- c++ - 从模型中获取下一个项目
- php - 数据库中的 Laravel 缓存冲突
- actions-on-google - 使用 ActionsOnGoogle 和 DialogFlow 从用户那里获得许多有效数字的最佳方法
- swift - UICollectionViewFlowLayout.scrollingDirection 更改强制重新加载 - Swift 4
- php - 从 http 重定向到 https 但在新结果中显示变量
- amazon-dynamodb - AppSync 突变
- java - Rest API 不支持请求方法 GET