我正在使用Cucumber测试Web应用程序行为(使用Selenium和Watir)。我的网络应用程序有HTML5页面,并使用新的“必需”属性。如果我有一个带有必填字段的数据输入表单,并且我将该表单提交为空白字段,我想验证网络应用程序是否正确响应错误情况。
不幸的是,在使用HTML5 Web浏览器进行测试时,Cucumber似乎无法通过Web驱动程序访问在失败的字段验证中弹出的错误消息。在任何情况下,表单都不会提交,页面仍保留在数据输入表格中。
另一方面,当测试无头或使用非HTML5兼容的浏览器时,表单可能会提交,允许我的Web应用程序捕获错误并将用户发送回表单页面并显示错误消息。
在第二种情况下,我可以轻松地测试是否存在错误消息,因为它是页面中传递的HTML的一部分。我的问题是我无法看到如何编写单个测试场景来验证无头和HTML5浏览器情况下的错误情况。
对于Selenium和Watir Web驱动程序的当前状态,这可能是不可能的。但如果有人知道如何验证HTML5“必需”错误弹出消息,那将是一个很大的帮助。
以下是sample page,其中包含HTML5浏览器警告示例。
有一个必需的文本和选择,一个显示内部提示文本的文本框,以及一个带有正则表达式输入验证的文本框。该页面没有任何CSS或javascript来混淆问题,它只是vanilla HTML5。有关完整细分,请参阅w3schools page about HTML5 field attributes。表单提交一个简单的CGI脚本,它只是回显表单输入,假设表单成功。提交失败将保留在样本表单页面上。
答案 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标记的名称字段上写一些寻找所需选项的内容。
除此之外,还测试浏览器而不是您的应用程序。