使用rails中的mechanize删除类的实例

时间:2012-07-27 08:51:13

标签: ruby-on-rails mechanize

我正在使用mechanize来处理表单。我使用mechanize解析了表单,输出结果如下:

{forms
 #<Mechanize::Form
 {name nil}
 {method "POST"}
 {action "/dashboard/checks/50114dbeae6f61b428000ad8"}
 {fields
  [hidden:0x60c476a type: hidden name: _method value: put]
  [text:0x60c4616 type: text name: check[name] value: Testing]
  [text:0x60c4512 type: text name: check[url] value: http://www.pintile.com]
  [text:0x60c445e type: text name: check[interval] value: 120]
  [text:0x60c435a type: text name: check[maxTime] value: 1500]
  [textarea:0x60c4116 type:  name: check[tags] value: ]}
 {radiobuttons}
 {checkboxes}
 {file_uploads}
 {buttons
  [button:0x60c3d88 type: submit name:  value: ]
  [button:0x60c3d24 type: submit name: delete value: ]

此表单中有2个按钮 保存更改(第1个),删除(第2个), 我使用以下代码保存更改,它工作正常:

form.field_with(:name => "check[name]").value = "Testing"
button = form.buttons.first
agent.submit(form, button)

成功保存更改。但是,当我尝试使用下面的代码删除时,它不起作用:

button = form.buttons.first
agent.submit(form, button)

它什么都不做。请帮我解决这个问题。

4 个答案:

答案 0 :(得分:0)

如果网站是典型的rails表单,则删除按钮很可能是JavaScript操作。 Mechanize不支持JavaScript。您可能希望使用像webybara这样的东西来使用Web工具包驱动程序,它具有完整的JavaScript支持以及您在机械化中已经具备的所有功能。

答案 1 :(得分:0)

下面的代码段与link一起使用。您尝试点击

agent.get("http://your url")

agent.page.link_with(:text => "link name").click

试一试.. 如上所述,您可以使用Capybara

答案 2 :(得分:0)

删除是最后一个按钮。因此,你想要:

button = form.buttons.last
agent.submit(form, button)

或更简单:

form.submit form.buttons.last

答案 3 :(得分:0)

如果Mechanize对你来说足够好并且你不需要任何可以带来Capybara的javascript支持,你应该能够模仿Javascript的功能。在这种情况下,需要源代码来更好地了解追加内容,但我想隐藏字段_method的值在提交之前被delete替换。