• ベストアンサー

Win32::IE::Mechanizeで、textarea内のデータを取得する方法

ActivePerl5.8.7でWin32::IE::Mechanizeを使っています。 textarea内のデータを取得する方法はどうすれば良いのでしょうか? またエラーの場合、標準出力されてしまうので、これを拒否する方法は ???をどのように設定すればよいのでしょうか? my $ie = Win32::IE::Mechanize->new( ??? ); Win32::IE::Mechanizeに関する情報を集めたいですが、詳しく書かれている サイトや書籍はありますか?

質問者が選んだベストアンサー

  • ベストアンサー
  • guci-ok
  • ベストアンサー率33% (49/146)
回答No.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)
回答No.2

#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)
回答No.1

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;

kounesi
質問者

補足

レスが遅くなりました。 このtextareaのnameが無い状態ですので、 my $val = $ie->{Document}->{all}->{****}->{Value}; ****が使えません。 他に何か方法があるのでしょうか?