Ruby Mechanize wiki (ja) - Mechanize::Form::CheckBox

Mechanize::Form::CheckBox


チェックボックス 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_withMechanize::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 を継承しています。チェックボックスとして意味のないメソッドの説明は省いています。



Mechanize::Form::CheckBox オブジェクトを生成します。ユーザーが使用することはありません。

このチェックボックスの名前を返す #name メソッドの返り値を文字列 str に変更します。
Mechanize::Form::Field#name= を参照してください。

このチェックボックスの名前を文字列で返します。
Mechanize::Form::Field#name を参照してください。
<input type="checkbox" name="c1" value="val1" id="box1"><label for="box1">チェックボックス1</label>
という HTML で表されるチェックボックスだった場合、このメソッドは c1 を返します。

このチェックボックスの送信時に使用される値を返す #value メソッドの返り値を文字列 str に変更します。
Mechanize::Form::Field#value= を参照してください。

このチェックボックスの 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= を参照してください。

このチェックボックスオブジェクトを作成したときに使用した 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="" だった場合は空で送信されます。

HTML 上での出現位置を引数のオブジェクトと比較し、sort 可能な答を返します。
Mechanize::Form::Field#<=> を参照してください。

このチェックボックスがチェックされていれば true を、チェックされていなければ false を返します。
Mechanize::Form::RadioButton#checked を参照してください。
HTML 上で checked とされていた場合と、ユーザーが #check メソッドなどでチェックを入れた場合とを区別することはできません。

このチェックボックスのチェック状態を返す #checked の返り値を、true か false で設定します。
true は、このチェックボックスをチェックしている状態にしたとみなします。送信時に(名前と)値が使用されます。
false は、チェックボックスのチェックが外れている状態にしたとみなします。このチェックボックスのデータは送信時には一切使用されません。

#checked が現在の状態に関わらず true を返すように設定します。true を返します。
つまり、このチェックボックスをチェックします。通常の Web ブラウザの「マウスでチェックボックスをクリック」するトグル行為は #click で表現します。

#checked が現在の状態に関わらず false を返すように設定します。false を返します。
つまり、このチェックボックスのチェックを外します。通常の Web ブラウザの「マウスでチェックボックスをクリック」するトグル行為は #click で表現します。

#checked の真偽を逆転させます。逆転後の #selected の値を返します。
チェックされている状態だった場合はチェックされていない状態に、チェックされていない状態だった場合はチェックされている状態になります。
通常の Web ブラウザでのチェックボックスのクリック動作と完全に合致します。が、現在のチェック状態が気楽に見えないので意外と使いにくいです。#check(状態によらず必ずチェックを入れる)や #uncheck(状態によらず必ずチェックを外す)の利用も検討してください。

このチェックボックスに関連付けられたラベルを表す Mechanize::Page::Label? オブジェクトを返します。関連付けが無い場合は nil を返します。
ラベルは HTML の label 要素で表され、「labelタグで囲まれた部分をクリックしてもチェックボックスをクリックしたことになるよ機能」専用に成り下がって利用されています。このチェックボックスの元の HTML に id 属性があり、その値と同じ for 属性を持つ label 要素が HTML 中のどこかにあれば、その label 要素を表すオブジェクトが返ります。

このチェックボックスに関連付けられた #label の文字列を返します。
そもそもチェックボックスに関連付けが無い、または関連付けられた Label オブジェクトが無い場合は nil を返します。
「labelタグで囲まれた部分」の文字列を UTF-8 で返します。

key に対応する属性の値を文字列で返します。ユーザーが使用することはありません。