Mechanizeでフォームの1項目しか選択できない選択メニュー、またはドロップダウンリストの選択方法

ラジオボタンやチェックボックスとは違い、選択リストは Mechanize においては若干複雑。


例えばこういうフォーム

<form name="selectform">
  <select name="memu2">
    <option value="1" selected>選択1</option>
    <option value="2">選択2</option>
    <option value="3">選択3</option>
  </select>
</form>

選択2を選択状態にするには

form.field_with(:name => 'menu2'){|list|
  list.option_with(:text => '選択2').select
}

#value= を利用すると、「表示」しているものを無視して直接指定になります。

form.field_with(:name => 'menu2'){|list|
  list.value = "2"
}

Mechanize::Form#[]= は vakue= メソッドを利用するので、

form['memu2'] = "2"

と短く書くことも可能です。

ネタ元