1

フォームを処理するために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: ]

このフォームには 、[変更を保存] (1番目)、[削除](2番目) 、[2番目]の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

4 に答える 4

0

Web サイトが典型的な Rails フォームの場合、削除ボタンは JavaScript アクションである可能性が高くなります。Mechanize は JavaScript をサポートしていません。代わりに、JavaScript を完全にサポートし、mechanize に既にあるすべての機能を備えた Web キット ドライバーで capybara のようなものを使用することをお勧めします。

于 2012-07-27T08:56:19.783 に答える
0

Mechanize で十分であり、Capybara をもたらす JavaScript サポートが必要ない場合は、Javascript の機能をエミュレートできるはずです。この場合、追加内容をよりよく知るためにソースが必要になりますが、非表示フィールドの値は送信前に_method置き換えられると思います。delete

于 2013-05-30T09:30:42.680 に答える
0

以下のコード スニペットは link.Have でうまく機能します。

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

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

試してみてください..それ以外の場合は、上記のようにカピバラを使用できます

于 2012-07-27T10:04:13.120 に答える
0

削除は最後のボタンです。したがって、次のことが必要です。

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

またはもっと簡単に:

form.submit form.buttons.last
于 2012-11-17T00:20:26.627 に答える