WWW::Mechanize のフォームにinput追加したいとき
javascriptでinput追加されるようなフォームがあって、WWW::Mechanizeではフィールド追加できないみたいで一瞬困った。内部的にはHTML::Formが使われてて、こっちもフィールド追加できないみたいだったけど、ソース読むとHTML::Form::Inputってのがpackage宣言されていて、フォームのフィールドはこいつのインスタンスだった。このHTML::Form::Inputってのにはadd_to_formってメソッドがあるので、下記のようにすればできる。
use WWW::Mechanize; use HTML::Form; my $mech = WWW::Mechanize->new; $mech->get("http://example.com/"); $mech->form_name("form1"); # ここ HTML::Form::Input->new(name => 'foo', value => 'hoge')->add_to_form($mech->current_form); $mech->set_fields(bar => 'fuga', baz => 'piyo'); $mech->submit;