20

我正在使用 Cucumber 测试 Web 应用程序的行为(在后台使用 Selenium 和 Watir)。我的网络应用程序有 HTML5 页面并使用新的“必需”属性。如果我有一个包含必填字段的数据输入表单,并且我提交了该字段为空白的表单,我想验证 Web 应用程序是否正确响应错误条件。

不幸的是,在使用 HTML5 Web 浏览器进行测试时,Cucumber 似乎无法通过 Web 驱动程序访问字段验证失败时弹出的错误消息。在任何情况下,都不会提交表单,页面仍保留在数据输入表单上。

另一方面,当测试无头或使用不兼容 HTML5 的浏览器时,表单可能会提交,从而允许我的 Web 应用程序捕获错误并将用户发送回带有错误消息的表单页面。

在第二种情况下,我可以轻松测试错误消息的存在,因为它是页面中交付的 HTML 的一部分。我的问题是我看不到如何编写一个测试场景来验证无头浏览器和 HTML5 浏览器情况的错误情况。

在 Selenium 和 Watir Web 驱动程序的当前状态下,这可能是不可能的。但是,如果有人知道如何验证 HTML5“必需”错误弹出消息,那将是一个很大的帮助。

编辑 2012-06-02:

这是一个包含 HTML5 浏览器警告示例的示例页面。

有一个必需的文本和选择,一个显示内部提示文本的文本框,以及一个带有正则表达式输入验证的文本框。该页面没有任何 CSS 或 javascript 来混淆问题,它只是普通的 HTML5。请参阅w3schools 页面中有关 HTML5 字段属性的完整分类。假设表单成功,表单提交给一个简单的 CGI 脚本,该脚本只是回显表单输入。提交失败将保留在示例表单页面上。

4

4 回答 4

1

我以前没有使用过 HTML5required属性。但从外观上看,该required属性只是提醒浏览器必须填写该表单字段(即 DOM 不会更改)。

在我看来,仅断言该required属性存在于相应表单字段的 HTML 中是合理的。该测试应该通过 HTML5 浏览器和非 HTML5 浏览器。

在我看来,试图断言更多的东西就像你在测试浏览器的功能一样。

于 2013-02-27T01:50:34.830 回答
1

除了验证创建的 HTML 是否正确以启用浏览器验证之外,我不确定你能做多少并不等于测试浏览器而不是你的代码。

使用 watir 或 watir-webdriver 您可以使用 .type 来验证输入是否设置了正确的类型(例如电子邮件),这是控制浏览器验证的一件事。另一个是 required 属性的存在,这有点小技巧 .attribute_value("required") 可能会起作用,但通常会返回属性的值,因此不确定该方法将如何响应布尔属性。其他选择可能是查看 .attribute_list 和

Watir 在这里添加 .required 似乎也是一个很好的理由?输入元素的方法,可以让您轻松检查该属性是否已设置。所以我要求该功能https://github.com/watir/watir-webdriver/issues/189

于 2013-03-27T16:23:04.647 回答
1

一种解决方案是不使用 Cucumber 来测试错误行为,而是测试您是否已配置字段。

所以用 Cuke 的话,你可能会有类似的东西

Given I am filling in my form
Then I should see that my name is required

然后在名称字段的 html 标记上编写一些查找所需选项的内容。

不仅如此,测试的是浏览器而不是您的应用程序。

于 2019-09-30T13:18:30.137 回答
1

您应该使用 CSS 选择器来定位特定字段并查找错误标识符。如果它可见或不可见。需要有详细的步骤定义。

于 2019-09-25T13:21:09.867 回答