ºÇ½ª¹¹¿·¡§ kitamomonga 2010ǯ10·î18Æü(·î) 12:59:42ÍúÎò
HTML¾å¤Ë¤¢¤ë¥Õ¥©¡¼¥à¡Ê<form>¡Ä</form>¡Ë¤Ò¤È¤Ä¤òɽ¤¹¥¯¥é¥¹¤Ç¤¹¡£
¥Õ¥©¡¼¥à¥³¥ó¥È¥í¡¼¥ë¤Ø¤Î¥¢¥¯¥»¥¹
- ¤³¤Î¥¯¥é¥¹¤¬Ä󶡤¹¤ë¥á¥½¥Ã¥É¤Ç³Æ¼ï¥Õ¥©¡¼¥à¥³¥ó¥È¥í¡¼¥ë¡ÊÆþÎÏÍó¡¢¥Á¥§¥Ã¥¯¥Ü¥Ã¥¯¥¹Åù¡Ë¤Î¥ª¥Ö¥¸¥§¥¯¥È¤òõ¤¹
- õ¤·¤¿ÆþÎÏÍó¤Ê¤É¤Î¥ª¥Ö¥¸¥§¥¯¥È¤Îvalue¤òľÀÜÆþÎϤä¹àÌÜÁªÂò¤ÇŬÅö¤ËÊѹ¹¤¹¤ë
- ¤³¤Î¥¯¥é¥¹¤¬Ä󶡤¹¤ë¥á¥½¥Ã¥É¤Ç¡¢¤³¤Î¥¯¥é¥¹¤¬É½¸½¤¹¤ëURL¤Ø¥Õ¥©¡¼¥à¥Ç¡¼¥¿¤òÁ÷¿®
¥³¥ó¥È¥í¡¼¥ë̾ | HTML | õ¤¹¥á¥½¥Ã¥É |
1¹ÔÆþÎÏÍó | <input type="text"> | #field_with |
Ê£¿ô¹ÔÆþÎÏÍó | <textarea> | #field_with |
¥Ñ¥¹¥ï¡¼¥É | <input type="password"> | #field_with |
±£¤·¥³¥ó¥È¥í¡¼¥ë | <input type="hidden"> | #field_with |
¥é¥¸¥ª¥Ü¥¿¥ó | <input type="radio"> | #radiobutton_with |
¥Á¥§¥Ã¥¯¥Ü¥Ã¥¯¥¹ | <input type="checkbox"> | #checkbox_with |
ÁªÂò¥á¥Ë¥å¡¼ | <select> | #field_with |
Á÷¿®¥Ü¥¿¥ó | <input type="submit"> | #button_with |
¥ê¥»¥Ã¥È¥Ü¥¿¥ó | <input type="reset"> | #button_with |
¥¤¥á¡¼¥¸¥Ü¥¿¥ó | <input type="image"> | #button_with |
ÈÆÍѥܥ¿¥ó | <button> | #button_with |
¥Õ¥¡¥¤¥ëÁ÷¿® | <input type="file"> | #file_upload_with |
<form name="f1" action="/search"> <input type="text" name="q"> <input type="submit" value="Á÷¿®"> </form>¤È¤¤¤¦ HTML ÊÒ¤Çɽ¤µ¤ì¤ëÆþÎÏÍó¤Ëʸ»úÎó "Ruby" ¤òÆþÎϤ·¡¢¥Õ¥©¡¼¥à¤Î¡Ê1¤Ä¤·¤«¤Ê¤¤¡ËÁ÷¿®¥Ü¥¿¥ó¤ò²¡¤¹¤Ë¤Ï
# name ¤¬ f1 ¤Ê <form> ¤òõ¤¹ agent.page.form_with(:name => 'f1'){|form| # name ¤¬ q ¤ÊÆþÎÏÍó¤òõ¤¹ form.field_with(:name => 'q'){|field| field.value = 'Ruby' } # ¥Õ¥©¡¼¥à¤Ë submit ¥Ü¥¿¥ó¤¬¤¢¤ì¤Ð¡Ö²¡¡×¤·¤ÆÁ÷¿® form.click_button }¤È¤·¤Þ¤¹¡£
HTML ¤Î¥Õ¥©¡¼¥à¥³¥ó¥È¥í¡¼¥ë¤È¥µ¡¼¥Ð¤ËÁ÷¤ë¥Ç¡¼¥¿¤ÎÂбþ¤ò¼«ÎϤÇÆɤ߲ò¤±¤ëÄøÅ٤ΠHTML ¤Ë´Ø¤¹¤ëÃ챤¬¤É¤¦¤·¤Æ¤âɬÍפǤ¹¡£
¥Ç¡¼¥¿¤ÎÁ÷¿®
ÊÝ»ý¤¹¤ë¥Õ¥©¡¼¥à¥³¥ó¥È¥í¡¼¥ëÃæ¤Ç¡Ö͸ú¡×¤Ê¤â¤Î¤À¤±¤ò½¸¤á¡¢HTML ¤Ç¤Î½Ð¸½½ç¤È¤Ï̵´Ø·¸¤ËÁ÷¿®Ãͤòºî¤ê¡¢#action ¤Î URL ¤Ë HTTP¥á¥½¥Ã¥É #method ¤ÇÁ÷¿®¤·¤Þ¤¹¡£
Mechanize ¤Ï¥Ñ¡¼¥¹¤·¤¿ HTML ¤ò UTF-8 ¤È¤·¤Æ°·¤Ã¤Æ¤¤¤ë¤Î¤Ç¡¢ÆþÎÏÍó¤Î value ¤Ê¤É¤Î»ØÄê¤â UTF-8 ¤Ç¤Ê¤±¤ì¤Ð¤Ê¤ê¤Þ¤»¤ó¡£
- HTML ¥Ñ¡¼¥¹¤ËÍѤ¤¤ë Nokogiri ¤ÎÊÖ¤êÃͤ¬ UTF-8 ¸ÇÄê¤Ê¤Î¤Ç Mechanize ¤Î¥á¥½¥Ã¥É¤â UTF-8
- ¥æ¡¼¥¶¡¼¤¬»ØÄꤹ¤ë¥Õ¥©¡¼¥à¥Ç¡¼¥¿Ê¸»úÎó¤â UTF-8 ¤Ç¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡Ê¥¢¥Ã¥×¥í¡¼¥É¥Õ¥¡¥¤¥ë¤ò½ü¤¯¡Ë
- Á÷¿®¥Ç¡¼¥¿¤Ï #page ¥ª¥Ö¥¸¥§¥¯¥È¤Î Mechanize::Page#encoding ¤Ë Iconv ·Ðͳ¤Ç̾Á°¤âÃͤâÊÑ´¹¤µ¤ì¤¿¾å¤ÇÁ÷¿®
Á÷¿®Ê¸»ú¥Ç¡¼¥¿¤ÎÃæ¤Ë UTF-8 ¤«¤é Mechanize::Page#encoding ¤ØÊÑ´¹¤Ç¤¤Ê¤¤Ê¸»ú¤¬´Þ¤Þ¤ì¤Æ¤¤¤¿¾ì¹ç¡¢½èÍý¤Ç¤¤Þ¤»¤ó¡£
require 'rubygems'; require 'mechanize' agent = Mechanize.new{|a| a.user_agent_alias = 'Windows IE 7'} # meta ¤¬ charset=Shift_JIS ¤Ç¥Õ¥©¡¼¥à¤Î¤¢¤ë¥Ú¡¼¥¸¤ÎÎã agent.get('http://www.google.com/webhp?hl=ja&lr=lang_ja&ie=Shift_JIS&oe=Shift_JIS') p agent.page.encoding agent.page.form_with(:name => 'f'){|form| # ¡Ö¤Ï¤·¤´¤À¤«¡×üⶶ¤ò¸¡º÷ form.field_with(:name => 'q').value = 'üⶶ' # ¸¡º÷·ë²Ì¤Î¥Ú¡¼¥¸¡Ê¤Ï¤·¤´¤À¤«´Þ¤à¡Ë¤òÀµ¤·¤¤Ê¸»ú¥¨¥ó¥³¡¼¥Ç¥£¥ó¥°¤ÇºÆ¥Ñ¡¼¥¹¡Êº£²ó̵´Ø·¸¡Ë }.click_button.encoding = 'CP932' puts agent.page.title·ë²Ì¡ÊUTF-8¤Î¤Ï¤·¤´¤À¤«¤Ïiconv¤Î¹Í¤¨¤ëÁǤÎShift_JIS¤Ë¤Ï´Þ¤Þ¤ì¤Ê¤¤¤Î¤ÇÊÑ´¹¤Ç¤¤Þ¤»¤ó¤Ç¤·¤¿¥¨¥é¡¼¡Ë¡§
"Shift_JIS" Iconv::IllegalSequence: "\351\253\231\346\251\213" from $GEMLIB/mechanize-1.0.0/lib/mechanize/util.rb:34:in `iconv'ÊÑ´¹²Äǽ¤Ç¤¢¤ë¥¨¥ó¥³¡¼¥Ç¥£¥ó¥°Ì¾¤ò #page ¥ª¥Ö¥¸¥§¥¯¥È¤Î Mechanize::Page#encoding= ¤Ç»ØÄꤷ¤Æ¤¯¤À¤µ¤¤¡ÊÁ÷¿®»þ¤ÎÊÑ´¹¤ËɬÍ×¤Ê¤Î¤Ï #page ¥á¥½¥Ã¥É¤ÎÊÖ¤¹ Page ¥ª¥Ö¥¸¥§¥¯¥È¤Î¥¨¥ó¥³¡¼¥Ç¥£¥ó¥°¾ðÊó¤Ç¤¹¡Ë¡£¤è¤¯¤¢¤ëÎã¤È¤·¤Æ¡¢Windows ¤Ç»È¤ï¤ì¤ë Shift_JIS ¤ÇÁ÷¿®¤·¤¿¤¤¾ì¹ç¡¢³Èĥʸ»ú¤¬´Þ¤Þ¤ì¤ë¤Ê¤é CP932¡ÊÆüËܸì¥Ñ¥Ã¥ÁºÑ¤ß iconv ¤Ê¤é Windows-31J ¤â²Ä¡Ë¤Ë¤Ê¤ê¤Þ¤¹¡£
require 'rubygems'; require 'mechanize' agent = Mechanize.new{|a| a.user_agent_alias = 'Windows IE 7'} # meta ¤¬ charset=Shift_JIS ¤Ç¥Õ¥©¡¼¥à¤Î¤¢¤ë¥Ú¡¼¥¸¤ÎÎã agent.get('http://www.google.com/webhp?hl=ja&lr=lang_ja&ie=Shift_JIS&oe=Shift_JIS') p agent.page.encoding agent.page.form_with(:name => 'f'){|form| # ¡Ö¤Ï¤·¤´¤À¤«¡×üⶶ¤ò¸¡º÷ form.field_with(:name => 'q').value = 'üⶶ' # ¥Õ¥©¡¼¥à¤ÎÁ÷¿®Ê¸»ú¥¨¥ó¥³¡¼¥Ç¥£¥ó¥°¤òCP932¤Ë form.page.encoding = 'CP932' # ¸¡º÷·ë²Ì¤Î¥Ú¡¼¥¸¡Ê¤Ï¤·¤´¤À¤«´Þ¤à¡Ë¤òÀµ¤·¤¤Ê¸»ú¥¨¥ó¥³¡¼¥Ç¥£¥ó¥°¤ÇºÆ¥Ñ¡¼¥¹¡Êº£²ó̵´Ø·¸¡Ë }.click_button.encoding = 'CP932' puts agent.page.title·ë²Ì¡§
"Shift_JIS" üⶶ - Google ¸¡º÷¥æ¡¼¥¶¡¼¤¬»ØÄꤷ¤¿Ê¸»úÎó¤À¤±¤Ç¤Ï¤Ê¤¯¡¢¤â¤È¤â¤È¤Î HTML ¤Î hidden ¤Ëµ½Ò¤µ¤ì¤Æ¤¤¤¿¡Öʸ»ú¥¨¥ó¥³¡¼¥É¥Á¥§¥Ã¥¯ÍÑʸ»ú¡×¤Ê¤É¤¬°ú¤Ã¤«¤«¤ë¤³¤È¤â¤¢¤ê¤Þ¤¹¡£
¤Ê¤ª¡¢¤¢¤Þ¤ê¤Ê¤¤Îã¤Ê¤Î¤Ç¤¹¤¬¡¢¥Õ¥©¡¼¥àÁ÷¿®ÍѤËencoding=¤ò¡Ö»È¤¤¼Î¤Æ¡×¤Æ¤¤¤¿¾ì¹ç¡¢¤½¤ì°Ê¹ß¤Î¥Ú¡¼¥¸Æ⸡º÷¥á¥½¥Ã¥É¤Ï¤¦¤Þ¤¯Æ°ºî¤·¤Þ¤»¤ó¡£
agent.get(euc_uri).form('f'){|form| form['text'] = 'ùõ¡ÊÄ̾Τ¿¤Á¤¶¤¡Ë' # EUC-JP¤Î¥Ú¡¼¥¸¤«¤é¤Ê¤¼¤«CP932¤ÇÁ÷¤ë form.page.encoding = 'CP932' } # url¤ÎHTML¤¬CP932¤È¤·¤Æ²ò¼áÉÔǽ¤Ê¾ì¹ç¤Ï¥Ñ¡¼¥¹·ë²Ì¤¬ÍøÍѤǤ¤Ê¤¤ agent.visited_page(euc_url).title #=> ??? # ¤Î¤Ç¡¢Ì᤹ agent.visited_page(euc_url).encoding='EUC-JP' agent.visited_page(euc_url).title #=> "¥¿¥¤¥È¥ë"
## Yahoo!¤Ç¤ÎRuby¤ÈMechanize¤Î¸¡º÷·ë²Ì¤Ë¤³¤Îwiki¤¬´Þ¤Þ¤ì¤ë¤«¤òUTF-8¤Çɽ¼¨¤·¤Æ¤Û¤¯¤Û¤¯¤¹¤ë¥¹¥¯¥ê¥×¥È require 'rubygems' require 'mechanize' # ¸¡º÷¥Ü¥Ã¥¯¥¹¤ËÆþ¤ì¤ë¸ì search_word = 'Ruby Mechanize' # ¸¡º÷·ë²Ì¤Ë´Þ¤Þ¤ì¤Æ¤¤¤ÆÍߤ·¤¤¥µ¥¤¥È¤Î¤Æ¤¤È¤¦URL re_my_site = Regexp.new(Regexp.quote('w.livedoor.jp/ruby_mechanize')) agent = Mechanize.new # Yahoo!¸¡º÷¤Ë¥¢¥¯¥»¥¹¤·¤Æ¥Ú¡¼¥¸¤ò¼èÆÀ agent.get('http://search.yahoo.co.jp/') # ¢¬¤Ë´Þ¤Þ¤ì¤ë¥Õ¥©¡¼¥à¤«¤é¡¢name = "w" ¤Ç¤¢¤ë¥Õ¥©¡¼¥à¤ò¤Ò¤È¤Ä¼è¤ê½Ð¤¹ agent.page.form_with(:name => 'w'){|f| # <input name=p id=yschsp size=54 ... ¤Ê¸¡º÷¥Ü¥Ã¥¯¥¹¤Îvalue¤Ë¸¡º÷¸ì¤òÀßÄê # f.field_with(:name => 'p').value = search_word # ºÇ¶á¤Ï¤á¤ó¤É¤¤¤Î¤ÇÆþÎÏÍó¸ÂÄê¤Î Hash É÷µË¡¤Ç¥É¥ó¤µ¤é¤ËÇÜ f['p'] = search_word # ¥é¥¸¥ª¥Ü¥¿¥ó¤È¤·¤Æ2¤Ä¤á¡ÊÇÛÎó1Í×ÁÇÌܡˤΡÖÆüËܸì¤Î¥Ú¡¼¥¸¤Î¤ß¡×¥é¥¸¥ª¥Ü¥¿¥ó¤ò¥Á¥§¥Ã¥¯ f.radiobuttons[1].check # HTML ¤Ç submit ¤È»ØÄꤵ¤ì¤Æ¤¤¤ë¥Ü¥¿¥ó¤ò²¡¤·¤ÆÉáÄ̤˥ե©¡¼¥à¥Ç¡¼¥¿¤òÁ÷¿®¤·¡¢·ë²Ì¤ò¼õ¤±¼è¤ë f.click_button } # ¸¡º÷·ë²Ì¤«¤é¡Ö<li>¤ÎÃæ¤Ë¤¢¤Ã¤¿<a>¡×¤òɽ¤¹Nokogiri¥Î¡¼¥É¥ª¥Ö¥¸¥§¥¯¥È¤òsearch¤Çõ¤·¡¢ # href °À¤ÎÃͤ¬ re_my_site ¤È¥Þ¥Ã¥Á¤¹¤ë¤è¤¦¤Ê¤â¤Î¤ò¤¹¤Ù¤ÆÃê½Ð hit_urls = agent.page.search('li a').find_all{|e| re_my_site =~ e['href']} if hit_urls.empty? then puts 'no result' else # ¡Ö<a>¥¿¥°¤òɽ¤¹Nokogiri¥ª¥Ö¥¸¥§¥¯¥È¡×¤Îinner_text¥á¥½¥Ã¥É¤Ï¥¿¥°¤Ç¶´¤Þ¤ì¤¿Ê¸»úÎó puts hit_urls.map{|e| "#{e.inner_text}\n#{e['href']}"}.join("\n") end·ë²Ì¡ÊUTF-8¡Ë¡§
Mechanize - Ruby Mechanize wiki (ja ... http://w.livedoor.jp/ruby_mechanize/d/Mechanize Mechanize::Form::Button - Ruby ... http://w.livedoor.jp/ruby_mechanize/d/Mechanize::Form::Button
- new - Mechanize::Form ¥ª¥Ö¥¸¥§¥¯¥È¤òÀ¸À®
- [] - »ØÄꤷ¤¿Ì¾Á°¤ÎÆþÎÏÍó¤äÁªÂò¥á¥Ë¥å¡¼¤ÎÃͤòʸ»úÎó¤ÇÊÖ¤¹
- []= - »ØÄꤷ¤¿Ì¾Á°¤ÎÆþÎÏÍó¤äÁªÂò¥á¥Ë¥å¡¼¤ËÃͤòÀßÄꤹ¤ë
- action - ¥Õ¥©¡¼¥à¤ÎÁ÷¿®Àè URL ʸ»úÎó¤òÊÖ¤¹
- add_field! - ¿·µ¬¤ËÆþÎÏÍó¤òºîÀ®¤·¤Æ¥Õ¥©¡¼¥à¤ËÄɲ乤ë
- button - alias #button_with
- button_with - ¾ò·ï¤òËþ¤¿¤¹ºÇ½é¤ÎButton¥ª¥Ö¥¸¥§¥¯¥È¤ò¥Õ¥©¡¼¥à¤«¤é¤Ò¤È¤ÄÈ´¤½Ð¤·¤ÆÊÖ¤¹
- buttons - ¥Õ¥©¡¼¥à¤Ë´Þ¤Þ¤ì¤ë¥Ü¥¿¥ó¤È¥¤¥á¡¼¥¸¥Ü¥¿¥ó¤òÇÛÎó¤ÇÊÖ¤¹
- buttons_with - ¾ò·ï¤òËþ¤¿¤¹Button¥ª¥Ö¥¸¥§¥¯¥È¤ò¥Õ¥©¡¼¥à¤«¤éÁ´¤ÆÈ´¤½Ð¤·¤ÆÇÛÎó¤ÇÊÖ¤¹
- checkbox - alias #checkbox_with
- checkbox_with - ¾ò·ï¤òËþ¤¿¤¹ºÇ½é¤ÎCheckBox¥ª¥Ö¥¸¥§¥¯¥È¤ò¥Õ¥©¡¼¥à¤«¤é¤Ò¤È¤ÄÈ´¤½Ð¤·¤ÆÊÖ¤¹
- checkboxes - ¥Õ¥©¡¼¥à¤Ë´Þ¤Þ¤ì¤ë¥Á¥§¥Ã¥¯¥Ü¥Ã¥¯¥¹¤ò½Ð¸½½ç¤ËÇÛÎó¤ÇÊÖ¤¹
- checkboxes_with - ¾ò·ï¤òËþ¤¿¤¹CheckBox¥ª¥Ö¥¸¥§¥¯¥È¤ò¥Õ¥©¡¼¥à¤«¤éÁ´¤ÆÈ´¤½Ð¤·¤ÆÇÛÎó¤ÇÊÖ¤¹
- click_button - ¥Õ¥©¡¼¥à¤Î¸½ºß¤Î¥Ç¡¼¥¿¤òÁ÷¿®¥Ü¥¿¥ó¤ò²¡¤·¤Æ¥µ¡¼¥Ð¤ØÁ÷¤ê¡¢·ë²Ì¤Î¥Ú¡¼¥¸¤òÍúÎò¤ËÄɲä·¤ÆÊÖ¤¹
- delete_field! - »ØÄꤷ¤¿Ì¾Á°¤ò»ý¤ÄÆþÎÏÍ󥪥֥¸¥§¥¯¥È¼«ÂΤòºï½ü¤¹¤ë
- elements - alias #fields
- enctype - ¥Õ¥©¡¼¥à¥Ç¡¼¥¿Á÷¿®¤Î¥¨¥ó¥³¡¼¥Ç¥£¥ó¥°·Á¼°¤òÊÖ¤¹
- field - alias #field_with
- field_with - ¾ò·ï¤òËþ¤¿¤¹ºÇ½é¤ÎField¥ª¥Ö¥¸¥§¥¯¥È¤ò¥Õ¥©¡¼¥à¤«¤é¤Ò¤È¤ÄÈ´¤½Ð¤·¤ÆÊÖ¤¹
- fields - ¥Õ¥©¡¼¥à¤Ë´Þ¤Þ¤ì¤ë¥Æ¥¥¹¥ÈÆþÎÏÍó¤ÈÁªÂò¥á¥Ë¥å¡¼¤òÇÛÎó¤ÇÊÖ¤¹
- fields_with - ¾ò·ï¤òËþ¤¿¤¹Field¥ª¥Ö¥¸¥§¥¯¥È¤ò¥Õ¥©¡¼¥à¤«¤éÁ´¤ÆÈ´¤½Ð¤·¤ÆÇÛÎó¤ÇÊÖ¤¹
- file_upload - alias #file_upload_with
- file_upload_with - ¾ò·ï¤òËþ¤¿¤¹ºÇ½é¤ÎFileUpload¥ª¥Ö¥¸¥§¥¯¥È¤ò¥Õ¥©¡¼¥à¤«¤é¤Ò¤È¤ÄÈ´¤½Ð¤·¤ÆÊÖ¤¹
- file_uploads - ¥Õ¥©¡¼¥à¤Ë´Þ¤Þ¤ì¤ë¡Ö¥Õ¥¡¥¤¥ë¥¢¥Ã¥×¥í¡¼¥ÉÍó¡×¤ò½Ð¸½½ç¤ËÇÛÎó¤ÇÊÖ¤¹
- file_uploads_with - ¾ò·ï¤òËþ¤¿¤¹FileUpload¥ª¥Ö¥¸¥§¥¯¥È¤ò¥Õ¥©¡¼¥à¤«¤éÁ´¤ÆÈ´¤½Ð¤·¤ÆÇÛÎó¤ÇÊÖ¤¹
- form_node - ¤³¤Î¥Õ¥©¡¼¥à¤òɽ¤¹ HTML ¥Î¡¼¥É¤òÊÖ¤¹
- has_field? - »ØÄꤷ¤¿Ì¾Á°¤ÎÆþÎÏÍó¤äÁªÂò¥á¥Ë¥å¡¼¤¬¥Õ¥©¡¼¥à¤Ë´Þ¤Þ¤ì¤Æ¤¤¤ë¤«¤É¤¦¤«¤ò¿¿µ¶¤ÇÊÖ¤¹
- has_key? - alias #has_field?
- has_value? - »ØÄꤷ¤¿Ãͤò»ý¤ÄÆþÎÏÍó¤äÁªÂò¥á¥Ë¥å¡¼¤¬¥Õ¥©¡¼¥à¤Ë´Þ¤Þ¤ì¤Æ¤¤¤ë¤«¤É¤¦¤«¤ò¿¿µ¶¤ÇÊÖ¤¹
- hidden_field? - »ØÄꤷ¤¿Ì¾Á°¤Î±£¤·ÆþÎÏÍ󤬥ե©¡¼¥à¤Ë´Þ¤Þ¤ì¤ë¤«¤É¤¦¤«¤ò¿¿µ¶¤ÇÊÖ¤¹
- hiddens - ¥Õ¥©¡¼¥à¤Ë´Þ¤Þ¤ì¤ë±£¤·ÆþÎÏÍó¤òÇÛÎó¤ÇÊÖ¤¹
- keys - ¥Õ¥©¡¼¥à¤Ë´Þ¤Þ¤ì¤ëÆþÎÏÍó¤ÈÁªÂò¥á¥Ë¥å¡¼¤Î̾Á°¤òÆâÉô½ç¤ËÇÛÎó¤ÇÊÖ¤¹
- method - ¥Õ¥©¡¼¥àÁ÷¿®¤Ë»ÈÍѤ¹¤ë HTTP ¥á¥½¥Ã¥É¤òÊÖ¤¹
- method_missing - ÆþÎÏÍó¤äÁªÂò¥á¥Ë¥å¡¼¤Î̾Á°¤ÈƱ¤¸¥á¥½¥Ã¥É̾¤Ç¤½¤ÎÃͤؤΥ¢¥¯¥»¥¹¼êÃʤòÄ󶡤¹¤ë
- name - ¥Õ¥©¡¼¥à¤Î̾Á°¤òʸ»úÎó¤ÇÊÖ¤¹
- page - ¥Õ¥©¡¼¥à¤Î°¤¹¤ë¥Ú¡¼¥¸¤òÊÖ¤¹
- radiobutton - alias #radiobutton_with
- radiobutton_with - ¾ò·ï¤òËþ¤¿¤¹ºÇ½é¤ÎRadioButton¥ª¥Ö¥¸¥§¥¯¥È¤ò¥Õ¥©¡¼¥à¤«¤é¤Ò¤È¤ÄÈ´¤½Ð¤·¤ÆÊÖ¤¹
- radiobuttons - ¥Õ¥©¡¼¥à¤Ë´Þ¤Þ¤ì¤ë¥é¥¸¥ª¥Ü¥¿¥ó¤ò½Ð¸½½ç¤ËÇÛÎó¤ÇÊÖ¤¹
- radiobuttons_with - ¾ò·ï¤òËþ¤¿¤¹RadioButton¥ª¥Ö¥¸¥§¥¯¥È¤ò¥Õ¥©¡¼¥à¤«¤éÁ´¤ÆÈ´¤½Ð¤·¤ÆÇÛÎó¤ÇÊÖ¤¹
- set_fields - ÆþÎÏÍó¤äÁªÂò¥á¥Ë¥å¡¼¤ÎÃͤò Hash ¤Ç°ìÅÙ¤ËÊ£¿ô¥»¥Ã¥È¤¹¤ë
- submit - ¥Õ¥©¡¼¥à¤Î¸½ºß¤Î¥Ç¡¼¥¿¤ò¥µ¡¼¥Ð¤ØÁ÷¤ê¡¢·ë²Ì¤Î¥Ú¡¼¥¸¤òÍúÎò¤ËÄɲä·¤ÆÊÖ¤¹
- submit_button? - »ØÄꤷ¤¿Ì¾Á°¤ÎÁ÷¿®¥Ü¥¿¥ó¤¬¥Õ¥©¡¼¥à¤Ë´Þ¤Þ¤ì¤ë¤«¤É¤¦¤«¤ò¿¿µ¶¤ÇÊÖ¤¹
- submits - ¥Õ¥©¡¼¥à¤Ë´Þ¤Þ¤ì¤ëÁ÷¿®¥Ü¥¿¥ó¤òÇÛÎó¤ÇÊÖ¤¹
- text_field? - »ØÄꤷ¤¿Ì¾Á°¤Î°ì¹ÔÆþÎÏÍ󤬥ե©¡¼¥à¤Ë´Þ¤Þ¤ì¤ë¤«¤É¤¦¤«¤ò¿¿µ¶¤ÇÊÖ¤¹
- texts - ¥Õ¥©¡¼¥à¤Ë´Þ¤Þ¤ì¤ë°ì¹ÔÆþÎÏÍó¤òÇÛÎó¤ÇÊÖ¤¹
- values - ¥Õ¥©¡¼¥à¤Ë´Þ¤Þ¤ì¤ëÆþÎÏÍó¤ÈÁªÂò¥á¥Ë¥å¡¼¤ÎÃͤòÆâÉô½ç¤ËÇÛÎó¤ÇÊÖ¤¹
- xxxx_with - ¾ò·ï¤òËþ¤¿¤¹ºÇ½é¤Îxxxx¥ª¥Ö¥¸¥§¥¯¥È¤ò¥Õ¥©¡¼¥à¤«¤é¤Ò¤È¤ÄÈ´¤½Ð¤·¤ÆÊÖ¤¹
- xxxxs_with - ¾ò·ï¤òËþ¤¿¤¹xxxx¥ª¥Ö¥¸¥§¥¯¥È¤ò¥Õ¥©¡¼¥à¤«¤éÁ´¤ÆÈ´¤½Ð¤·¤ÆÇÛÎó¤ÇÊÖ¤¹
- action= - ¥Õ¥©¡¼¥à¤ÎÁ÷¿®Àè URL ʸ»úÎó¤òÊѹ¹¤¹¤ë
- add_button_to_query - Á÷¿®¥Ç¡¼¥¿¤Ë¥Ü¥¿¥ó¤Î̾Á°¤ÈÃͤòÄɲ乤ë
- build_query - Á÷¿®Ê¸»úÎóºîÀ®ÍѤÎÇÛÎó¤òºî¤ë
- enctype= - ¥Õ¥©¡¼¥à¤Îenctype¤Îʸ»úÎó¤ò»ØÄê
- method= - ¥Õ¥©¡¼¥àÁ÷¿®¤Ë»ÈÍѤ¹¤ë HTTP ¥á¥½¥Ã¥É¤òÊѹ¹¤¹¤ë
- name= - ¥Õ¥©¡¼¥à¤Î̾Á°¤òÊѹ¹¤¹¤ë
- reset_button? - »ØÄꤷ¤¿Ì¾Á°¤Î¥ê¥»¥Ã¥È¥Ü¥¿¥ó¤¬¥Õ¥©¡¼¥à¤Ë´Þ¤Þ¤ì¤ë¤«¤É¤¦¤«¤ò¿¿µ¶¤ÇÊÖ¤¹
- resets - ¥Õ¥©¡¼¥à¤Ë´Þ¤Þ¤ì¤ë¥ê¥»¥Ã¥È¥Ü¥¿¥ó¤òÇÛÎó¤ÇÊÖ¤¹
- request_data - ¼ÂºÝ¤ÎÁ÷¿®¥Ç¡¼¥¿Ê¸»úÎó¤òºîÀ®¤·¤ÆÊÖ¤¹
- textarea_field? - »ØÄꤷ¤¿Ì¾Á°¤ÎÊ£¿ô¹ÔÆþÎÏÍ󤬥ե©¡¼¥à¤Ë´Þ¤Þ¤ì¤ë¤«¤É¤¦¤«¤ò¿¿µ¶¤ÇÊÖ¤¹
- textareas - ¥Õ¥©¡¼¥à¤Ë´Þ¤Þ¤ì¤ëÊ£¿ô¹ÔÆþÎÏÍó¤òÇÛÎó¤ÇÊÖ¤¹
¥Õ¥©¡¼¥à¤òɽ¤¹ Mechanize::Form ¥ª¥Ö¥¸¥§¥¯¥È¤òÀ¸À®¤·¤Þ¤¹¡£
¥æ¡¼¥¶¡¼¤¬»ÈÍѤ¹¤ë¤³¤È¤Ï¤¢¤ê¤Þ¤»¤ó¡£
°ú¿ô node ¤Ï Nokogiri ¤«¤éÃê½Ð¤·¤¿¤³¤Î¥Õ¥©¡¼¥à¤Î¥Î¡¼¥É¤Î¥ª¥Ö¥¸¥§¥¯¥È¤Ç¤¹¡£Hash ¤Ç¤âÆ°ºî¤·¤Ê¤¯¤â¤Ê¤¤¤Ç¤¹¡£
°ú¿ô mech ¤Ï Mechanize ¥ª¥Ö¥¸¥§¥¯¥È¤Ç¤¹¡£#click_button ¤Ê¤É¤Ç¥µ¡¼¥Ð¥¢¥¯¥»¥¹¤¹¤ë»þ¤Ë»È¤¤¤Þ¤¹¡£
°ú¿ô page ¤Ï ¤³¤Î¥Õ¥©¡¼¥à¤ò´Þ¤ó¤Ç¤¤¤¿ Mechanize::Page ¥ª¥Ö¥¸¥§¥¯¥È¤Ç¤¹¡£Á÷¿®Ê¸»úÎó¤Îʸ»ú¥¨¥ó¥³¡¼¥Ç¥£¥ó¥°¤Î·èÄê¤Ë»ÈÍѤ·¤Þ¤¹¡£
#fields ¤«¤é¡¢»ØÄꤷ¤¿Ì¾Á°¤ò»ý¤ÄÆþÎÏÍó¤äÁªÂò¥á¥Ë¥å¡¼¤ò Hash É÷¤Ë¤Ò¤È¤ÄÃê½Ð¤·¡¢¤½¤Î¸½ºß¤ÎÃͤòÊÖ¤·¤Þ¤¹¡£
³ºÅö¤¹¤ëÆþÎÏÍó¤Ê¤É¤¬Ìµ¤«¤Ã¤¿¾ì¹ç¤Ï nil ¤òÊÖ¤·¤Þ¤¹¡£
agent.page.form_with(:name => 'f1'){|f| # ¤è¤¦¤Ï Hash ¤Î¤è¤¦¤Ë¥¢¥¯¥»¥¹ p f['q'] # °Ê²¼¤ÈƱ¤¸ p f.field_with(:name => 'q').value }°ú¿ô¤Ï #field ¤¬¼õ¤±ÉÕ¤±¤ë¤â¤Î¤Ç¡¢Ä̾ï¤Ïʸ»úÎó¤«Àµµ¬É½¸½¤Ç¤¹¡£
Mechanize::Page#forms_with ¤Ê¤É¡¢ÇÛÎó¤òÊÖ¤¹¥á¥½¥Ã¥É¤ÈÊ»ÍѤ·¤Æ¤¤¤ë¤È¡Ö¤µ¤Æ¤³¤Î [] ¤ÎÃæ¤Ë¤Ï²¿¤¬Æþ¤ë¤Ç¤·¤ç¤¦¤«¡×¤Î¤è¤¦¤Ê¥¯¥¤¥º¤¬²Äǽ¤Ê¾õÂ֤ˤʤë¤Î¤Ç¡¢»ÈÍѤˤÏÃí°Õ¤ò¤·¤Æ¤¯¤À¤µ¤¤¡£
# ¤Ê¤ó¤À¤³¤ì agent.page.form_with(:name => 'f')['q'] agent.page.forms_with(:name => /\Af/)[1]
#fields ¤«¤é¡¢»ØÄꤷ¤¿Ì¾Á°¤ò»ý¤ÄÆþÎÏÍó¤äÁªÂò¥á¥Ë¥å¡¼¤ÎÃͤò Hash É÷¤Ë¹¹¿·¤·¤Þ¤¹¡£
value ¤òÊÖ¤·¤Þ¤¹¡£
agent.page.form_with(:name => 'f1'){|f| # ¤è¤¦¤Ï Hash ¤Î¤è¤¦¤Ë¥¢¥¯¥»¥¹ f['q'] = 'Ruby' # °Ê²¼¤ÈƱ¤¸ p f.field_with(:name => 'q').value = 'Ruby' }Âè 1°ú¿ô¤Î field_name ¤Ï #field ¤¬¼õ¤±ÉÕ¤±¤ë¤â¤Î¤Ç¡¢Ä̾ï¤Ïʸ»úÎó¤«Àµµ¬É½¸½¤Ç¤¹¡£
³ºÅö¤¹¤ëÆþÎÏÍó¤Ê¤É¤¬Ìµ¤«¤Ã¤¿¾ì¹ç¤Ï¡¢#add_field! ¤Ç¤½¤Î field_name ¤È value ¤ò»ý¤ÄÆþÎÏÍ󤬿·µ¬¤ËºîÀ®¤µ¤ì¤Þ¤¹¡£field_name Éôʬ¤¬´Ö°ã¤Ã¤Æ¤¤¤Æ¤â¥¨¥é¡¼¤Ê¤É¤Ï½Ð¤Þ¤»¤ó¡£
¤³¤Î¥Õ¥©¡¼¥à¤ÎÁ÷¿®Àè URL ¤òʸ»úÎó¤ÇÊÖ¤·¤Þ¤¹¡£
¥Ç¥Õ¥©¥ë¥È¤Ï¸µ¤Î form Í×ÁǤΠaction °À¤ÎÃͤǤ¹¡£Mechanize::Util.html_unescape ¤Ç HTML ¥¨¥¹¥±¡¼¥×¤¬¥¢¥ó¥¨¥¹¥±¡¼¥×¤µ¤ì¤Æ¤¤¤Þ¤¹¡£action °À¼«ÂΤ¬Â¸ºß¤·¤Ê¤¤ÉÔÀµ¤Ê¥Õ¥©¡¼¥à¤ËÂФ·¤Æ¤Ï NoMethodError ¤òȯÀ¸¤µ¤»¤Þ¤¹¡£HTML ¾å¤Ç action="" ¤À¤Ã¤¿¾ì¹ç¤Ï¶õʸ»úÎó "" ¤òÊÖ¤·¤Þ¤¹¤¬¡¢¤³¤Î¥ª¥Ö¥¸¥§¥¯¥È¤¬ Mechanize::Page#forms ¤ÇºîÀ®¤µ¤ì¤¿¤â¤Î¤Ç¡¢ HTML ¤Ç action="" ¤À¤Ã¤¿¾ì¹ç¤Ï¡¢¶õʸ»úÎó¤Ç¤Ï¤Ê¤¯ #page.uri ¤¬ÊÖ¤ê¤Þ¤¹¡£
ÁêÂÐ URL ¤â¤½¤Î¤Þ¤ÞÊÖ¤ê¤Þ¤¹¡ÊÁ÷¿®»þ¤ËÀäÂÐ URL ¤¬¥Õ¥©¡¼¥à¤Î¤¢¤ë¥Ú¡¼¥¸¤Î URL ¤«¤é·×»»¤µ¤ì¤Þ¤¹¡Ë¡£mailto: ¤Ê¤É¤ÏÆ°ºî¤»¤º¡¢¼Â¼Á http: ¤ä https: ¤Ê¤É¤Î Mechanize ¤¬Æ°ºî²Äǽ¤Ê¥¹¥¡¼¥à¤Î URI ¤Ë¸ÂÄꤵ¤ì¤Þ¤¹¡£
action="" ¤Ç¡¢page.uri ¤È¤·¤Æ base Í×ÁǤΠURL ¤¬»ÈÍѤµ¤ì¤Æ¤·¤Þ¤Ã¤Æ¤¤¤Æ¤¤¤ë¤è¤¦¤Ê¾ì¹ç¤Ë¤Ï #action= ¤ÇºÆÀßÄꤷ¤Æ¤¯¤À¤µ¤¤¡£
¤³¤Î¥Õ¥©¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤Ë field_name ¤È¤¤¤¦Ì¾Á°¤È value ¤È¤¤¤¦Ãͤò»ý¤Ä Mechanize::Form::Field ¥ª¥Ö¥¸¥§¥¯¥È¤ò¿·µ¬¤ËÄɲä·¤Þ¤¹¡£
Äɲäνª¤ï¤Ã¤¿ #fields ¤òÊÖ¤·¤Þ¤¹¡£
µ¼»÷Ū¤ÊÆþÎÏ¥Ú¥¢¤ò¼êÆ°¤ÇÄɲ乤ëɬÍפ¬¤¢¤ë¤È¤¤Ë»È¤¤¤Þ¤¹¡£
{¥á¥½¥Ã¥É̾ => ÊÖ¤êÃÍ} ¤È¤¤¤¦°ú¿ô pattern ¤òËþ¤¿¤¹ Mechanize::Form::Button ·Ñ¾µ¥ª¥Ö¥¸¥§¥¯¥È¤ò #buttons ¤«¤éõ¤·¡¢ºÇ½é¤Î¤â¤Î¤òÊÖ¤·¤Þ¤¹¡£
# b ¤È¤¤¤¦Ì¾Á°¤Î¥Ü¥¿¥ó¤òÌÀ¼¨Åª¤Ë²¡¤·¤ÆÁ÷¿® page.form_with(:name => 'f1'){|form| ... form.click_button(form.button_with(:name => 'b')) }Æ°ºî¤Ï #xxxx_with ¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£
͸ú¤Ê¥á¥½¥Ã¥É¤ÈÃͤΥڥ¢¤Ï Mechanize::Form::Button ¤Î¥á¥½¥Ã¥É¤ÈÊÖ¤êÃͤˤʤê¤Þ¤¹¡£
¤³¤Î¥Õ¥©¡¼¥à¤Ë´Þ¤Þ¤ì¤ë¥Ü¥¿¥ó¤ò¡¢Mechanize::Form::Button ¤ª¤è¤Ó¤½¤ì¤ò·Ñ¾µ¤·¤¿¥Ü¥¿¥ó¥¯¥é¥¹¤Î¥ª¥Ö¥¸¥§¥¯¥È¤Ë¤·¤ÆÇÛÎó¤Ë¤·¤ÆÊÖ¤·¤Þ¤¹¡£
¥Õ¥©¡¼¥à¤Ë³ºÅö¤¹¤ë¥Ü¥¿¥ó¤¬´Þ¤Þ¤ì¤Æ¤¤¤Ê¤¤¾ì¹ç¤Ï¶õ¤ÎÇÛÎó [] ¤òÊÖ¤·¤Þ¤¹¡£
³ºÅö¤¹¤ë HTML ¤Ï°Ê²¼¤ÎÄ̤ꡣ
Mechanize::Form::Button ¤ÇÊÖ¤ë
- <input type="button"> # name ¤Ï̵¤¯¤Æ¤è¤¤
- <button> # name ¤Ï̵¤¯¤Æ¤è¤¤¡¢¤¿¤À¤· <button type="reset"> ¤Ï Mechanize ¤Ç¤Ï¥Ü¥¿¥ó¤È¤ß¤Ê¤µ¤Ê¤¤
- <input type="image" name="***"> # name ɬ¿Ü
- <input type="submit"> # name ¤Ï̵¤¯¤Æ¤è¤¤
- <input type="reset" name="***"> # name ɬ¿Ü
- name °À¤Î¤Ê¤¤ type="image" ¤Ê input Í×ÁÇ
- name °À¤Î¤Ê¤¤ type="reset" ¤Ê input Í×ÁÇ
- type="reset" ¤Ê button Í×ÁÇ
ÇÛÎóÍ×ÁǤÏɬ¤º¤·¤â½Ð¸½½ç¤Ç¤Ï¤Ê¤¯¡¢¡ÖHTML ¾å¤Ç¤Î <input type=button¤«submit¤«reset>¡×¤Î¼¡¤Ë¡ÖHTML ¾å¤Ç¤Î <button>¡×¤Î½ç¤Ë³ÊǼ¤µ¤ì¤Æ¤¤¤Þ¤¹¡£<button> ¤¬Ìµ¤±¤ì¤Ð½Ð¸½½ç¤Ê¤Î¤Ç¤¹¤¬¡£
<input type="submit"> ¤Î·Á¤ÎÁ÷¿®¥Ü¥¿¥ó¤À¤±¤ò½Ð¸½½ç¤ËÊÖ¤·¤ÆÍߤ·¤¤¾ì¹ç¤Ï #submits ¤ò»ÈÍѤ·¤Æ¤¯¤À¤µ¤¤¡£¥ê¥»¥Ã¥È¥Ü¥¿¥ó¤À¤±¤òÊÖ¤·¤ÆÍߤ·¤¤¾ì¹ç¤Ï #resets ¤¬¤¢¤ê¤Þ¤¹¤¬¡¢Mechanize 1.0.0 »þÅÀ¤ÇÍøÍÑÍÑÅÓ¤¬¤¢¤ê¤Þ¤»¤ó¡£imagebuttons ¤Ï Mechanize 1.0.0 »þÅÀ¤Ç¸ºß¤·¤Þ¤»¤ó¡£
¾ò·ï¤Ë¤è¤ëÃê½Ð¤Ï #button_with ¤È #buttons_with ¤Ç¹Ô¤¦¤³¤È¤¬¤Ç¤¤Þ¤¹¡£
¥Õ¥¡¥¤¥ë¤Ê¤É¤Î¥¢¥Ã¥×¥í¡¼¥É¤ËÍѤ¤¤é¤ì¤ë¡Ö»²¾È¥Ü¥¿¥ó¡×¤Ï #file_uploads ¤Ë´Þ¤Þ¤ì¤Æ¤¤¤Þ¤¹¡£
¥é¥¸¥ª¥Ü¥¿¥ó¤Ï̾¾Î¤¬¥Ü¥¿¥ó¤Ç¤¹¤¬ #radiobuttons ¤ò¤É¤¦¤¾¡£
Á÷¿®¥Ü¥¿¥ó¤òÁ÷¿®¤Î¤¿¤á¤Ë²¡¤·¤¿¤¤¤À¤±¤Î¾ì¹ç¤Ï¤ï¤¶¤ï¤¶¥Ü¥¿¥ó¤òõ¤¹¤Î¤Ç¤Ï¤Ê¤¯ #click_button ¤Î¥Ç¥Õ¥©¥ë¥ÈÃͤÎÍøÍѤ⸡Ƥ¤·¤Æ¤¯¤À¤µ¤¤¡£
Mechanize ¤Ç¤Ï¥ê¥»¥Ã¥È¥Ü¥¿¥ó¤òÁ÷¿®¥Ç¡¼¥¿¥ê¥»¥Ã¥È¤Î¤¿¤á¤Ë²¡¤¹¤³¤È¤Ï¤Ç¤¤Þ¤»¤ó¡Êµ¡Ç½¤¬Ìµ¤¤¤Î¤ÇÁ÷¿®¥Ü¥¿¥ó¤È¤ß¤Ê¤·¤Æ¤½¤Î¤Þ¤ÞÁ÷¿®¤µ¤ì¤Þ¤¹¡Ë¡£
¥¤¥á¡¼¥¸¥Ü¥¿¥ó¤È»÷¤Æ¤¤¤Þ¤¹¤¬¡¢<area> ¤ò»ÈÍѤ¹¤ë¤¤¤ï¤æ¤ë¥¯¥ê¥Ã¥«¥Ö¥ë¥Þ¥Ã¥×¡Ê¥¯¥é¥¤¥¢¥ó¥È¥µ¥¤¥É¥¯¥ê¥Ã¥¯¥Þ¥Ã¥×¡Ë¤Ï Mechanize::Page#links ¤Ë´Þ¤Þ¤ì¤Æ¤¤¤Þ¤¹¡£
{¥á¥½¥Ã¥É̾ => ÊÖ¤êÃÍ} ¤È¤¤¤¦°ú¿ô pattern ¤òËþ¤¿¤¹ Mechanize::Form::Button ¥ª¥Ö¥¸¥§¥¯¥È¤ò #buttons ¤«¤éõ¤·¡¢Á´¤Æ¤òÇÛÎó¤ÇÊÖ¤·¤Þ¤¹¡£
Æ°ºî¤Ï #xxxxs_with ¤ò¡¢¾ò·ï¤Ë¤Ä¤¤¤Æ¤Ï #button_with ¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£
{¥á¥½¥Ã¥É̾ => ÊÖ¤êÃÍ} ¤È¤¤¤¦°ú¿ô pattern ¤òËþ¤¿¤¹ Mechanize::Form::CheckBox ¥ª¥Ö¥¸¥§¥¯¥È¤ò #checkboxes ¤«¤éõ¤·¡¢ºÇ½é¤Î¤â¤Î¤òÊÖ¤·¤Þ¤¹¡£
# <label> CM¤ÇÃΤä¿ </label> ¤ÊÍó¤ò¥Á¥§¥Ã¥¯ page.forms[0].checkbox_with(:label => ' CM¤ÇÃΤä¿ ').check # ¥é¥Ù¥ë¤Ë¡ÖCM¤ÇÃΤ信פȤ¤¤¦Ê¸»úÎ󤬴ޤޤì¤Æ¤¤¤ëÍó¤ò¥Á¥§¥Ã¥¯ page.forms[0].checkbox_with(:label => /CM¤ÇÃΤä¿/).check # UTF-8 # value °À ¤¬ 32 ¤Ê¥Á¥§¥Ã¥¯¥Ü¥Ã¥¯¥¹Í󤫤é¥Á¥§¥Ã¥¯¤ò¤Ï¤º¤¹ page.forms[0].checkbox_with(:value => '32').uncheckÆ°ºî¤Ï #xxxx_with ¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£
͸ú¤Ê¥á¥½¥Ã¥É¤ÈÃͤΥڥ¢¤Ï Mechanize::Form::CheckBox ¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£
¤³¤Î¥Õ¥©¡¼¥à¤Ë´Þ¤Þ¤ì¤ë¥Á¥§¥Ã¥¯¥Ü¥Ã¥¯¥¹¤ò Mechanize::Form::CheckBox ¥ª¥Ö¥¸¥§¥¯¥È¤Ë¤·¤ÆÇÛÎó¤ÇÊÖ¤·¤Þ¤¹¡£
name °À¤Ïɬ¿Ü¤Ç¤¹¡£¥Õ¥©¡¼¥à¤Ë name °À¤ÎÀßÄꤵ¤ì¤¿¥Á¥§¥Ã¥¯¥Ü¥Ã¥¯¥¹¤¬´Þ¤Þ¤ì¤Æ¤¤¤Ê¤¤¾ì¹ç¤Ï¶õ¤ÎÇÛÎó [] ¤òÊÖ¤·¤Þ¤¹¡£
³ºÅö¤¹¤ë HTML ¤Ï°Ê²¼¤ÎÄ̤ꡣ
- <input type="checkbox" name="***">
¾ò·ï¤Ë¤è¤ëÃê½Ð¤Ï #checkbox_with ¤È #checkboxes_with ¤Ç¹Ô¤¦¤³¤È¤¬¤Ç¤¤Þ¤¹¡£
{¥á¥½¥Ã¥É̾ => ÊÖ¤êÃÍ} ¤È¤¤¤¦°ú¿ô pattern ¤òËþ¤¿¤¹ Mechanize::Form::CheckBox ¥ª¥Ö¥¸¥§¥¯¥È¤ò #checkboxes ¤«¤éõ¤·¡¢Á´¤Æ¤òÇÛÎó¤ÇÊÖ¤·¤Þ¤¹¡£
Æ°ºî¤Ï #xxxxs_with ¤ò¡¢¾ò·ï¤Ë¤Ä¤¤¤Æ¤Ï #checkbox_with ¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£
¤³¤Î¥Õ¥©¡¼¥à¤Î¸½ºß¤Î¥Ç¡¼¥¿¤ò¡¢¥Õ¥©¡¼¥à¤ÎºÇ½é¤Î¥Ü¥¿¥ó¤¬²¡¤µ¤ì¤¿¤â¤Î¤È¤ß¤Ê¤·¤Æ¥Õ¥©¡¼¥àÆâ¤Ë»ØÄꤵ¤ì¤¿·Á¼°¤ÇÁ÷¿®Àè¤ËÁ÷¿®¤·¡¢·ë²Ì¤Î¥Ú¡¼¥¸¤òÍúÎò¤ËÄɲä·¤¿¾å¤ÇÊÖ¤·¤Þ¤¹¡£
Á÷¿®¥Ü¥¿¥ó»ØÄ꤬¥Ç¥Õ¥©¥ë¥È¤Ç¤Ä¤¤¤Æ¤ë #submit ¤Ç¤¹¡£#buttons ¤ÎºÇ½é¤Î¥Ü¥¿¥ó¤¬»ÈÍѤµ¤ì¤Þ¤¹¡£Á÷¿®¥Ü¥¿¥ó¤¬¥Õ¥©¡¼¥àÆâ¤Ë 1¤Ä¤À¤±¤È¤¤¤¦°ìÈÌŪ¤Ê¾õ¶·¤Î¾ì¹ç¡¢Ä̾ï¤Î Web ¥Ö¥é¥¦¥¶¤ÎÆ°ºî¤È¤Û¤ÜƱÍͤˤʤäƤ¤¤Þ¤¹¡£Ä̾ï¤Ï¤³¤Î¥á¥½¥Ã¥É¤ò»È¤Ã¤Æ¤¯¤À¤µ¤¤¡£ÉáÄ̤ËÍøÍѤµ¤ì¤ë̵̾¤Ê¥ê¥»¥Ã¥È¥Ü¥¿¥ó¤Ï²¡²¼¤ÎÂоݤˤʤê¤Þ¤»¤ó¤¬¡¢name ¤Î¤Ä¤¤¤¿¥ê¥»¥Ã¥È¥Ü¥¿¥ó¤¬Á÷¿®¥Ü¥¿¥ó¤è¤êÁ°¤ËÇÛÃÖ¤µ¤ì¤Æ¤¤¤¿¾ì¹ç¤Ï¸íÆ°ºî¤·¤Æ¥ê¥»¥Ã¥È¥Ü¥¿¥ó¤Î name ¤È value ¤òÁ÷¿®¤·¤Æ¤·¤Þ¤¤¤Þ¤¹¡£
Button ¥ª¥Ö¥¸¥§¥¯¥È¤ò»ØÄꤹ¤ë¤³¤È¤â¤Ç¤¤Þ¤¹¡£#submit ¤ËľÀÜÅϤµ¤ì¤ë¤Î¤Ç¾ÜºÙ¤Ï¤½¤Á¤é¤Ç¡£submit ¤È¤Ï°ã¤¤¡¢ÄɲåإåÀ¤ò»ØÄꤹ¤ë¤³¤È¤Ï¤Ç¤¤Þ¤»¤ó¡£
#fields ¤«¤é¡¢field_name ¤È°ìÃפ¹¤ë̾Á°¤ò»ý¤ÄÆþÎÏÍó¤Þ¤¿¤ÏÁªÂò¥á¥Ë¥å¡¼¤Î¥ª¥Ö¥¸¥§¥¯¥È¤òÁ´¤Æºï½ü¤·¤Þ¤¹¡£
ºï½ü¸å¤Î #fields ¤òÊÖ¤·¤Þ¤¹¡£
field_name ¤Ïʸ»úÎó¤Ç¤Ê¤±¤ì¤Ð¤Ê¤ê¤Þ¤»¤ó¡£
¥ª¥Ö¥¸¥§¥¯¥È¼«ÂΤòºï½ü¤·¤Æ¤·¤Þ¤¦¤³¤È¤ËÃí°Õ¤·¤Æ¤¯¤À¤µ¤¤¡£Ä̾ï¤Ï¥Õ¥©¡¼¥àÉôÉʤΠvalue ÁêÅö¤ò¿¿¤Ë¤·¤Ê¤¤¡ÊnilÅù¤ò»ØÄê¡Ë¤³¤È¤ÇÁ÷¿®»ÈÍѲóÈò¤Ï½¼Ê¬¤Ê¤Ï¤º¤Ç¤¹¡£
¤³¤Î¥Õ¥©¡¼¥à¥Ç¡¼¥¿¤òÁ÷¿®¤¹¤ëºÝ¤Î¥¨¥ó¥³¡¼¥É¤Ë»ÈÍѤ¹¤Ù¤¥¨¥ó¥³¡¼¥Ç¥£¥ó¥°·Á¼°¤Î̾¾Î¤òʸ»úÎó¤ÇÊÖ¤·¤Þ¤¹¡£
¥Ç¥Õ¥©¥ë¥È¤Ï¥Õ¥©¡¼¥à¤Î enctype °À¤ÎÃͤǤ¹¡£enctype °À¤¬Ìµ¤«¤Ã¤¿¾ì¹ç¤Ï "application/x-www-form-urlencoded" ¤¬ÊÖ¤ê¤Þ¤¹¡£
#submitt ¤Î°ú¿ô¤ÎÄɲåإåÀ¤Ê¤É¤Ç¾å½ñ¤¤µ¤ì¤Ê¤¤¸Â¤ê¡¢¤³¤Î¥á¥½¥Ã¥É¤ÎÊÖ¤êÃͤǥ¨¥ó¥³¡¼¥É¤µ¤ì¡¢¤³¤Î¥á¥½¥Ã¥É¤ÎÊÖ¤êÃͤ¬ Content-Type: ¥ê¥¯¥¨¥¹¥È¥Ø¥Ã¥À¤ËµºÜ¤µ¤ì¤ÆÁ÷¿®¤µ¤ì¤Þ¤¹¡£Mechanize 1.0.0 ¤¬Âбþ¤·¤Æ¤¤¤ë¥¨¥ó¥³¡¼¥Ç¥£¥ó¥°·Á¼°¤Ï "application/x-www-form-urlencoded" ¤È "multipart/form-data" ¤Î2¤Ä¤Ç¤¹¡£
ºÆÀßÄê¤Ï #enctype= ¤Ç¹Ô¤¤¤Þ¤¹¤¬¡¢ÄɲåإåÀ¤Ç½¤ÀµÉÔ²Äǽ¤Ê¡Ö¥Õ¥¡¥¤¥ë¥¢¥Ã¥×¥í¡¼¥ÉÍ󤬤¢¤ë¤Î¤Ëenctype°À¤¬¸í¤Ã¤Æ¤ÆMechanize¤¬¸íÆ°ºî¤¹¤ë¡×¤È¤¤¤¦¾ì¹ç°Ê³°¤Ï»È¤¦µ¡²ñ¤¬¤Ê¤¤¤È»×¤ï¤ì¤Þ¤¹¡£
¥Õ¥¡¥¤¥ë¥¢¥Ã¥×¥í¡¼¥É»þ¤ÎÁ÷¿®¥Þ¥ë¥Á¥Ñ¡¼¥È¥Ç¡¼¥¿Æâ¤Ëµ½Ò¤¹¤ë Content-Type ¹Ô¤Ï Mechanize::Form::FileUpload#mime_type ¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£
{¥á¥½¥Ã¥É̾ => ÊÖ¤êÃÍ} ¤È¤¤¤¦°ú¿ô pattern ¤òËþ¤¿¤¹ Mechanize::Form::Field ¥ª¥Ö¥¸¥§¥¯¥È¤ò #fields ¤«¤éõ¤·¡¢ºÇ½é¤Î¤â¤Î¤òÊÖ¤·¤Þ¤¹¡£
# name ¤¬ q ¤ÊÆþÎÏÍó¤Ë 'val' ¤ò¥»¥Ã¥È page.forms[0].field_with(:name => 'q').value = 'val'
# list1 ¤È¤¤¤¦ÁªÂò¥á¥Ë¥å¡¼¤Î2¹àÌÜÌܤò¥Á¥§¥Ã¥¯ page.forms[0].field_with(:name => 'list1').options[1].checkÆ°ºî¤Ë¤Ä¤¤¤Æ¤Ï #xxxx_with ¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£
͸ú¤Ê¥á¥½¥Ã¥É¤ÈÃͤΥڥ¢¤Ï Mechanize::Form::Field ¤« Mechanize::Form::SelectList ¤Î¥á¥½¥Ã¥É¤ÈÊÖ¤êÃͤˤʤê¤Þ¤¹¡£
¤³¤Î¥Õ¥©¡¼¥à¤Ë´Þ¤Þ¤ì¤ëÆþÎÏÍó¤È±£¤·¥Õ¥£¡¼¥ë¥É¡¢ÁªÂò¥á¥Ë¥å¡¼¤òÇÛÎó¤Ë¤·¤ÆÊÖ¤·¤Þ¤¹¡£
¥Õ¥©¡¼¥à¤Ë name °À¤ÎÀßÄꤵ¤ì¤¿³ºÅöÍ×ÁǤ¬´Þ¤Þ¤ì¤Æ¤¤¤Ê¤¤¾ì¹ç¤Ï¶õ¤ÎÇÛÎó [] ¤òÊÖ¤·¤Þ¤¹¡£
³ºÅö¤¹¤ë HTML ¤Ï°Ê²¼¤ÎÄ̤ꡣ
Mechanize::Form::Text ¤ÇÊÖ¤ë
- <input type="text" name="***"> # °ì¹ÔÆþÎÏÍó
- <input type="password" name="***"> # ÆþÎϤ¬¥Þ¥¹¥¯¤µ¤ì¤ë¥Ñ¥¹¥ï¡¼¥ÉÆþÎÏÍó
- <input name="***"> # type ¤¬Ìµ¤¤¤â¤Î¡¢Mechanize¤ÇÂбþ¥¯¥é¥¹¤Î̵¤¤ type ¤Î¤â¤Î
- <textarea name="***"> # Ê£¿ô¹ÔÆþÎÏÍó
- <input type="hidden" name="***"> # ²èÌ̤Ëɽ¼¨¤µ¤ì¤Ê¤¤¤â¤Î
- <input type="textarea" name="***"> # »ÅÍ;å¤Ï¸ºß¤·¤Ê¤¤¥¨¥é¡¼½èÍý
- <select name="***"> # ¤Ò¤È¤Ä¤À¤±¹àÌܤ¬ÁªÂò²Äǽ¤Ê¥É¥í¥Ã¥×¥À¥¦¥ó¥á¥Ë¥å¡¼
- <select multiple name="***"> # Ctrl¥¡¼Åù¤ÇÊ£¿ô¹àÌܤ¬ÁªÂò²Äǽ¤Ê¥É¥í¥Ã¥×¥À¥¦¥ó¥á¥Ë¥å¡¼
¾ò·ï¤Ë¤è¤ëÃê½Ð¤Ï #field_with ¤È #fields_with ¤Ç¹Ô¤¦¤³¤È¤¬¤Ç¤¤Þ¤¹¡£
¤Ê¤ª¡¢ÇÛÎóÆâ¤Î¥ª¥Ö¥¸¥§¥¯¥È¤Î¼ïÎà¤Î½çÈÖ¤ÏÆâÉô¤ÎÅÔ¹ç¤Ç¤°¤Á¤ã¤°¤Á¤ã¤Ë¤Ê¤Ã¤Æ¤¤¤Þ¤¹¡£ÇÛÎó¤È¤·¤Æ¤Îź¤¨»ú¥¢¥¯¥»¥¹¤Ç¤Ï¤Ê¤¯¡¢¶ËÎÏ field_with Åù¤Ç¾ò·ïÃê½Ð¤¹¤ë¤è¤¦¤Ë¤·¤Æ¤¯¤À¤µ¤¤¡£ÇÛÎóÍ×ÁǤȤ·¤Æ¥¢¥¯¥»¥¹¤·¤¿¤¤¾ì¹ç¤Ï¡¢¤½¤ì¤¾¤ì¤Î¥¯¥é¥¹¤Î¥ª¥Ö¥¸¥§¥¯¥È¤À¤±¤Ë¥¢¥¯¥»¥¹¤Ç¤¤ë #texts ¤ä #hiddens ¤ä #textareas ¤ò¤ª´«¤á¤·¤Þ¤¹¡£¤³¤ì¤é¤Ï½Ð¸½½ç¤Ë¤Ê¤Ã¤Æ¤¤¤Þ¤¹¡£¤Ê¤ª¡¢selectlists ¤Ï Mechanize 1.0.0 »þÅÀ¤Ç¤Ï¸ºß¤·¤Þ¤»¤ó¡£
²¿¤é¤«¤ÎÍýͳ¤Ç fields ¤½¤Î¤â¤Î¤ò HTML ¾å¤Ç¤Î½Ð¸½½ç¤Ë¤É¡¼¤·¤Æ¤âʤ٤¿¤¤¤È¤¤¤¦¾ì¹ç¤Ï sort ¤·¤Æ¤¯¤À¤µ¤¤¡£
require 'rubygems'; require 'mechanize' html = <<HTML <html><title>test</title><body><form> <select name="one"></select> <input type="text" name="two"> <textarea name="three"></textarea> </form></body></html> HTML agent = Mechanize.new page = Mechanize::Page.new(URI.parse('http://localhost/'), {'content-type'=>'text/html'}, html, '200', agent) agent.__send__(:add_to_history, page) p agent.page.forms[0].fields.map{|f| f.name} p agent.page.forms[0].fields.sort.map{|f| f.name}·ë²Ì¡§
["two", "three", "one"] ["one", "two", "three"]
{¥á¥½¥Ã¥É̾ => ÊÖ¤êÃÍ} ¤È¤¤¤¦°ú¿ô pattern ¤òËþ¤¿¤¹ Mechanize::Form::Field ·Ñ¾µ¥ª¥Ö¥¸¥§¥¯¥È¤ò #fields ¤«¤éõ¤·¡¢Á´¤Æ¤òÇÛÎó¤ÇÊÖ¤·¤Þ¤¹¡£
Æ°ºî¤Ë¤Ä¤¤¤Æ¤Ï #xxxxs_with ¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£
͸ú¤Ê¥á¥½¥Ã¥É¤ÈÃͤΥڥ¢¤Ï Mechanize::Form::Field ¤« Mechanize::Form::MultiSelectList¡¢Mechanize::Form::SelectList ¤Î¥á¥½¥Ã¥É¤ÈÊÖ¤êÃͤˤʤê¤Þ¤¹¡£
Ê£¿ô¤Î Field ¥ª¥Ö¥¸¥§¥¯¥È¤ËÃͤòÀßÄꤷ¤¿¤¤¾ì¹ç¤Ï #set_fields ¤âÍøÍѤǤ¤Þ¤¹¡£
{¥á¥½¥Ã¥É̾ => ÊÖ¤êÃÍ} ¤È¤¤¤¦°ú¿ô pattern ¤òËþ¤¿¤¹ Mechanize::Form::FileUpload ¥ª¥Ö¥¸¥§¥¯¥È¤ò #file_uploads ¤«¤éõ¤·¡¢ºÇ½é¤Î¤â¤Î¤òÊÖ¤·¤Þ¤¹¡£
# upload ¤È¤¤¤¦Ì¾Á°¤Î¥¢¥Ã¥×¥í¡¼¥ÉÍ󤫤é¥í¡¼¥«¥ë¤Î 001.jpg ¤ò»ØÄꤷ¤ÆÁ÷¿® page.form_with(:name => 'f1'){|form| form.file_upload_with(:name => 'upload').file_name = './001.jpg' form.click_button }Æ°ºî¤Ï #xxxx_with ¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£
͸ú¤Ê¥á¥½¥Ã¥É¤ÈÃͤΥڥ¢¤Ï Mechanize::Form::FileUpload ¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£
¤³¤Î¥Õ¥©¡¼¥à¤Ë´Þ¤Þ¤ì¤ë¥Õ¥¡¥¤¥ë¥¢¥Ã¥×¥í¡¼¥ÉÍó¤ò Mechanize::Form::FileUpload ¥ª¥Ö¥¸¥§¥¯¥È¤Ë¤·¤ÆÇÛÎó¤ÇÊÖ¤·¤Þ¤¹¡£
name °À¤Ïɬ¿Ü¤Ç¤¹¡£¥Õ¥©¡¼¥à¤Ë name °À¤ÎÀßÄꤵ¤ì¤¿¥Õ¥¡¥¤¥ë¥¢¥Ã¥×¥í¡¼¥ÉÍ󤬴ޤޤì¤Æ¤¤¤Ê¤¤¾ì¹ç¤Ï¶õ¤ÎÇÛÎó [] ¤òÊÖ¤·¤Þ¤¹¡£
³ºÅö¤¹¤ë HTML ¤Ï°Ê²¼¤ÎÄ̤ꡣ
- <input type="file">
¾ò·ï¤Ë¤è¤ëÃê½Ð¤Ï #file_upload_with ¤È #file_uploads_with ¤Ç¹Ô¤¦¤³¤È¤¬¤Ç¤¤Þ¤¹¡£
{¥á¥½¥Ã¥É̾ => ÊÖ¤êÃÍ} ¤È¤¤¤¦°ú¿ô pattern ¤òËþ¤¿¤¹ Mechanize::Form::FileUpload ¥ª¥Ö¥¸¥§¥¯¥È¤ò #file_uploads ¤«¤éõ¤·¡¢Á´¤Æ¤òÇÛÎó¤ÇÊÖ¤·¤Þ¤¹¡£
Æ°ºî¤Ï #xxxxs_with ¤ò¡¢¾ò·ï¤Ë¤Ä¤¤¤Æ¤Ï #file_upload_with ¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£
¤³¤Î¥Õ¥©¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤òºîÀ®¤·¤¿¤È¤¤Ë»ÈÍѤ·¤¿ HTML ¥Î¡¼¥É¤ò Nokogiri::HTML::Element Åù¤ÇÊÖ¤·¤Þ¤¹¡£
¤³¤Î¥Õ¥©¡¼¥à¼«ÂΤòɽ¤¹¥Î¡¼¥É¤¬ÊÖ¤ê¤Þ¤¹¡£Ãæ¿ÈŪ¤Ë¤Ï Nokogiri::HTML.parse(¤³¤Îform¥¿¥°) ¤Ç¤¹¡£
¾¤Î¥¯¥é¥¹¤È·¤¨¤ë¤Ê¤éËÜÅö¤Ï node ¤È¤¤¤¦¥á¥½¥Ã¥É̾¤Ç¤¢¤ë¤Ù¤¤Ç¤¹¤¬¡¢¤¤¤í¤¤¤í¤¢¤Ã¤Æ¤Þ¤ÀÄ󶡤µ¤ì¤Æ¤¤¤Þ¤»¤ó¡£
Mechanize::Page#form_with ¤Ç¤Ï class °À¤ä id °À¤Ë¤è¤ëÁªÂò¤¬¤Ç¤¤Ê¤¤¤Î¤Ç¡¢¤³¤Î form_node ¥á¥½¥Ã¥É¤¬ÍøÍѤµ¤ì¤Þ¤¹¡£
# <form id="exform"> ¤Ê¥Õ¥©¡¼¥à¤ò id °À¤ÎÃͤÇÃê½Ð # form_with(:id => 'exform') ¤Ë³ºÅö form = agent.page.forms.find{|f| f.form_node['id'] == 'exform'}
¤³¤Î¥Õ¥©¡¼¥à¤Ë»ØÄꤷ¤¿Ì¾Á°¤ÎÆþÎÏÍó¤äÁªÂò¥á¥Ë¥å¡¼¤¬¤¢¤ì¤Ð¿¿¤òÊÖ¤·¤Þ¤¹¡£
#fields ¤Ë´Þ¤Þ¤ì¤ë¥ª¥Ö¥¸¥§¥¯¥È¤Î Mechanize::Form::Field#name ¥á¥½¥Ã¥É¤ÎÊÖ¤êÃÍ¤È field_name ¤ò eql? ¤Çʸ»úÎóÈæ³Ó¤·¡¢°ìÃפ·¤¿¤â¤Î¤¬¤Ò¤È¤Ä¤Ç¤â¤¢¤ì¤Ð true ¤ò¡¢Ìµ¤±¤ì¤Ð false ¤òÊÖ¤·¤Þ¤¹¡£
°ú¿ô field_name ¤Ïʸ»úÎó¤Ç¤Ê¤±¤ì¤Ð¤Ê¤ê¤Þ¤»¤ó¡£Àµµ¬É½¸½¤ò»ÈÍѤ·¤¿¤¤¾ì¹ç¤Ï #field_with ¤ËÅϤ·¤Æ·ë²Ì¤ò¥Á¥§¥Ã¥¯¤·¤Æ¤¯¤À¤µ¤¤¡£
fill_login_field(page) if page.field_with(:name => /login/)
¤³¤Î¥Õ¥©¡¼¥à¤Ë»ØÄꤷ¤¿ÃͤÎÆþÎÏÍó¤äÁªÂò¥á¥Ë¥å¡¼¤¬¤¢¤ì¤Ð¿¿¤òÊÖ¤·¤Þ¤¹¡£
#fields ¤Ë´Þ¤Þ¤ì¤ë¥ª¥Ö¥¸¥§¥¯¥È¤Î Mechanize::Form::Field#value ¥á¥½¥Ã¥É¤ÎÊÖ¤êÃÍ¤È value ¤ò eql? ¤Çʸ»úÎóÈæ³Ó¤·¡¢°ìÃפ·¤¿¤â¤Î¤¬¤Ò¤È¤Ä¤Ç¤â¤¢¤ì¤Ð true ¤ò¡¢Ìµ¤±¤ì¤Ð false ¤òÊÖ¤·¤Þ¤¹¡£
°ú¿ô value ¤Ïʸ»úÎó¤Ç¤Ê¤±¤ì¤Ð¤Ê¤ê¤Þ¤»¤ó¡£Àµµ¬É½¸½¤ò»ÈÍѤ·¤¿¤¤¾ì¹ç¤Ï #field_with ¤ËÅϤ·¤Æ·ë²Ì¤ò¥Á¥§¥Ã¥¯¤·¤Æ¤¯¤À¤µ¤¤¡£
ÆþÎÏÍó¤ÎÃͤòÊѹ¹¤·¤Æ¤¤¤¿¾ì¹ç¤Ï¡¢Êѹ¹¸å¤ÎÃͤÈÈæ³Ó¤µ¤ì¤Þ¤¹¡£
¤³¤Î¥Õ¥©¡¼¥à¤Ë»ØÄꤷ¤¿Ì¾Á°¤Î±£¤·ÆþÎÏÍ󤬤¢¤ì¤Ð¿¿¤òÊÖ¤·¤Þ¤¹¡£
#hiddens ¤Ë´Þ¤Þ¤ì¤ë¥ª¥Ö¥¸¥§¥¯¥È¤Î Mechanize::Form::Hidden#name ¥á¥½¥Ã¥É¤ÎÊÖ¤êÃÍ¤È field_name ¤ò == ¤Çʸ»úÎóÈæ³Ó¤·¡¢°ìÃפ·¤¿¤â¤Î¤¬¤Ò¤È¤Ä¤Ç¤â¤¢¤ì¤Ð true ¤ò¡¢Ìµ¤±¤ì¤Ð false ¤òÊÖ¤·¤Þ¤¹¡£
°ú¿ô¤Ïʸ»úÎó¤Ç¤Ê¤±¤ì¤Ð¤Ê¤ê¤Þ¤»¤ó¡£Àµµ¬É½¸½¤ò»ÈÍѤ·¤¿¤¤¾ì¹ç¤Ï #field_with ¤ËÅϤ·¤Æ·ë²Ì¤ò¥Á¥§¥Ã¥¯¤·¤Æ¤¯¤À¤µ¤¤¡£
#hiddens ¤Ë´Þ¤Þ¤ì¤Ê¤¤±£¤·ÆþÎÏÍó¤Ïõ¤»¤Þ¤»¤ó¡£
¤³¤Î¥Õ¥©¡¼¥à¤Ë´Þ¤Þ¤ì¤ë±£¤·ÆþÎÏÍó¤ò Mechanize::Form::Hidden ¥ª¥Ö¥¸¥§¥¯¥È¤Ë¤·¤ÆÇÛÎó¤ÇÊÖ¤·¤Þ¤¹¡£
ÆþÎÏÍó¤Î name °À¤Ïɬ¿Ü¤Ç¤¹¡£¤³¤Î¥Õ¥©¡¼¥à¤Ë name °À¤ÎÀßÄꤵ¤ì¤¿±£¤·ÆþÎÏÍ󤬴ޤޤì¤Æ¤¤¤Ê¤¤¾ì¹ç¤Ï¶õ¤ÎÇÛÎó [] ¤òÊÖ¤·¤Þ¤¹¡£
³ºÅö¤¹¤ë HTML ¤Ï°Ê²¼¤ÎÄ̤ꡣ
- <input type="hidden" name="***">
»ÄÇ°¤Ê¤¬¤é hidden_with ¤Î¤è¤¦¤Ê¾ò·ïÃê½Ð¥á¥½¥Ã¥É¤Ï¤¢¤ê¤Þ¤»¤ó¡£#field_with ¤È #fields_with ¤ÇÂåÍѤ·¤Æ¤¯¤À¤µ¤¤¡£
¤³¤Î¥Õ¥©¡¼¥à¤¬»ý¤ÄÆþÎÏÍó¤äÁªÂò¥á¥Ë¥å¡¼¤Î̾Á°¤òÆþÎϾõÂ֤˴ؤï¤é¤ºÁ´¤Æ½¸¤á¡¢ÇÛÎó¤È¤·¤ÆÊÖ¤·¤Þ¤¹¡£
#fields ¤Ë´Þ¤Þ¤ì¤ë¥ª¥Ö¥¸¥§¥¯¥È¤Î Mechanize::Form::Field#name ¥á¥½¥Ã¥É¤ÎÊÖ¤êÃͤò½¸¤á¤Æ¡¢ÇÛÎó¤Ë¤·¤ÆÊÖ¤·¤Þ¤¹¡£
½çÈÖ¤Ï #fields °Í¸¤Ç¡¢HTML ¾å¤Ç¤Î½Ð¸½½ç¤ò¤ª¤ª¤à¤ÍÈ¿±Ç¤·¤Æ¤¤¤Þ¤»¤ó¡£
¤³¤Î¥Õ¥©¡¼¥à¤ÎÁ÷¿®»þ¤Ë»ÈÍѤ¹¤ë HTTP ¥á¥½¥Ã¥É¤òÂçʸ»úʸ»úÎó¤ÇÊÖ¤·¤Þ¤¹¡£
¥Ç¥Õ¥©¥ë¥È¤Ï¸µ¤Î form Í×ÁǤΠmethod °À¤ÎÃͤǤ¹¡£method °À¼«ÂΤ¬Ìµ¤«¤Ã¤¿¾ì¹ç¤Ï GET ¤òÊÖ¤·¡¢method="" ¤À¤Ã¤¿¾ì¹ç¤Ï¤³¤Î¥á¥½¥Ã¥É¤Ï¶õʸ»úÎó "" ¤òÊÖ¤·¤Þ¤¹¡ÊÁ÷¿®¤Ë¤Ï¼ºÇÔ¤·¤Þ¤¹¡Ë¡£
ºÆÀßÄê¤Ï #method= ¤«¤é¹Ô¤¤¤Þ¤¹¡£
¥Õ¥©¡¼¥à¤Ë´Þ¤Þ¤ì¤ëÆþÎÏÍó¤äÁªÂò¥á¥Ë¥å¡¼¤ÎÃͤμèÆÀ¤äÀßÄê¤Ë¡¢Ì¾Á°¤ÈƱ¤¸¥á¥½¥Ã¥É̾¤ò»È¤¦¤³¤È¤¬¤Ç¤¤Þ¤¹¡£
agent.page.form_with(:name => 'f').field_with(:name => 'q').value = 'Ruby'¤È½ñ¤¯Âå¤ï¤ê¤Ë¡¢ÆþÎÏÍóÁªÂò¤È Mechanize::Form::Field#value= ¥á¥½¥Ã¥ÉÉôʬ¤ò¡ÖÈô¤Ð¤·¡×¤Æ¡¢
agent.page.form_with(:name => 'f').q = 'Ruby'¤È½ñ¤±¤ë¤è¤¦¤Ë¤·¤Þ¤¹¡£¤Á¤ç¤¦¤É¡¢#[]= ¥á¥½¥Ã¥É¤òÍøÍѤ¹¤ë¤È¤³¤í¤Î
agent.page.form_with(:name => 'f')['q'] = 'Ruby'¤ÈƱ¤¸¤è¤¦¤Ê¤â¤Î¤Ë¤Ê¤ê¤Þ¤¹¡£
°ì±þºÇûµ½Ò¤Ê¤Î¤Ç¤¹¤¬¡¢Ruby ɸ½à¤Î method_missing ¤òÍøÍѤ·¤Æ¤¤¤ë¤Î¤Ç¡¢¤³¤Î¥Õ¥©¡¼¥à¥ª¥Ö¥¸¥§¥¯¥È¤¬»ý¤Ã¤Æ¤¤¤ë¥á¥½¥Ã¥É̾¤ÈÈï¤ë¾ì¹ç¤ÏÆ°ºî¤·¤Þ¤»¤ó¡£
page.forms[0].field_with(:name => 'field').value¤Î¤Ä¤â¤ê¤Ç
page.forms[0].field¤È½ñ¤¯¤È¡¢#field ¥á¥½¥Ã¥É¤Î¸Æ¤Ó½Ð¤·¤À¤È»×¤ï¤ì¤Æ¥¨¥é¡¼¤Ë¤Ê¤ê¤Þ¤¹¡£Ruby ¤Î¥á¥½¥Ã¥É̾¤Ë¤Ï - ¤ò´Þ¤à¤³¤È¤â¤Ç¤¤Ê¤¤¤Î¤Ç¡¢
page.forms[0].field_with(:name => 'field-data').value¤Î¤Ä¤â¤ê¤Ç
page.forms[0].field-data¤È½ñ¤¤¤Æ¤â¥¨¥é¡¼¤Ë¤Ê¤ê¤Þ¤¹¡£
¤É¤¦¤·¤Æ¤â¥á¥½¥Ã¥É¥Á¥§¡¼¥ó¤Î¸«¤«¤±¤Ç½ñ¤¤¿¤¤¤È¤¤¤¦¤Î¤Ç¤Ê¤±¤ì¤Ð¡¢#[] ¤ä #[]= ¤Ç Hash ¤Î¤è¤¦¤Ëµ½Ò¤·¤¿¤Û¤¦¤¬´ÊÊؤÀ¤È»×¤¤¤Þ¤¹¡£
page.forms[0].field_with(:name => 'field').value page.forms[0]['field'] page.forms[0].field_with(:name => 'field-data').value page.forms[0]['field-data']¤³¤Î¾ì¹ç¤Ï field ¤È¤¤¤¦Ì¾Á°¤â field-data ¤È¤¤¤¦Ì¾Á°¤âÌäÂê¤Ê¤¯Æ°ºî¤·¤Þ¤¹¤·¡¢¸åÆü¡Ö¤³¤Îq¥á¥½¥Ã¥É¤Ã¤Æ¥Þ¥Ë¥å¥¢¥ë¤Î¤É¤³¤Ë½ñ¤¤¤Æ¤¢¤ë¤Î¡©¡×¤ÈǺ¤à¤³¤È¤â¤Ê¤¯¤Ê¤ê¤Þ¤¹¡£
¤³¤Î¥Õ¥©¡¼¥à¤Î̾Á°¤òʸ»úÎó¤ÇÊÖ¤·¤Þ¤¹¡£
¥Ç¥Õ¥©¥ë¥È¤Ï¸µ¤Î form Í×ÁǤΠname °À¤ÎÃͤǤ¹¡£name °À¤¬Ìµ¤«¤Ã¤¿¾ì¹ç¤Ï nil ¤òÊÖ¤·¤Þ¤¹¡£
ºÆÀßÄê¤Ï #name= ¤«¤é¹Ô¤¤¤Þ¤¹¡£
¤³¤Î¥Õ¥©¡¼¥à¤¬½ê°¤¹¤ë Mechanize::Page ¥ª¥Ö¥¸¥§¥¯¥È¤òÊÖ¤·¤Þ¤¹¡£
agent.page.form_with(:name => 'f1'){|form| p agent.page == form.page #=> true }Ä̾Form.new ¤Î°ú¿ô¤Ç»ØÄꤵ¤ì¤¿¥Ú¡¼¥¸¤ÈƱ°ì¥ª¥Ö¥¸¥§¥¯¥È¤¬ÊÖ¤ê¤Þ¤¹¤¬¡¢¼êÆ°ºîÀ®»þ¤Ê¤É¤Ç̵»ØÄê¤À¤Ã¤¿¾ì¹ç¤Ë¤Ï nil ¤òÊÖ¤·¤Þ¤¹¡£
{¥á¥½¥Ã¥É̾ => ÊÖ¤êÃÍ} ¤È¤¤¤¦°ú¿ô pattern ¤òËþ¤¿¤¹ Mechanize::Form::RadioButton ¥ª¥Ö¥¸¥§¥¯¥È¤ò #radiobuttons ¤«¤éõ¤·¡¢ºÇ½é¤Î¤â¤Î¤òÊÖ¤·¤Þ¤¹¡£
# <label>¡¡ÃËÀ</label> ¤Ê¥é¥¸¥ª¥Ü¥¿¥ó¤Î¤ß on page.forms[0].radiobutton_with(:label => '¡¡ÃËÀ').check # ¥é¥Ù¥ë¤Ë¡ÖÃËÀ¡×¤È¤¤¤¦Ê¸»úÎ󤬴ޤޤì¤Æ¤¤¤ë¥é¥¸¥ª¥Ü¥¿¥ó¤Î¤ß on page.forms[0].radiobutton_with(:label => /ÃËÀ/).check # UTF-8 # value °À ¤¬ e2 ¤Ê¥é¥¸¥ª¥Ü¥¿¥ó¤Î¤ß on page.forms[0].radiobutton_with(:value => 'e2').checkÆ°ºî¤Ï #xxxx_with ¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£
͸ú¤Ê¥á¥½¥Ã¥É¤ÈÃͤΥڥ¢¤Ï Mechanize::Form::RadioButton ¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£
¤³¤Î¥Õ¥©¡¼¥à¤Ë´Þ¤Þ¤ì¤ë¥é¥¸¥ª¥Ü¥¿¥ó¤ò Mechanize::Form::RadioButton ¥ª¥Ö¥¸¥§¥¯¥È¤Ë¤·¤ÆÇÛÎó¤ÇÊÖ¤·¤Þ¤¹¡£
name °À¤Ïɬ¿Ü¤Ç¤¹¡£¥Õ¥©¡¼¥à¤Ë name °À¤ÎÀßÄꤵ¤ì¤¿¥é¥¸¥ª¥Ü¥¿¥ó¤¬´Þ¤Þ¤ì¤Æ¤¤¤Ê¤¤¾ì¹ç¤Ï¶õ¤ÎÇÛÎó [] ¤òÊÖ¤·¤Þ¤¹¡£
³ºÅö¤¹¤ë HTML ¤Ï°Ê²¼¤ÎÄ̤ꡣ
- <input type="radio" name="***">
¾ò·ï¤Ë¤è¤ëÃê½Ð¤Ï #radiobutton_with ¤È #radiobuttons_with ¤Ç¹Ô¤¦¤³¤È¤¬¤Ç¤¤Þ¤¹¡£
{¥á¥½¥Ã¥É̾ => ÊÖ¤êÃÍ} ¤È¤¤¤¦°ú¿ô pattern ¤òËþ¤¿¤¹ Mechanize::Form::RadioButton ¥ª¥Ö¥¸¥§¥¯¥È¤ò #radiobuttons ¤«¤éõ¤·¡¢Á´¤Æ¤òÇÛÎó¤ÇÊÖ¤·¤Þ¤¹¡£
# gender ¤È¤¤¤¦Ì¾Á°¤Ç³ç¤é¤ì¤ë¡Ö¥é¥¸¥ª¥Ü¥¿¥ó¥°¥ë¡¼¥×¡×¤Î2¸ÄÌܤò¥Á¥§¥Ã¥¯ page.forms[0].radiobuttons_with(:name => 'gender')[1].checkÆ°ºî¤Ï #xxxxs_with ¤ò¡¢¾ò·ï¤Ë¤Ä¤¤¤Æ¤Ï #radiobutton_with ¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£
͸ú¤Ê¥á¥½¥Ã¥É¤ÈÃͤΥڥ¢¤Ï Mechanize::Form::RadioButton ¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£
#fields ¤Ç°·¤¦ÆþÎÏÍó¤äÁªÂò¥á¥Ë¥å¡¼¤Ë¡¢Ãͤò°ìÅÙ¤ËÊ£¿ôÀßÄꤷ¤Þ¤¹¡£
°ú¿ô¤Î name_and_value_hash ¤¬ÊÖ¤ê¤Þ¤¹¡£
form[0].field_with(:name => 'name1').value = 'val1' form[0].field_with(:name => 'name2').value = 'val2'¤È¤¤¤¦2¤Ä¤ÎÆþÎÏÍó¤ËÂФ¹¤ë½èÍý¤ò
forms[0].set_fields('name1' => 'val1', 'name2' => 'val2')¤È Hash ¤òÍѤ¤¤Æ°ìȯ¤Ç½ñ¤¯¤³¤È¤¬¤Ç¤¤Þ¤¹¡£
name ¤Ë³ºÅö¤¹¤ë¤â¤Î¤Ïʸ»úÎó¤« Symbol ¤Ç»ØÄꤷ¤Þ¤¹¡£to_s ¤µ¤ì¤Æ¤¤¤ë¤Î¤ÇÀµµ¬É½¸½¤Ï»ÈÍѤǤ¤Þ¤»¤ó¡£name ¥á¥½¥Ã¥É¤ÎÊÖ¤êÃͰʳ°¤Ç¸¡º÷¤¹¤ë¤³¤È¤Ï¤Ç¤¤Þ¤»¤ó¡£
name ¤ËÁêÅö¤¹¤ëÆþÎÏÍ󤬥ե©¡¼¥à¤ËÊ£¿ô´Þ¤Þ¤ì¤Æ¤¤¤Æ¡¢ÀèƬ¤ÎÆþÎÏÍó°Ê³°¤ËÃͤò¥»¥Ã¥È¤·¤¿¤¤¤È¤¤¤¦¾ì¹ç¤Ï¡¢ index ¤òÍ×ÁÇ 2¤ÎÇÛÎó¤« Hash ¤Î¥Ú¥¢¤Ç»ØÄꤷ¤Þ¤¹¡£
form[0].fields_with(:name => 'name1')[index1].value = 'val1' form[0].fields_with(:name => 'name2')[index2].value = 'val2'¤Ï
forms[0].set_fields('name1' => ['val1', index1], 'name2' => ['val2', index2]) forms[0].set_fields('name1' => {index1 => 'val1'}, 'name2' => {index2 => 'val2'})¤Î¤É¤Á¤é¤«¤Çɽ¸½¤Ç¤¤Þ¤¹¡£index ¤Ï #fields_with ¤¬ÊÖ¤¹ÇÛÎó¤ËÂФ¹¤ë¤â¤Î¤Ç¡¢0 ¤«¤é»Ï¤Þ¤ê¤Þ¤¹¡£
¤³¤Î¥Õ¥©¡¼¥à¤Î¸½ºß¤Î¥Ç¡¼¥¿¤ò¡¢¥Õ¥©¡¼¥àÆâ¤Ë»ØÄꤵ¤ì¤¿·Á¼°¤ÇÁ÷¿®Àè¤ËÁ÷¿®¤·¡¢·ë²Ì¤Î¥Ú¡¼¥¸¤òÍúÎò¤ËÄɲä·¤¿¾å¤ÇÊÖ¤·¤Þ¤¹¡£
°ú¿ô¤Ç¥Ü¥¿¥ó¤ò»ØÄꤵ¤ì¤Ê¤¤¸Â¤ê¡¢Á÷¿®¥Ü¥¿¥ó¤Î̾Á°¤ÈÃͤòÁ÷¤ë¤³¤È¤Ï¤¢¤ê¤Þ¤»¤ó¡ÊÄ̾ï¤Î Web ¥Ö¥é¥¦¥¶¤È¤Ï°ã¤¦Æ°ºî¡Ë¡£¤³¤ì¤¬º¤¤ë¾ì¹ç¤Ïɬ¤º°ú¿ô¤Ë Button ¤ò»ØÄꤹ¤ë¤«¡¢ºÇ½é¤Î¥Ü¥¿¥ó¤Ä¤ submit ¤ò¹Ô¤¦ #click_button ¥á¥½¥Ã¥É¤ò»ÈÍѤ·¤Æ¤¯¤À¤µ¤¤¡£
ÄɲåإåÀ¤¬É¬Íפʾì¹ç¤ÏÂè 2°ú¿ô¤Ç»ØÄꤹ¤ë¤³¤È¤â¤Ç¤¤Þ¤¹¡£
ÆâÉô¤Ç¤Ï Mechanize#submit ¤ò agent.submit(self, button, headers) ¤Ê´¶¤¸¤ÇÍøÍѤ·¤Æ¤¤¤Þ¤¹¡Êagent¤ÏMechanize::Page::Form.new¤Ç¤Î°ú¿ô¡Ë¡£°ú¿ô¤Î button ¤È headers ¤Î°·¤¤¤Ë´Ø¤·¤Æ¤Ï¤½¤Á¤é¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£
¤³¤Î¥Õ¥©¡¼¥à¤Ë»ØÄꤷ¤¿Ì¾Á°¤ÎÁ÷¿®¥Ü¥¿¥ó¤¬¤¢¤ì¤Ð¿¿¤òÊÖ¤·¤Þ¤¹¡£
#submits ¤Ë´Þ¤Þ¤ì¤ë¥ª¥Ö¥¸¥§¥¯¥È¤Î Mechanize::Form::Submit#name ¥á¥½¥Ã¥É¤ÎÊÖ¤êÃÍ¤È button_name ¤ò == ¤Çʸ»úÎóÈæ³Ó¤·¡¢°ìÃפ·¤¿¤â¤Î¤¬¤Ò¤È¤Ä¤Ç¤â¤¢¤ì¤Ð true ¤ò¡¢Ìµ¤±¤ì¤Ð false ¤òÊÖ¤·¤Þ¤¹¡£
°ú¿ô¤Ïʸ»úÎó¤Ç¤Ê¤±¤ì¤Ð¤Ê¤ê¤Þ¤»¤ó¡£Àµµ¬É½¸½¤ò»ÈÍѤ·¤¿¤¤¾ì¹ç¤Ï #button_with ¤ËÅϤ·¤Æ·ë²Ì¤ò¥Á¥§¥Ã¥¯¤·¤Æ¤¯¤À¤µ¤¤¡£
#submits ¤Ë´Þ¤Þ¤ì¤Ê¤¤¥Ü¥¿¥ó¤Ïõ¤»¤Þ¤»¤ó¡£
¤³¤Î¥Õ¥©¡¼¥à¤Ë´Þ¤Þ¤ì¤ëÁ÷¿®¥Ü¥¿¥ó¤ò¡¢Mechanize::Form::Submit ¥ª¥Ö¥¸¥§¥¯¥È¤Ë¤·¤ÆÇÛÎó¤Ë¤·¤ÆÊÖ¤·¤Þ¤¹¡£
¥Õ¥©¡¼¥à¤ËÁ÷¿®¥Ü¥¿¥ó¤¬´Þ¤Þ¤ì¤Æ¤¤¤Ê¤¤¾ì¹ç¤Ï¶õ¤ÎÇÛÎó [] ¤òÊÖ¤·¤Þ¤¹¡£
³ºÅö¤¹¤ë HTML ¤Ï°Ê²¼¤ÎÄ̤ꡣ
- <input type="submit">
»ÄÇ°¤Ê¤¬¤é submit_with ¤Î¤è¤¦¤Ê¾ò·ïÃê½Ð¥á¥½¥Ã¥É¤Ï¤¢¤ê¤Þ¤»¤ó¡£#button_with ¤È #buttons_with ¤ÇÂåÍѤ·¤Æ¤¯¤À¤µ¤¤¡£
<button> ¤Ï <button type="submit"> ¤ÇÁ÷¿®¥Ü¥¿¥ó¤È¤·¤Æµ¡Ç½¤·¤Þ¤¹¤¬¡¢Mechanize 1.0.0 »þÅÀ¤Ç¤Ï¤³¤Î¥á¥½¥Ã¥É¤Ç¤Ï°·¤¤¤Þ¤»¤ó¡£#buttons ¤Ë¤Ï´Þ¤Þ¤ì¤ë¤Î¤Ç¤½¤Á¤é¤ò»ÈÍѤ·¤Æ¤¯¤À¤µ¤¤¡£
¤³¤Î¥Õ¥©¡¼¥à¤Ë»ØÄꤷ¤¿Ì¾Á°¤Î°ì¹ÔÆþÎÏÍ󤬤¢¤ì¤Ð¿¿¤òÊÖ¤·¤Þ¤¹¡£
#texts ¤Ë´Þ¤Þ¤ì¤ë¥ª¥Ö¥¸¥§¥¯¥È¤Î Mechanize::Form::Text#name ¥á¥½¥Ã¥É¤ÎÊÖ¤êÃÍ¤È field_name ¤ò == ¤Çʸ»úÎóÈæ³Ó¤·¡¢°ìÃפ·¤¿¤â¤Î¤¬¤Ò¤È¤Ä¤Ç¤â¤¢¤ì¤Ð true ¤ò¡¢Ìµ¤±¤ì¤Ð false ¤òÊÖ¤·¤Þ¤¹¡£
°ú¿ô¤Ïʸ»úÎó¤Ç¤Ê¤±¤ì¤Ð¤Ê¤ê¤Þ¤»¤ó¡£Àµµ¬É½¸½¤ò»ÈÍѤ·¤¿¤¤¾ì¹ç¤Ï #field_with ¤ËÅϤ·¤Æ·ë²Ì¤ò¥Á¥§¥Ã¥¯¤·¤Æ¤¯¤À¤µ¤¤¡£
#texts ¤Ë´Þ¤Þ¤ì¤Ê¤¤°ì¹ÔÆþÎÏÍó¤Ïõ¤»¤Þ¤»¤ó¡£
¤³¤Î¥Õ¥©¡¼¥à¤Ë´Þ¤Þ¤ì¤ë°ì¹ÔÆþÎÏÍó¤ò Mechanize::Form::Text ¥ª¥Ö¥¸¥§¥¯¥È¤Ë¤·¤ÆÇÛÎó¤ÇÊÖ¤·¤Þ¤¹¡£
ÆþÎÏÍó¤Î name °À¤Ïɬ¿Ü¤Ç¤¹¡£¤³¤Î¥Õ¥©¡¼¥à¤Ë name °À¤ÎÀßÄꤵ¤ì¤¿°ì¹ÔÆþÎÏÍ󤬴ޤޤì¤Æ¤¤¤Ê¤¤¾ì¹ç¤Ï¶õ¤ÎÇÛÎó [] ¤òÊÖ¤·¤Þ¤¹¡£
³ºÅö¤¹¤ë HTML ¤Ï°Ê²¼¤ÎÄ̤ꡣ
- <input type="text" name="***">
»ÄÇ°¤Ê¤¬¤é text_with ¤Î¤è¤¦¤Ê¾ò·ïÃê½Ð¥á¥½¥Ã¥É¤Ï¤¢¤ê¤Þ¤»¤ó¡£#field_with ¤È #fields_with ¤ÇÂåÍѤ·¤Æ¤¯¤À¤µ¤¤¡£
¤³¤Î¥Õ¥©¡¼¥à¤¬»ý¤ÄÆþÎÏÍó¤äÁªÂò¥á¥Ë¥å¡¼¤ÎÃͤòÆþÎϾõÂ֤˴ؤï¤é¤ºÁ´¤Æ½¸¤á¡¢ÇÛÎó¤È¤·¤ÆÊÖ¤·¤Þ¤¹¡£
#fields ¤Ë´Þ¤Þ¤ì¤ë¥ª¥Ö¥¸¥§¥¯¥È¤Î Mechanize::Form::Field#value ¥á¥½¥Ã¥É¤ÎÊÖ¤êÃͤò½¸¤á¤Æ¡¢ÇÛÎó¤Ë¤·¤ÆÊÖ¤·¤Þ¤¹¡£
½çÈÖ¤Ï #fields °Í¸¤Ç¡¢HTML ¾å¤Ç¤Î½Ð¸½½ç¤ò¤ª¤ª¤à¤ÍÈ¿±Ç¤·¤Æ¤¤¤Þ¤»¤ó¡£ÆþÎÏÍó¤ÎÃͤòÊѹ¹¤·¤Æ¤¤¤¿¾ì¹ç¤Ï¡¢Êѹ¹¸å¤ÎÃͤ¬ÊÖ¤ê¤Þ¤¹¡£
{¥á¥½¥Ã¥É̾ => ÊÖ¤êÃÍ} ¤È¤¤¤¦¾ò·ï¤òËþ¤¿¤¹ Xxxx ¥ª¥Ö¥¸¥§¥¯¥È¤ò #xxxxs ¤«¤éõ¤·¡¢ºÇ½é¤Î¤â¤Î¤òÊÖ¤·¤Þ¤¹¡£
³ºÅö¤¬¤Ê¤¤¾ì¹ç¤Ï nil ¤òÊÖ¤·¤Þ¤¹¡£
¤ª¤ª¤à¤Í°Ê²¼¤ÈƱÍͤΤ³¤È¤ò¹Ô¤Ã¤Æ¤¤¤Þ¤¹¡£
# °ì½ï°ì½ï tgt = form.xxxx_with(:mes => value) tgt = form.xxxxs.find{|e| value === e.__send__(:mes)}°ú¿ô pattern ¤Ï¾ò·ï¤òɽ¤¹ Hash ¤Þ¤¿¤Ïʸ»úÎó name_str ¤Ç¤¹¡£name_str ¤Î¾ì¹ç¤Ï {:name => name_str} ¤È¤¤¤¦ Hash ¤È¤ß¤Ê¤·¤Þ¤¹¡£
Object#__send__ ·Ðͳ¤Ç½èÍý¤µ¤ì¤ë¤Î¤Ç¡¢send ¤Ç¤¤Ê¤¤¤è¤¦¤Ê¤â¤Î¡¢send ¤Î·ë²Ì¤¬°Õ¿Þ¤Ë±è¤ï¤Ê¤¤¤â¤Î¤Ï pattern ¤Î¥¡¼¤Ë¤ÏÉÔŬ¤Ç¤¹¡£¥Õ¥©¡¼¥à¥³¥ó¥È¥í¡¼¥ë¤ÎÁªÂò¤Ç°ìÈÌŪ¤Ê id °À¤Ë¤è¤ëÁªÂò¤Ï Mechanize 1.0.0 ¤Ç¤Ï¹Ô¤¨¤Þ¤»¤ó¡£class ¤Ë¤è¤ëÁªÂò¤â¹Ô¤¨¤Þ¤»¤ó¡£
# Object#id ¤Î·ë²Ì¤¬Èæ³Ó¤µ¤ì¤ÆÈᤷ¤¤¤³¤È¤Ë form.field_with(:id => 'firstname')¤É¤¦¤·¤Æ¤â id ¤ä class ¤ÇÃê½Ð¤·¤¿¤¤¾ì¹ç¤Ï¡¢¸µ¤ÎÇÛÎó¤ËÂФ·¤Æ find ¤ò¤«¤±¤Æ¤¯¤À¤µ¤¤¡£
# id ¤Ç¤µ¤¬¤¹ form.fields.find{|field| field['id'] == 'firstname'} # class ¤Ç¤µ¤¬¤¹ form.fields.find{|field| field['class'] == 'cities'}Èæ³Ó¤Ï value ¤Î === ¥á¥½¥Ã¥É¤¬»ÈÍѤµ¤ì¤ë¤Î¤Ç¡¢Àµµ¬É½¸½¤ò Hash ¤ÎÃͤˤ¹¤ë¤³¤È¤¬¤Ç¤¤Þ¤¹¡£¥á¥½¥Ã¥ÉÊÖ¤êÃÍ¤Ï UTF-8 ¤Ê¤Î¤Ç¡¢Àµµ¬É½¸½¤â UTF-8 ¤Ë¤·¤Æ¤¯¤À¤µ¤¤¡£
# ¡ÖÁ÷¿®¡×¤È¤¤¤¦Ê¸»úÎ󤬤Ȥˤ«¤¯´Þ¤Þ¤ì¤Æ¤¤¤ë¥Ü¥¿¥ó form.button_with(:value => /Á÷¿®/) # utf-8pattern ¤Ë¥Ú¥¢¤òÊ£¿ô»ØÄꤷ¤¿¾ì¹ç¡¢Á´¤Æ¤òËþ¤¿¤¹¤â¤Î¤ò¤Ò¤È¤ÄÈ´¤½Ð¤·¤Þ¤¹¡Ê¤É¤ì¤«¤òËþ¤¿¤¹¤â¤Î¡¢¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó¡Ë¡£
¥Ö¥í¥Ã¥¯¤ò¼è¤Ã¤¿¾ì¹ç¡¢½èÍý·ë²Ì¤¬¤Þ¤ë¤´¤È¥Ö¥í¥Ã¥¯¤ËÅϤê¤Þ¤¹¡£Ëþ¤¿¤¹¤â¤Î¤¬¤Ê¤¤¾ì¹ç¤Ç¤â nil ¤¬ÅϤäƤ·¤Þ¤¦¤Î¤ÇÃí°Õ¤·¤Æ¤¯¤À¤µ¤¤¡Ê¤¿¤¤¤Æ¤¤¥¨¥é¡¼¤ÇÆ°ºî¤·¤Ê¤¤¤³¤È¤Ç¤·¤ç¤¦¡Ë¡£¥Ö¥í¥Ã¥¯¤ÎÊÖ¤êÃͤϥ᥽¥Ã¥É¤ÎÊÖ¤êÃÍ¥ª¥Ö¥¸¥§¥¯¥È¤ËƱ¤¸¤Ç¤¹¡£
{¥á¥½¥Ã¥É̾ => ÊÖ¤êÃÍ} ¤È¤¤¤¦¾ò·ï¤òËþ¤¿¤¹ xxxx ¥ª¥Ö¥¸¥§¥¯¥È¤ò #xxxxs ¤«¤éõ¤·¡¢Á´¤Æ¤òÇÛÎó¤ÇÊÖ¤·¤Þ¤¹¡£
³ºÅö¤¬¤Ê¤¤¾ì¹ç¤Ï¶õ¤ÎÇÛÎó [] ¤òÊÖ¤·¤Þ¤¹¡£
#xxxx_with ¤Î¡ÖÊ£¿ôõ¤»¤ëÈǡפǤ¹¡£ÆâÉô¤Ç find ¤Ç¤Ï¤Ê¤¯ find_all ¤·¤Æ¤Þ¤¹¡£
# ¤À¤«¤é°ì½ï¤À¤Ã¤Æ¤Ð tgts = form.xxxxs_with(:mes => value) tgts = form.xxxxs.find_all{|e| value === e.__send__(:mes)}pattern ¤Ë¥Ú¥¢¤òÊ£¿ô»ØÄꤷ¤¿¾ì¹ç¡¢Á´¤Æ¤òËþ¤¿¤¹¤â¤Î¤Î¤ß¤òÈ´¤½Ð¤·¤Þ¤¹¡Ê¤É¤ì¤«¤òËþ¤¿¤¹¤â¤Î¤È¤Ë¤«¤¯Á´Éô¡¢¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó¡Ë¡£
¥Ö¥í¥Ã¥¯¤ò¼è¤ë¤³¤È¤â¤Ç¤¤Þ¤¹¤¬¡¢ÇÛÎóÍ×ÁǤ¬½ç¤ËÅϤë¤Î¤Ç¤Ï¤Ê¤¯·ë²Ì¤Î Array ¥ª¥Ö¥¸¥§¥¯¥È¤¬ 1¸Ä¤½¤Î¤Þ¤ÞÅϤµ¤ì¤Þ¤¹¡£Í×ÁǤ´¤È¤ËÃ༡½èÍý¤ò¤·¤¿¤¤¾ì¹ç¤Ï¤³¤Î¥á¥½¥Ã¥ÉÉÕ°¤Î¥Ö¥í¥Ã¥¯¤Ç¤Ï¤Ê¤¯ Array#each ¤Î¥Ö¥í¥Ã¥¯¤ò»ÈÍѤ·¤Æ¤¯¤À¤µ¤¤¡£
Á÷¿®Àè URL ¤òÊÖ¤¹ #action ¥á¥½¥Ã¥É¤ÎÊÖ¤êÃͤòʸ»úÎó url_str ¤ËÊѹ¹¤·¤Þ¤¹¡£
°ú¿ô url_str ¤Ï URL ¤È¤·¤Æ͸ú¤Êʸ»úÎó¤ò»ØÄꤷ¤Þ¤¹¡£ÁêÂÐ URL ¤Ç¤â¹½¤¤¤Þ¤»¤ó¡£URI ¥ª¥Ö¥¸¥§¥¯¥È¤Ï¥¨¥é¡¼¤Ë¤Ê¤ê¤Þ¤¹¡£
¥Õ¥©¡¼¥àÁ÷¿®¥Ç¡¼¥¿¤Ë¡¢°ú¿ô¤Î Button ¥ª¥Ö¥¸¥§¥¯¥È¤Î̾Á°¤ÈÃͤòÄɲä·¤Þ¤¹¡£¥æ¡¼¥¶¡¼¤¬»ÈÍѤ¹¤ë¤³¤È¤Ï¤¢¤ê¤Þ¤»¤ó¡£
Äɲûؼ¨¤·¤¿¥Ü¥¿¥ó¤ÎÇÛÎó¤òÊÖ¤·¤Þ¤¹¡£
Mechanize::Form::Button ¥ª¥Ö¥¸¥§¥¯¥È¤ò #click_button ¤Ê¤É¤ÇÁ÷¿®¤¹¤ë¤è¤¦¤Ë»Ø¼¨¤·¤¿¤È¤¤ËÆâÉô¤Ç¸Æ¤Ð¤ì¤Æ¤¤¤Þ¤¹¡£¥Ç¡¼¥¿¤ÎÄɲäÀ¤±¤Ç¡¢Á÷¿®¤Ï¹Ô¤¤¤Þ¤»¤ó¡£
¤³¤Î¥Õ¥©¡¼¥à¤¬»ý¤ÄÁ÷¿®Íѥǡ¼¥¿¤ÎÇÛÎó¤òÊÖ¤·¤Þ¤¹¡£¥æ¡¼¥¶¡¼¤¬»ÈÍѤ¹¤ë¤³¤È¤Ï¤¢¤ê¤Þ¤»¤ó¡£
- #fields ¤È #checkboxes ¤ò½Ð¸½½ç¤Ë¤Þ¤È¤á¤¿¤â¤Î¤«¤é¡¢value ¤¬ÀßÄꤵ¤ì¤Æ¤¤¤ë¤â¤Î¤Î name ¤È value
- #radiobuttons ¤«¤é¡¢Mechanize::Form::RadioButton#checked ¤¬¿¿¤Ê¤â¤Î¤Î name ¤È value
- Mechanize#submit ͳÍè¤Î¡¢Á÷¿®¥Ü¥¿¥ó¤È¤·¤Æ»ÈÍѤµ¤ì¤¿ Mechanize::Form::Button ¤Î name ¤È value
name ¤È value ¤¬ UTF-8 ¤Ç¤Ï¤Ê¤¯¡¢¤Ê¤ª¤«¤Ä #page ¤Ë¥¨¥ó¥³¡¼¥Ç¥£¥ó¥°¤¬ÀßÄꤵ¤ì¤Æ¤¤¤¿¾ì¹ç¡¢UTF-8 ¤«¤é Mechanize::Page#encoding ¤Ø Iconv ·Ðͳ¤ÇÊÑ´¹¤µ¤ì¤¿¤â¤Î¤¬ÊÖ¤êÃͤÎÇÛÎó¤Ë³ÊǼ¤µ¤ì¤Þ¤¹¡£Mechanize::Util.from_native_charset ¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£
name ¤Î¸ºß¤·¤Ê¤¤¥Ü¥¿¥ó¤âÇÛÎóÃæ¤ËÄɲ䵤ì¤Æ¤¤¤Þ¤¹¤¬¡¢name ÁêÅö¤¬ nil ¤Î¥Ú¥¢¤Ï¼ÂºÝ¤ËÁ÷¿®Ê¸»úÎó¤òºîÀ®¤¹¤ëºÝ¤Ëºï½ü¤µ¤ì¤Þ¤¹¡£
¥Õ¥©¡¼¥à¥Ç¡¼¥¿¤ÎÁ÷¿®¥¨¥ó¥³¡¼¥Ç¥£¥ó¥°ÊýË¡¤òÊÖ¤¹ #enctype ¥á¥½¥Ã¥É¤ÎÊÖ¤êÃͤòʸ»úÎó type ¤ËÊѹ¹¤·¤Þ¤¹¡£
°ú¿ô type ¤Ïʸ»úÎó¤Ç¤¹¡£Ä̾ï¤Ï "application/x-www-form-urlencoded" ¤Ç¡¢¥Õ¥¡¥¤¥ë¥¢¥Ã¥×¥í¡¼¥É¤ò¤¹¤ë¤È¤¤Ï "multipart/form-data" ¤Ë¤Ê¤ê¤Þ¤¹¡£¤³¤ì°Ê³°¤Ë¤ÏÂбþ¤·¤Æ¤¤¤Þ¤»¤ó¡£
HTTP Á÷¿®¥á¥½¥Ã¥É¤òÊÖ¤¹ #method ¥á¥½¥Ã¥É¤ÎÊÖ¤êÃͤòʸ»úÎó upcase_verb ¤ËÊѹ¹¤·¤Þ¤¹¡£
°ú¿ô upcase_verb ¤Ï HTTP Á÷¿®¥á¥½¥Ã¥É¤È¤·¤Æ͸ú¤ÊÂçʸ»úʸ»úÎó¤ò»ØÄꤷ¤Þ¤¹¡£HTML ¤Î¥Õ¥©¡¼¥à¤«¤éÁ÷¿®¥Ü¥¿¥ó¤ÇÁ÷¿®¤¹¤ë¾ì¹ç¤Ï GET ¤È POST ¤Î 2¤Ä¤·¤«Æ°ºî¤·¤Þ¤»¤ó¡£PUT Åù¤ò¹Ô¤¤¤¿¤¤¾ì¹ç¤Ï Mechanize#put Åù¤ò»ÈÍѤ·¤Þ¤¹¡£
¤³¤Î¥Õ¥©¡¼¥à¤Î̾Á°¤òÊÖ¤¹ #name ¥á¥½¥Ã¥É¤ÎÊÖ¤êÃͤòʸ»úÎó str ¤ËÊѹ¹¤·¤Þ¤¹¡£
°ú¿ô str ¤Ïʸ»úÎó¤Ç»ØÄꤷ¤Þ¤¹¡£
name ¤òÊѹ¹¤¹¤ë¤È¼ÂºÝ¤ÎÁ÷¿®¥Ç¡¼¥¿¤â±Æ¶Á¤ò¼õ¤±¤ë¤Î¤Çµ¤¤ò¤Ä¤±¤Æ¤¯¤À¤µ¤¤¡£
¤³¤Î¥Õ¥©¡¼¥à¤Ë»ØÄꤷ¤¿Ì¾Á°¤Î¥ê¥»¥Ã¥È¥Ü¥¿¥ó¤¬¤¢¤ì¤Ð¿¿¤òÊÖ¤·¤Þ¤¹¡£
#resets ¤Ë´Þ¤Þ¤ì¤ë¥ª¥Ö¥¸¥§¥¯¥È¤Î Mechanize::Form::Reset#name ¥á¥½¥Ã¥É¤ÎÊÖ¤êÃÍ¤È button_name ¤ò == ¤Çʸ»úÎóÈæ³Ó¤·¡¢°ìÃפ·¤¿¤â¤Î¤¬¤Ò¤È¤Ä¤Ç¤â¤¢¤ì¤Ð true ¤ò¡¢Ìµ¤±¤ì¤Ð false ¤òÊÖ¤·¤Þ¤¹¡£
°ú¿ô¤Ïʸ»úÎó¤Ç¤Ê¤±¤ì¤Ð¤Ê¤ê¤Þ¤»¤ó¡£Àµµ¬É½¸½¤ò»ÈÍѤ·¤¿¤¤¾ì¹ç¤Ï #button_with ¤ËÅϤ·¤Æ·ë²Ì¤ò¥Á¥§¥Ã¥¯¤·¤Æ¤¯¤À¤µ¤¤¡£
#resets ¤Ë´Þ¤Þ¤ì¤Ê¤¤¥Ü¥¿¥ó¤Ïõ¤»¤Þ¤»¤ó¡£
¤³¤Î¥Õ¥©¡¼¥à¤Ë´Þ¤Þ¤ì¤ë¥ê¥»¥Ã¥È¥Ü¥¿¥ó¤ò¡¢Mechanize::Form::Reset ¥ª¥Ö¥¸¥§¥¯¥È¤Ë¤·¤ÆÇÛÎó¤Ë¤·¤ÆÊÖ¤·¤Þ¤¹¡£
¥Õ¥©¡¼¥à¤Ë name °À¤ÎÀßÄꤵ¤ì¤¿¥ê¥»¥Ã¥È¥Ü¥¿¥ó¤¬´Þ¤Þ¤ì¤Æ¤¤¤Ê¤¤¾ì¹ç¤Ï¶õ¤ÎÇÛÎó [] ¤òÊÖ¤·¤Þ¤¹¡£
³ºÅö¤¹¤ë HTML ¤Ï°Ê²¼¤ÎÄ̤ꡣ
- <input type="reset" name="***">
»ÄÇ°¤Ê¤¬¤é reset_with ¤Î¤è¤¦¤Ê¾ò·ïÃê½Ð¥á¥½¥Ã¥É¤Ï¤¢¤ê¤Þ¤»¤ó¡£#button_with ¤È #buttons_with ¤ÇÂåÍѤ·¤Æ¤¯¤À¤µ¤¤¡£
Mechanize 1.0.0 »þÅÀ¤Ç¤Ï¥Õ¥©¡¼¥à¥ê¥»¥Ã¥È¤Îµ¡Ç½¼«ÂΤ¬¤Ê¤¤¤Î¤Ç¡¢type="reset" ¤È¤·¤Æ¤Î¥Ü¥¿¥ó¤Î´üÂÔ¤µ¤ì¤ëÆ°ºî¤ò¼Â¸½¤¹¤ë¼êÃʤ¬¤¢¤ê¤Þ¤»¤ó¡£Mechanize::Form#click_button ¤Ê¤É¤ËÅϤ¹¤ÈÁ÷¿®¥Ü¥¿¥ó¤È¤ß¤Ê¤·¤ÆÁ÷¿®¤ò¹Ô¤¤¤Þ¤¹¡£
¼ÂºÝ¤Ë GET ¤ä POST ¤ÇÁ÷¿®¤¹¤ëʸ»úÎó¤ò¤³¤Î¥Õ¥©¡¼¥à¤Î¸½ºß¤Î¥Ç¡¼¥¿¤«¤éºîÀ®¤·¤ÆÊÖ¤·¤Þ¤¹¡£¥æ¡¼¥¶¡¼¤¬»ÈÍѤ¹¤ë¤³¤È¤Ï¤¢¤ê¤Þ¤»¤ó¡£
Ä̾ï¤Î GET ¤ä POST ¤Î¾ì¹ç¤Ï Mechanize::Util.build_query_string ¤Ë #build_query ¤ÎÊÖ¤êÃͤ¬ÅϤµ¤ì¤Þ¤¹¡£name ÁêÅö¤¬ nil ¤Î¤â¤Î¡Êname °À¤Î¤Ê¤¤Á÷¿®¥Ü¥¿¥ó¤Ê¤É¡Ë¤Ï¤³¤³¤ÇÃƤ«¤ì¤Þ¤¹¡£
multipart ¤Î¾ì¹ç¤ÏŬÀڤʥإåÀ¤Ä¤¤Ç¼Â¥Ç¡¼¥¿¤òÁ÷¿®¤·¤è¤¦¤È¤·¤Þ¤¹¡£Mechanize::Form::FileUpload ¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£
¥µ¡¼¥Ð¤ØÅϤ¹ÆâÍƤò³Îǧ¤·¤¿¤¤¾ì¹ç¤Ï #build_query ¤ÎÇÛÎó¤ò³Îǧ¤¹¤ë¤«¡¢#log ¤ò͸ú¤Ë¤·¤Æ¥í¥°½ÐÎϤò³Îǧ¤¹¤ë¤«¤·¤Æ¤¯¤À¤µ¤¤¡£
¤Ê¤ª¡¢Á÷¿®¤µ¤ì¤ëʸ»úÎó¤Î¥Ú¥¢¤Ï #build_query ¤ÎÇÛÎó¤Î½çÈ֤ˤʤäƤ¤¤Þ¤¹¡£º£¤Î¤È¤³¤í¥é¥¸¥ª¥Ü¥¿¥ó¤Î¤¢¤¿¤ê¤¬ HTML ¾å¤Ç¤Î½Ð¸½½ç¤Ë¤¢¤Þ¤ê±è¤Ã¤Æ¤¤¤Þ¤»¤ó¡£¥µ¡¼¥Ð¤Ë¤è¤Ã¤Æ¤Ï¼«Æ°¥×¥í¥°¥é¥à¤«¤é¤ÎÁ÷¿®¤Ç¤¢¤ë¤³¤È¤ò¤³¤³¤Ç¸¡ÃΤ·¤ÆÃƤ¯¤«¤â¤·¤ì¤Þ¤»¤ó¡£
¤³¤Î¥Õ¥©¡¼¥à¤Ë»ØÄꤷ¤¿Ì¾Á°¤ÎÊ£¿ôÆþÎÏÍ󤬤¢¤ì¤Ð¿¿¤òÊÖ¤·¤Þ¤¹¡£
#textareas ¤Ë´Þ¤Þ¤ì¤ë¥ª¥Ö¥¸¥§¥¯¥È¤Î Mechanize::Form::Textarea#name ¥á¥½¥Ã¥É¤ÎÊÖ¤êÃÍ¤È field_name ¤ò == ¤Çʸ»úÎóÈæ³Ó¤·¡¢°ìÃפ·¤¿¤â¤Î¤¬¤Ò¤È¤Ä¤Ç¤â¤¢¤ì¤Ð true ¤ò¡¢Ìµ¤±¤ì¤Ð false ¤òÊÖ¤·¤Þ¤¹¡£
°ú¿ô¤Ïʸ»úÎó¤Ç¤Ê¤±¤ì¤Ð¤Ê¤ê¤Þ¤»¤ó¡£Àµµ¬É½¸½¤ò»ÈÍѤ·¤¿¤¤¾ì¹ç¤Ï #field_with ¤ËÅϤ·¤Æ·ë²Ì¤ò¥Á¥§¥Ã¥¯¤·¤Æ¤¯¤À¤µ¤¤¡£
#textareas ¤Ë´Þ¤Þ¤ì¤Ê¤¤Ê£¿ô¹ÔÆþÎÏÍó¤Ïõ¤»¤Þ¤»¤ó¡£
¤³¤Î¥Õ¥©¡¼¥à¤Ë´Þ¤Þ¤ì¤ëÊ£¿ô¹ÔÆþÎÏÍó¤ò Mechanize::Form::Textarea ¥ª¥Ö¥¸¥§¥¯¥È¤Ë¤·¤ÆÇÛÎó¤ÇÊÖ¤·¤Þ¤¹¡£
ÆþÎÏÍó¤Î name °À¤Ïɬ¿Ü¤Ç¤¹¡£¤³¤Î¥Õ¥©¡¼¥à¤Ë name °À¤ÎÀßÄꤵ¤ì¤¿Ê£¿ô¹ÔÆþÎÏÍ󤬴ޤޤì¤Æ¤¤¤Ê¤¤¾ì¹ç¤Ï¶õ¤ÎÇÛÎó [] ¤òÊÖ¤·¤Þ¤¹¡£
³ºÅö¤¹¤ë HTML ¤Ï°Ê²¼¤ÎÄ̤ꡣ
- <input type="textarea" name="***">
#fields ¤«¤é Mechanize::Form::Textarea ¥¯¥é¥¹¤Î¥ª¥Ö¥¸¥§¥¯¥È¤òõ¤·¤ÆÊÖ¤·¤Æ¤¤¤Þ¤¹¡£
»ÄÇ°¤Ê¤¬¤é textarea_with ¤Î¤è¤¦¤Ê¾ò·ïÃê½Ð¥á¥½¥Ã¥É¤Ï¤¢¤ê¤Þ¤»¤ó¡£#field_with ¤È #fields_with ¤ÇÂåÍѤ·¤Æ¤¯¤À¤µ¤¤¡£