, когда я использую «--disk-кеш = истина» в phantomjs_arg тогда она становится ошибка в этой строке:элементы не найдены формы № 2 в phantomjs
my $form = $self->{obj_mech}->form_number(2);
Нет элементов найдено для формы № 2 в модулях/TestLogin.pm строка 1129. по адресу /usr/local/share/perl/5.22.1/WWW/Mechanize/PhantomJS.pm строка 796. WWW :: Механизация :: PhantomJS :: signal_condition (WWW :: Механизировать :: PhantomJS = HASH (0x4cfa120), «Элементы, найденные для формы № 2» не вызваны по адресу /usr/local/share/perl/5.22.1/WWW/Mechanize/PhantomJS.pm, строка 1732 WWW :: Mechanize :: PhantomJS :: xpath (WWW :: Mechanize :: PhantomJS = HASH (0x4cfa120), "(// form) [2]", "user_info", "form number 2", "single" , 1), вызываемый по адресу /usr/local/share/perl/5.22.1/WWW/Mechanize/PhantomJS.pm, строка 2102 WWW :: Механизм :: PhantomJS :: form_number (WWW :: Mechanize :: PhantomJS = HASH (0x4cfa120), 2) вызывается в модулях/TestLogin.pm line 1129 TestLogin :: TestLogin_login (TestLogin = HASH (0x4f5c8a8)), вызываемый в строке collectBets.pl 20 Отладка программы завершена. Используйте q для выхода или R для перезапуска, используйте o inhibit_exit, чтобы избежать остановки после завершения программы , h q, h R или h o для получения дополнительной информации.
без диска-cashe он отлично работает. Это мой пример кода для лучшего понимания.
#!/usr/bin/perl
use strict;
use warnings;
use Helper;
use WWW::Mechanize::PhantomJS;
use DataBase;
use MyConfig;
use JSON;
use DateTime;
use HTML::Entities;
sub new($$) {
my ($class,$params) = @_;
my $self = $params || {};
bless $self, $class;
$self->{obj_mech} = WWW::Mechanize::PhantomJS -> new(phantomjs_arg => ['--ssl-protocol=any','--disk-cache=true','--max-disk-cache-size=1024'], ignore_ssl_errors => 1);
$self->{obj_helper} = new Helper();
#$self->{obj_db} = new DataBase();
$self->{logged_in} = 0;
#$self->setTorProxy();
#$self->init_market_master();
return $self;
}
Login();
print "\nlogin done...\n";
exit;
sub Login {
my ($self) = @_;
my $html = $self->{obj_mech}->get("https://www.gmail.com/");
sleep(25);
$html = $self->{obj_mech}->content;
$self->{obj_mech}->viewport_size({ width => 1366, height => 768 });
my $form = $self->{obj_mech}->form_number(2);
my $user_name = '*****';
my $password = '******';
$self->{obj_mech}->set_fields('InputEmail' =>$user_name);
$self->{obj_mech}->set_fields('InputPassword' =>$password);
$self->{obj_mech}->click({ xpath => '//button[@class="PrimaryButton"]' });
sleep(20);
my $test_html=$self->{obj_mech}->content;
$self->{obj_helper}->writeFileNew("TestLoginPage.html" , $test_html);
my $png = $self->{obj_mech}->content_as_png();
$self->{obj_helper}->writeFileNew("LoginPage.png" , $png);
return 1;
}