Perl Mechanize не работает follow_link

Я пытаюсь войти на сайт, используя следующий код

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, так как он находится под моим контролем. Есть ли способ преодолеть эту проблему и заставить ее принимать полный URL-адрес, добавляя этот href.


person Prakash    schedule 11.08.2012    source источник


Ответы (1)


Конечно. Вы можете изменить 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» на этой странице.

person Mark Stosberg    schedule 11.08.2012