最終更新:
kitamomonga 2010年09月06日(月) 11:00:01履歴
チェックボックス 1個を表すクラスです。これだとオブジェクト2つぶんです↓
<form name="chkbox_test"> <input type="checkbox" name="c1" value="val1" id="box1"> <label for="box1">チェックボックス1</label><br> <input type="checkbox" name="c2" value="val2" id="box2"> <label for="box2" checked>チェックボックス2</label> </form>
「チェックボックスのグループ」を表現するようなクラスやメソッドは特にありません。フォームに含まれるチェックボックスは全て Mechanize::Form#checkboxes にひとまとめにされています。これから Mechanize::Form#checkbox_with や Mechanize::Form#checkboxes_with でチェックボックスを選択します。
#name メソッドや #value メソッド、#text メソッドの値でチェックボックスを抽出してください。text は、チェックボックスの id 属性の値と同じ for の値を持つ label タグで囲まれた文字列を返します。
選んだチェックボックスで #check メソッドを使うと、自分をチェックさせることができます。
agent.page.form_with(:name => 'chkbox_test' ){|f| f.checkbox_with(:text => /チェックボックス1/).check # utf-8 f.checkbox_with(:text => /チェックボックス2/).uncheck # utf-8 }
# 全部指すもの一緒 forms[0].checkbox_with(:name => "c2") forms[0].checkbox_with(:value => "val2") forms[0].checkbox_with(:text => /チェックボックス2/) # utf-8 forms[0].checkboxes[1]
ラベルが無い場合の「表示文字列」での選択は面倒です。#node の返り値を調べて checkboxes から Array#find などしてください。
Mechanize::Form::RadioButton を継承しています。チェックボックスとして意味のないメソッドの説明は省いています。
- new - Mechanize::Form::CheckBox オブジェクトを生成する
- name= - チェックボックスの名前を文字列で指定
- name - チェックボックスの名前を文字列で返す
- value= - チェックボックスの送信値を文字列で指定する
- value - チェックボックスの送信値を文字列で返す
- node= - このチェックボックスを表す HTML ノードを再指定する
- node - このチェックボックスを表す HTML ノードを返す
- query_value - 送信用のデータを配列で返す
- <=> - チェックボックスの出現位置比較用の数値を返す
- checked - このチェックボックスがチェック状態であるかを真偽で返す
- checked= - このチェックボックスのチェック状態を真偽で指定
- check - このチェックボックスをチェックされた状態にする
- uncheck - このチェックボックスをチェックされていない状態にする
- click - このチェックボックスのチェック状態を反転する
- label - このチェックボックスに関連付けられたラベルオブジェクトを返す
- text - このチェックボックスに関連付けられたラベルの文字列を返す
- [] - このチェックボックスの属性値を返す
Mechanize::Form::CheckBox オブジェクトを生成します。ユーザーが使用することはありません。
このチェックボックスの名前を文字列で返します。
Mechanize::Form::Field#name を参照してください。
<input type="checkbox" name="c1" value="val1" id="box1"><label for="box1">チェックボックス1</label>という HTML で表されるチェックボックスだった場合、このメソッドは c1 を返します。
このチェックボックスの value 属性、またはユーザーが #value= で設定した文字列を返します。
Mechanize::Form::Field#value を参照してください。
<input type="checkbox" name="c1" value="val1" id="box1"><label for="box1">チェックボックス1</label>という HTML で表されるチェックボックスだった場合、このメソッドは val1 を返します。
このチェックボックスオブジェクトを作成したときに使用した HTML ノードを Nokogiri::HTML::Element? 等で返します。
Mechanize::Form::Field#node を参照してください。Nokogiri::HTML.parse(このinputタグ) のようなものです。
Mechanize がサーバへ送信する文字列を作成する際に使用される、ネストした配列を返します。ユーザーが使用することはありません。
Mechanize::Form::Field#query_value を参照してください。
このオブジェクトの #checked が真である場合に、Mechanize::Form#build_query 内で呼ばれます。
元の HTML で value 属性自体が省略されているなどで #value が nil を返す場合は "on" という 2文字の文字列が value として送られます。value="" だった場合は空で送信されます。
このチェックボックスがチェックされていれば true を、チェックされていなければ false を返します。
Mechanize::Form::RadioButton#checked を参照してください。
HTML 上で checked とされていた場合と、ユーザーが #check メソッドなどでチェックを入れた場合とを区別することはできません。
このチェックボックスのチェック状態を返す #checked の返り値を、true か false で設定します。
true は、このチェックボックスをチェックしている状態にしたとみなします。送信時に(名前と)値が使用されます。
false は、チェックボックスのチェックが外れている状態にしたとみなします。このチェックボックスのデータは送信時には一切使用されません。
このチェックボックスに関連付けられたラベルを表す Mechanize::Page::Label? オブジェクトを返します。関連付けが無い場合は nil を返します。
ラベルは HTML の label 要素で表され、「labelタグで囲まれた部分をクリックしてもチェックボックスをクリックしたことになるよ機能」専用に成り下がって利用されています。このチェックボックスの元の HTML に id 属性があり、その値と同じ for 属性を持つ label 要素が HTML 中のどこかにあれば、その label 要素を表すオブジェクトが返ります。
このチェックボックスに関連付けられた #label の文字列を返します。
そもそもチェックボックスに関連付けが無い、または関連付けられた Label オブジェクトが無い場合は nil を返します。
「labelタグで囲まれた部分」の文字列を UTF-8 で返します。
key に対応する属性の値を文字列で返します。ユーザーが使用することはありません。