如何自动化浏览任务?

时间:2012-07-17 22:32:50

标签: php python perl curl selenium

几周以来,我正在尝试自动化浏览任务。 任务很简单:登录,点击链接,输入变量并提交,注销。 我需要创建一个这样做的网站(一个更简单的界面的排序)不要忘记网站使用Servlets,我无法访问网站代码。 起初我尝试过CURL,但由于页面中有一些Ajax元素,因此curl无法显示该内容。 我尝试过.NET Webdriver,JUnit,Selenium等。但是所有人都无法渲染ajax元素。 我已经尝试过perl和python机械化,而perl不起作用,我能够通过python获得动态内容。 问题不在于我有Javascript执行的链接,他们从Javascript开始:我认为我不能用Mechanize调用函数。 有人知道这项任务是否可行?

2 个答案:

答案 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()手动启动它们。