我有那个表格
<form method="post" action="index.lp" name="authform" id="authform">
<input type="password" name="password" id="password" onkeypress="return enter_submit(event);" />
<input name="enter" class="btn btn-primary" type="button" value="log in" onclick='auth()' />
我可以通过这种方式提交javascript
javascript:document.getElementById("password").value = "password";auth();
现在我需要编写perl脚本来自动执行它,当它登录时执行页面中的其他javascript函数。 我正在计算机上测试并遇到一些问题:
1)Perl需要一个c编译器...我可以在openwrt上安装它吗?
2)我可以尝试两种不同的方式:
第一个,更快的是使用WWW :: Scripter :: Plugin :: JavaScript但我无法安装模块,因为我无法安装mingw(我做了,在ppm-shell中,安装mingw并返回“ppm安装失败:无法找到任何提供mingw的软件包”)。此外,我没有在Perl package中看到WWW :: Scripter。 我写了那个脚本(可以吗?):
use WWW::Scripter;
$w = new WWW::Scripter;
$w->use_plugin('JavaScript');
$w->get('http://url');
$w->get('javascript:document.getElementById("password").value = "password";auth();');
sleep (1);
$w->get('http://url');
$w->get('javascript: function();');
第二个是使用WWW:Mechanize。我怎么看输出页面?以及如何将命令发送到第二页?现在使用该脚本我收到此错误:“D:/ Program Files / Perl / lib / HTTP / Response.pm第92行缺少基本参数”。 (可以吗?)
use WWW::Mechanize;
my $mech = WWW::Mechanize->new();
$mech->get( $url );
$mech->follow_link( url => 'http://url' );
$mech->submit_form(
form_name => 'authform',
fields => { password => 'password', },
button => 'log in'
);
答案 0 :(得分:0)
我使用WWW :: Mechanize,解释依赖于DOM而没有真正的浏览器引擎的JS几乎是不可能的。
D:/Program Files/Perl/lib/HTTP/Response.pm
将从WWW :: Mechanize的最后一页获取原始HTML。
如果您确实需要自动化JavaScript页面,并且想要使用perl,请使用Selenium的WebDriver来控制&#34;真实的&#34;浏览器(即使它像phantomjs一样无头)。
至于您获得的错误:确保您的步骤正常运行,并查看ITuple
第92行中发生的情况以及它所期望的内容。