最終更新: kitamomonga 2010年08月24日(火) 07:55:27履歴
画像が張られた送信ボタンこと、イメージボタンひとつを表すクラスです。↓こんなんです。
<form name="map_test"> <input type="image" name="imgbtn" src="/images/hatenawh.gif" alt="はてなロゴ"> </form>
Mechanize::Form::Button を継承しており、「押したときの x 座標と y 座標も一緒に送られるボタン」として振舞います。通常の Web ブラウザでは実際にクリックした座標も送っていますが、Mechanize では「クリックしたことにした」座標を変数として指定した上で送信します。#x= でマウスクリック時の x 座標を、#y= でマウスクリック時の y 座標を指定してください。
agent.page.form_with(:name => 'f1'){|f| f.button_with(:name => 'imgbtn'){|btn| btn.x, btn.y = 11, 12 f.click_button(btn) } }メソッド省略時には画像の左上 (0, 0) をクリックしたとみなして送信されます(画面左上ではありません)。ただ、現状、イメージボタンを座標送信ボタンとして使用している例は稀で、単なる「画像の貼れるキレイなボタン」としてしか使われてない気もします。
現在一般的なクライアントサイドクリックマップ(<area> を使う、多角形な領域のリンク)は「画像をクリックして動く」という点でイメージボタンに似ていますが Mechanize::Page::Link クラスで扱います。
継承元の Mechanize::Form::Button および、Button の継承元の Mechanize::Form::Field のメソッドが動作します。
Mechanize 1.0.0 時点では、通常の Web ブラウザの動作とは違い、ボタンの name と value も送信されてしまいます。
- new - Mechanize::Form::ImageButton オブジェクトを生成する
- name= - イメージボタンの名前を変更する
- name - ボタンの名前を文字列で返す
- value= - イメージボタンの値を変更する
- value - イメージボタンの値を文字列で返す
- node= - このイメージボタンを表す HTML ノードを変更する
- node - このイメージボタンを表す HTML ノードを返す
- query_value - 送信用のデータを配列で返す
- <=> - HTML上での出現位置を比較する
- x= - サーバに送信する x 座標を設定します。
- y= - サーバに送信する y 座標を設定します。
Mechanize がサーバへ送信する文字列を作成する際に使用される、ネストした配列を返します。
ingbtn=value&imgbtn.x=11&imgbtn.y=12 という送信値になるような配列が作成されます。#x や #y が指定されていなかったときは数値部分は 0 とみなします。イメージボタンの画像の左上の角を意味する座標になります。
通常の Web ブラウザの送信値は name と value を含まない imgbtn.x=11&imgbtn.y=12 のようなものであることに注意をしてください。
#name が nil だった場合、最終的にはこのボタンに関するデータは取り除かれ、送信文字列には含まれません。Mechanize::Form::Field#query_value を参照してください。
HTML 上での出現位置を引数のオブジェクトと比較し、sort 可能な答を返します。
Mechanize::Form::Field#<=> を参照してください。
ボタンは value の値を送信しません。