- ベストアンサー
Win32::IE::Mechanizeで、textarea内のデータを取得する方法
ActivePerl5.8.7でWin32::IE::Mechanizeを使っています。 textarea内のデータを取得する方法はどうすれば良いのでしょうか? またエラーの場合、標準出力されてしまうので、これを拒否する方法は ???をどのように設定すればよいのでしょうか? my $ie = Win32::IE::Mechanize->new( ??? ); Win32::IE::Mechanizeに関する情報を集めたいですが、詳しく書かれている サイトや書籍はありますか?
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
textareaのnameが無い状態であれば、入力域を個々に調べることになります。 #!/Perl/bin/perl use Win32::IE::Mechanize; my $ie = Win32::IE::Mechanize->new(visible => 1); $ie->get("http://localhost/test.html"); my $found; for my $input ($ie->current_form->inputs()) { my $name = $input->name(); my $type = $input->type(); my $value = $input->value(); print "\$name=$name \$type=$type \$value=$value\n"; $found = $value if ! $found and $type eq "textarea"; } if ($found) { print "TEXTAREA is: $found\n"; } else { print "TEXTAREA not found\n"; } __END__ D:>testIEM.pl $name= $type=textarea $value=これはテストだよ~だ! $name=test1 $type=text $value= $name=sub $type=submit $value=送信 TEXTAREA is: これはテストだよ~だ! D:>
その他の回答 (2)
- guci-ok
- ベストアンサー率33% (49/146)
#1をWin32::IE::Mechanizeで書くとこうなります。 #!/Perl use Win32::IE::Mechanize; my $ie = Win32::IE::Mechanize->new(visible => 1); $ie->get("http://localhost/test.html"); my $val = $ie->current_form->value("test"); print $val; __END__ まずは、モジュール内のdocを見ては? Win32::IE::Mechanizeは、WWW::Mechanizeを真似たモジュールを目指しているので、WWW::Mechanizeも参考にすると良いと思います。
- omni2
- ベストアンサー率53% (33/62)
Win32::OLEを使えばできるんですが、それじゃだめでしょうか・・ ######################################## ▼test.html▼ <HTML><HEAD></HEAD> <BODY> <FORM action="test.cgi"> <TEXTAREA rows="10" cols="30" name="test">これはテストだよ~だ!</TEXTAREA><BR> <INPUT type="text" name="test1" size="25"> <INPUT type="submit" name="sub" value="送信"> </FORM> </BODY> </HTML> ########################################### ▼test.cgi▼ #!/Perl/bin/perl use Win32::OLE; my $ie = Win32::OLE->new('InternetExplorer.Application'); $ie->navigate("http://localhost/test.html"); $ie->{Visible} = 1; while (($ie->{Busy} == 1)){ sleep(1); } my $val = $ie->{Document}->{all}->{test}->{Value}; print $val;
補足
レスが遅くなりました。 このtextareaのnameが無い状態ですので、 my $val = $ie->{Document}->{all}->{****}->{Value}; ****が使えません。 他に何か方法があるのでしょうか?