2

我正在尝试使用以下代码登录网站

my $mech = WWW::Mechanize->new(autosave=>1);
$mech->cookie_jar(HTTP::Cookies->new());
$mech->get($url);
$mech->follow_link( text => 'Sign In');
$mech->click();
$mech->field(UserName => "$username");
$mech->field(Password => "$password");
$mech->submit();

但是在 follow_link 期间,href 包含两个前斜杠,例如 ( //test/sso-login),因此 follow_link 将其视为整个 URL,并且失败如下

Error GETing http://test/sso-login: Can't connect to test:80 (Bad hostname)

我无法更改 href,因为它是我的控制。有没有办法克服这个问题,并使其采用附加此 href 的完整 URL。

4

1 回答 1

4

当然。您可以在调用之前修改 Mech 正在查看的 HTML follow_link()

my $html = $mech->content;
$html =~ s[//test/sso-login][http://example.com/test/sso-login]isg;
$mech->update_html( $html );

有关详细信息,请参阅文档。在该页面上搜索“update_html”。

于 2012-08-11T03:56:03.543 回答