如何使用黄瓜测试HTML5页面中的错误条件?

时间:2012-06-01 16:49:20

标签: html5 cucumber bdd

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

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

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

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

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

编辑2012-06-02:

以下是sample page,其中包含HTML5浏览器警告示例。

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

4 个答案:

答案 0 :(得分:0)

之前我没有使用过HTML5 required属性。但从它的外观来看,required属性只是警告浏览器必须填写该表单字段(即DOM不会改变)。

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

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

答案 1 :(得分:0)

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

使用watir或watir-webdriver你可以使用.type来验证输入是否具有正确的类型(例如电子邮件)集,这是控制浏览器验证的一件事。另一个是必需属性的存在,这是一个小趋势潜在的.attribute_value(“required”)可能有效,但通常会返回属性的值,因此不确定该方法如何响应布尔属性。其他替代方案可能是查看.attribute_list和

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

答案 2 :(得分:0)

您应该有适当的CSS选择器来定位特定字段并查找错误标识符。是否可见。需要详细的步骤定义。

答案 3 :(得分:0)

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

以库克语来说,你可能会喜欢

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

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

除此之外,还测试浏览器而不是您的应用程序。