我正在学习如何使用cucumber/webrat编写测试。我的一个测试场景设置为测试表单验证(保留字段为空)。奇怪的是,我没有用fill_in填充的字段被设置为字段的name属性。这只会在我运行cucumber时发生,而在使用浏览器时不会发生。
我使用的步骤很简单:
When /^I submit the form$/ do
# Not filling in the 'Name' field here
fill_in 'Description', :with => 'This is a description'
click_button 'Save'
end运行使用上述步骤的场景后,我可以看到文本字段"Name“被设置为"name”,而不是空的。如果我在该字段中填入空格或nil,也会出现这种情况
fill_in 'Name', :with => ''我正在测试的表单非常简单:
<form action="/item/create" method="post">
<div>
<label for="ItemName">Name</label>
<input type="text" name="name" id="ItemName" />
</div>
<div>
<label for="ItemDescription">Description</label>
<textarea name="description" id="ItemDescription"></textarea>
</div>
<input type="submit" value="Save" />
</form>你知道为什么会发生这种事吗?
发布于 2011-08-04 21:46:36
我猜你使用的是带有机械适配器的Webrat,对吗?如果是这样的话,我发现自己对同样的问题感到非常沮丧。事实证明,这是Webrat传递表单字段值以实现机械化的一个错误。您可以在此处找到详细信息和补丁:https://webrat.lighthouseapp.com/projects/10503/tickets/384-webrat-does-not-pass-empty-form-fields-correctly-to-mechanize
或者,如果你不想使用Webrat的补丁版本,一种稍微不太理想的解决办法是用空格(‘')代替fill_in,并确保在考虑字段是否正确填充时,应用程序的输入验证会修剪或忽略空格。
不幸的是,似乎有许多这样的问题,这些问题贡献了一些补丁,这些补丁还没有合并到“官方”Webrat代码库中。大约一个半月前,我给作者发了一封电子邮件,询问他是否还在维护它,如果没有,请考虑给那些愿意维护它的人打电话,因为很多人仍然在使用它。到目前为止,我还没有收到回复。
发布于 2011-02-03 12:02:48
您可以尝试的一件事是确保在该字段上关闭了自动完成功能(autocomplete=" off "),以查看这是否会影响结果。
<form action="/item/create" method="post">
<div>
<label for="ItemName">Name</label>
<input type="text" name="name" id="ItemName" autocomplete="off" />
</div>
<div>
<label for="ItemDescription">Description</label>
<textarea name="description" id="ItemDescription"></textarea>
</div>
<input type="submit" value="Save" />
</form>发布于 2011-02-04 13:18:47
你能在步骤中尝试这样的东西吗?
给定名称%{我用""}填写“”
“”
或者更好的是,在功能文件中使用
给定我填写“
with”时的名称。
我也建议搬到卡皮巴拉去,你可以这样做:
https://github.com/jnicklas/capybara/issues/issue/219
这将允许您为selenium测试设置Firefox配置文件。
https://stackoverflow.com/questions/4689690
复制相似问题