最終更新: kitamomonga 2010年08月24日(火) 12:35:58履歴
選択メニューのひとつの項目、option 要素を表現するクラスです。こんな状態です↓
<form name="select_test"> <select name="select4" size="1"> <option value="0" selected>ぽつーん</option> </select> </form>ひとつの <option> に対し、ひとつの Option オブジェクトが対応します。
通常の選択メニューの場合は Mechanize::Form::SelectList#options に、複数選択可能なメニューだった場合は Mechanize::Form::MultiSelectList#options に、HTML にある項目の数だけ格納されています。
Mechanize::Form::SelectList#option_with で選択されます(MultiSelectList にはoption_with がありません)。
<form name="register_form"> <select name="area" size="47"> <option value="hokk">北海道</option> <option value="aomo">青森県</option> <option value="akit">秋田県</option> … </select> </form>という選択メニューだった場合、北海道を選択するにはたとえば #value を用いて
agent.page.form_woth(:name => 'register_form'){|f| f.field_with(:name => 'area').option_with(:value => 'hokk').select }としたり、または #text メソッドを使って
agent.page.form_woth(:name => 'register_form'){|f| f.field_with(:name => 'area').option_with(:text => '北海道').select }としたりします。
自分を選択状態にするには #select メソッドを使用します。
項目がひとつしか選択できない普通のメニューでは、最新の選択だけが有効になります。つまり、Mechanize::Form::SelectList に所属している Option オブジェクトだった場合、select するたびにメニュー内の全 Option の選択は解除され、常に最新のひとつが選択状態として扱われます。
複数選択可能な Mechanize::Form::MultiSelectList だった場合は select したものが全て保存されます。自分を非選択状態にするには #unselect メソッドを使ってください。
- new - Mechanize::Form::Option オブジェクトを生成する
- value - 項目が表す値を返す
- selected - 項目の選択状態を真偽で返す
- text - 項目の表示文字列を返す
- select_list - この項目を含む元のメニューを返す
- to_s - alias #value
- selected? - alias #selected
- select - この項目を選択状態にする
- tick - alias #select
- unselect - この項目を非選択状態にする
- untick - alias #unselect
- click - この項目の選択状態を反転する
元になった option 要素の value 属性の値を文字列で返します。
<option value="hokk">北海道</option>という HTML で表される選択肢だった場合、この value メソッドは文字列 "hokk" を返します。
Mechanize::Util.html_unescape で文字参照などが解決されています。
HTML 上で value 属性が省略されていた場合は #text が代わりに使用されます。
option 要素(囲まれた部分)を UTF-8 文字列で返します。
<option value="hokk">北海道</option>という HTML で表される選択肢だった場合、この text メソッドは文字列 "北海道" を返します。通常の Web ブラウザではメニューの項目として表示される部分です。
Mechanize::Util.html_unescape で文字参照などが解決されています。
この Option オブジェクトを含む Mechanize::Form::SelectList オブジェクトか Mechanize::Form::MultiSelectList オブジェクトを返します。
Mechanize::Form::Option.new で指定されているものです。#select で「メニュー中の他の項目」を探すために使用します。
#selected の返り値を、現在の値に関わらず true にするように設定します。true を返します。
いわゆる選択状態にする行為になります。通常の Web ブラウザで、非選択なメニュー項目をクリックして色つき背景に反転させた状態に該当します。
このオブジェクトが Mechanize::Form::SelectList に含まれていた場合は、他の項目を全て非選択状態にします。
#selected の返り値を、現在の値に関わらず false にするように設定します。false を返します。
いわゆる非選択状態にする行為です。通常の Web ブラウザで、選択済みなメニュー項目を白背景の非反転にする(またはそもそも触らない)状態に該当します。
#selected の真偽を逆転させます。逆転後の #selected の値を返します。
選択の状態を逆にするという点でマウスのクリック行為にとても似ているのですが、今現在の項目の選択状態が不明瞭なのでイマイチ使いでがありません。現在の項目の状態に関わらず結果が確定する #select(必ず選択)か #unselect(必ず非選択)の使用のほうをお勧めします。
このオブジェクトが Mechanize::Form::SelectList に含まれていて状態が true になった場合は、他の項目を全て非選択状態にします。