几周以来,我正在尝试自动化浏览任务。 任务很简单:登录,点击链接,输入变量并提交,注销。 我需要创建一个这样做的网站(一个更简单的界面的排序)不要忘记网站使用Servlets,我无法访问网站代码。 起初我尝试过CURL,但由于页面中有一些Ajax元素,因此curl无法显示该内容。 我尝试过.NET Webdriver,JUnit,Selenium等。但是所有人都无法渲染ajax元素。 我已经尝试过perl和python机械化,而perl不起作用,我能够通过python获得动态内容。 问题不在于我有Javascript执行的链接,他们从Javascript开始:我认为我不能用Mechanize调用函数。 有人知道这项任务是否可行?
答案 0 :(得分:2)
Perl模块WWW::Mechanize
是自动执行网页浏览任务的最常用方式,例如下载,上传,表单提交,身份验证,简单浏览,屏幕抓取等等。
如果网站包含Javascript,处理它们的流行Perl模块是使用WWW::Mechanize::Firefox
。
到目前为止,“几乎”任何类型的网站,包括JavaScript,Ajax等技术,使用SSL安全性,或通过代理服务器访问都可以通过属于LWP::UserAgent
和{的Perl模块方法的组合来处理。 {1}}或WWW::Mechanize
。通过网络提供的大量示例。
答案 1 :(得分:1)
使用casperjs的一个例子:
var casper = require('casper').create({
verbose: true,
logLevel: 'debug'
});
casper.start(
'http://example.com',
function() {
this.evaluate( function() {
return $('#someElementId div').length; // This runs as if it was on the page
});
this.fill(
'#formId',
{
email: 'username@example.com',
password: 'password123'
},
true
); // This submits login form
}
);
Casperjs存储cookie,因此对更深层页面的请求不会失败。
有关提交表单的详细信息,请参阅fill()。
请参阅evaluate()以运行js,就像它在您正在测试的页面上执行一样。
如果你想测试AJAX动作 - 没问题。它们将像浏览器中运行的页面一样运行,您可以在DOM中查看结果。您可以使用evaluate()手动启动它们。