1

几个星期以来,我一直在尝试自动化浏览任务。任务很简单:登录、点击链接、输入变量并提交、注销。我需要创建一个执行此操作的网站(某种更简单的界面) 请记住该网站正在使用 Servlet,并且我无权访问网站代码。起初我尝试了 CURL,但由于页面中有一些 Ajax 元素,因此 curl 无法显示该内容。我尝试了 .NET Webdriver、JUnit、Selenium 等。但在渲染 ajax 元素时都失败了。我已经尝试过 perl 和 python mechanize,虽然 perl 不起作用,但我能够使用 python 获取动态内容。问题不在于我有以 Javascript 开头的 Javascript 执行链接:而且我认为我不能使用 Mechanize 调用函数。有人知道这个任务是否可能吗?

4

2 回答 2

2

Perl 模块WWW::Mechanize是自动化 Web 浏览任务(如下载、上传、表单提交、身份验证、简单浏览、屏幕抓取等)最流行的方式。

如果网站包含 Javascript,处理它们的流行 Perl 模块是使用WWW::Mechanize::Firefox.

到目前为止,“几乎”任何类型的网站,包括 JavaScript 和 Ajax 等技术以及使用 SSL 安全性和/或通过代理服务器访问,都可以通过属于LWP::UserAgentandWWW::Mechanize或的 Perl 模块方法的组合来处理WWW::Mechanize::Firefox。网络上提供了大量示例。

于 2012-07-18T01:05:17.820 回答
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() 手动启动它们。

于 2012-07-17T22:36:09.533 回答