几个星期以来,我一直在尝试自动化浏览任务。任务很简单:登录、点击链接、输入变量并提交、注销。我需要创建一个执行此操作的网站(某种更简单的界面) 请记住该网站正在使用 Servlet,并且我无权访问网站代码。起初我尝试了 CURL,但由于页面中有一些 Ajax 元素,因此 curl 无法显示该内容。我尝试了 .NET Webdriver、JUnit、Selenium 等。但在渲染 ajax 元素时都失败了。我已经尝试过 perl 和 python mechanize,虽然 perl 不起作用,但我能够使用 python 获取动态内容。问题不在于我有以 Javascript 开头的 Javascript 执行链接:而且我认为我不能使用 Mechanize 调用函数。有人知道这个任务是否可能吗?
问问题
3131 次
2 回答
2
Perl 模块WWW::Mechanize
是自动化 Web 浏览任务(如下载、上传、表单提交、身份验证、简单浏览、屏幕抓取等)最流行的方式。
如果网站包含 Javascript,处理它们的流行 Perl 模块是使用WWW::Mechanize::Firefox
.
到目前为止,“几乎”任何类型的网站,包括 JavaScript 和 Ajax 等技术以及使用 SSL 安全性和/或通过代理服务器访问,都可以通过属于LWP::UserAgent
andWWW::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 回答