1

Perl は初めてで、Web サイトにアクセスしようとしています。インターネットで見つけたこのコードを試しました:

use WWW::Mechanize;
use LWP;

my $username = 'user'; 
my $password = 'pass';

chomp($username);
chomp($pass);

my $mech = WWW::Mechanize->new();
$mech->cookie_jar(HTTP::Cookies->new());
$mech->get('http://my_url.com');
$mech->form_name('theform');
$mech->field ('username' => $username);
$mech->field ('password' => $password);
$mech->click('Sign in');

print $mech->content();

ボタンは次のとおりです。

<input type="submit" name="sgnBt" title="Sign in" value="Sign in" id="sgnBt" class="btn btn-prim sd-sgnBtn">

出力は次のとおりです。

Error : No clickable input with name Sign in ...

$mech -> click('Sign in'); の行を置き換えます。これは、[サインイン$mech -> submit();] ボタン をクリックした後に表示されるページではありません。

私も試しました:

$mech->click_button(name => 'Sign in');
$mech->click_button(name => 'sgnBt');
$mech->click_button(value => 'Sign in');

しかし、それらはすべて同じエラーを出します。アドバイスをください、考えが尽きます。私は多くのことを試しました。

4

2 に答える 2

1

の代わりに$mech->submit_form()を使用してみてください$mech->click_button():

my $fields = {
    username => $username,
    password => $pass
};
my $response = $mech->submit_form( with_fields => $fields );

これにより、すべてのフィールドを含むページの最初のフォームが選択され、ページが$fields送信されます。この方法では、フォームの名前や番号、またはボタンの名前を知る必要はありません。

フォームの完全な HTML を投稿していないため、これが関連しているかどうかはわかりませんが、WWW::Mechanize は JavaScript をサポートしていないことも知っておく必要があります。これは、問題の一般的な原因です。

于 2013-11-07T18:41:16.700 に答える