我正在使用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)
它什么都不做。请帮我解决这个问题。
答案 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
替换。