2012-07-17 117 views
1

几周来我试图自动执行浏览任务。 任务很简单:登录,点击链接,输入变量并提交,注销。 我需要创建一个这样的网站(排序一个更简单的接口)请记住,该网站正在使用Servlets,我无法访问网站代码。 起初我试过CURL,但是因为页面中有一些Ajax元素卷曲无法显示内容。 我尝试过.NET Webdriver,JUnit,Selenium等,但都渲染ajax元素失败。 我试过perl和python机械化,而perl没有工作,我能够获得与python的动态内容。 问题不在于我的链接是Javascript执行,而是以Javascript开始:我不认为我可以使用Mechanize调用函数。 有谁知道这个任务甚至可能吗?如何自动执行浏览任务?

+0

您是否尝试过使用selenium的'waitFor's来让Ajax播放更好?它究竟如何'失败'? – 2012-07-17 22:42:32

+0

Selenium登录失败。我使用硒的.NET包装,并无法通过登录屏幕。我收到了“您必须输入密码”错误。 (是的表单字段的名称是正确的) – user1470618 2012-07-17 22:57:29

+0

[机械化常见问题](http://p3rl.org/WWW::Mechanize::FAQ#JavaScript)包含缺少JavaScript支持的解决方法,并列出许多模块有Javascript支持。 – daxim 2012-07-18 07:41:51

回答

2

的Perl模块,WWW::Mechanize是自动化网页浏览的任务,如,下载,上传,表单提交,验证,简单的浏览,屏幕抓取的最流行的方式等等,等等

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

到目前为止,“几乎”任何类型的网站,包括像JavaScript和Ajax技术,并使用SSL安全性,或通过代理服务器访问可以通过属于LWP::UserAgentWWW::MechanizeWWW::Mechanize::Firefox的Perl模块相结合的方法进行处理。通过网络提供的示例负载。

+0

我理解它的方式WWW :: Mechanize :: Firefox需要MozlRepl这是一个Firefox扩展,并且与我的命令行环境无关。 – user1470618 2012-07-18 19:49:44

+0

你使用的是什么样的“命令行环境”?您也可以使用WWW :: Scripter来处理JavaScript。 – Annjawn 2012-07-18 19:56:06

+0

谢谢Annjawn,只是linux,事情是我想创建一个需要凭据的网站,并运行一个脚本来自动化一些任务,因此所有的任务都应该在脚本中完成,我也会看看Scripter。但我得出的结论是,尽管大家都说,处理复杂的网站与脚本是可能极其困难和模块依赖。 – user1470618 2012-07-18 20:11:42

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: '[email protected]', 
       password: 'password123' 
      }, 
      true 
     ); // This submits login form 
    } 
); 

Casperjs店饼干,所以请求更深的网页都不会失败。有关提交表单的详细信息,请参阅()。

请参阅evaluate()以运行js,就好像它在您正测试的页面上执行一样。

如果你想测试AJAX操作 - 没问题。他们将运行,就好像该页面在浏览器中运行一样,您可以在DOM中看到结果。您可以使用evaluate()手动启动它们。

+4

* OOOOO一堆随机链接!* - 任何更多的信息将是有益的。 – rlemon 2012-07-17 22:37:49

+0

Selenium WebDriver在Ajax元素上失败。 – user1470618 2012-07-17 22:38:23

+0

另外你确定我能用Phantom运行服务器端JavaScript吗? – user1470618 2012-07-17 22:38:43