webrat自动填充表单字段

时间:2011-01-14 09:40:13

标签: ruby testing forms cucumber webrat

我正在学习如何使用cucumber / webrat编写测试。我的一个测试场景设置为测试表单验证(将字段留空)。奇怪的是,我没有使用fill_in填写的字段设置为字段的name属性。这只发生在我运行黄瓜时,使用浏览器时不会发生这种情况。

我正在使用的步骤是直截了当的:

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>

知道为什么会这样吗?

3 个答案:

答案 0 :(得分:2)

我猜你正在使用带有Mechanize适配器的Webrat,是吗?如果是这样,我发现自己对同一个问题感到非常沮丧。事实证明,这是Webrat如何将表单字段值传递给Mechanize的错误。您可以在此处找到详细信息和补丁:https://webrat.lighthouseapp.com/projects/10503/tickets/384-webrat-does-not-pass-empty-form-fields-correctly-to-mechanize

或者,如果您不想使用经过修补的Webrat版本,则稍微不合理的解决方法是使用空格('')填充,并确保在考虑是否使用空格时,应用程序的输入验证会修剪或忽略空格字段已正确填写。

不幸的是,似乎存在许多这样的问题,这些问题已经提供了尚未合并到“官方”Webrat代码库中的补丁。我在一个半月前通过电子邮件向作者发邮件询问他是否还在维护它,如果没有,请考虑给那些会像许多人一样使用它的人打电话。到目前为止,我还没有收到回复。

答案 1 :(得分:1)

您可以尝试的一件事是确保在该字段上关闭自动填充功能(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>

答案 2 :(得分:0)

你可以在这个步骤中尝试这样的事情吗?

  

给出%{我用“”}填写“名字”

甚至更好,在功能文件中使用

  

鉴于我填写“name with”“。

我还建议搬到水豚,你可以这样做:

https://github.com/jnicklas/capybara/issues/issue/219

可让您为硒测试设置Firefox配置文件。