0

私はperlが初めてで、機械化を始めました。

Web サイトに正常にログインしましたが、その後、Windows のブラウザーで Web サイトを開こうとしましたが、ログイン後ではなく Web サイトを開くだけです。

#!/usr/bin/perl -w

use Win32::API;
use WWW::Mechanize;
use strict;
use diagnostics;
use warnings;


my $m = WWW::Mechanize->new(
 autocheck       => 1,
 onerror         => \&Carp::croak,);


my $Email = 'username';
my $Password = 'password';
my $url = 'http://www.gmail.com/';
my $response = $m->get($url);

if (!$response->is_success) {
    die "Login page unreachable $url: ",  $response->status_line, "\n";
}

    $m->submit_form(
        form_number => 1,
        fields      => { 
                       'Username' => $Email,
                       'Password' => $Password, 
                       },
    );

$response = $m->submit();

 $m->add_header(
  "Connection" => "keep-alive",
  "Keep-Alive" => "115");

#$response = $m->click();
if ($response->is_success) {
    print "Login Successful!\n";
} else {
    die "Login failed: ",  $response->status_line, "\n";
}

my $ShellExecute =
  new Win32::API( "shell32", "ShellExecute", [qw(N P P P P N)], 'N' );

my $GetDesktopWindow = 
  new Win32::API( "user32", "GetDesktopWindow", [], 'N' );

my $hWnd = $GetDesktopWindow->Call();


$ShellExecute->Call( $hWnd, 'open', $url, '', '', 1 );
4

1 に答える 1

2

ああ。あなたはそれをすることはできません。Internet Explorer を使用して gmail にログインし、Firefox で動作することを期待したことがありますか?

...

ブラウザでログインする必要がある場合は、おそらく perl でブラウザにログインする必要があります。

本当に mechanize だけでそれを行う必要がある場合は、ブラウザが使用するのと同じ Cookie を保存するために mechanize が必要になる可能性があります。

于 2013-06-20T07:06:56.537 に答える