几周来我试图自动执行浏览任务。 任务很简单:登录,点击链接,输入变量并提交,注销。 我需要创建一个这样的网站(排序一个更简单的接口)请记住,该网站正在使用Servlets,我无法访问网站代码。 起初我试过CURL,但是因为页面中有一些Ajax元素卷曲无法显示内容。 我尝试过.NET Webdriver,JUnit,Selenium等,但都渲染ajax元素失败。 我试过perl和python机械化,而perl没有工作,我能够获得与python的动态内容。 问题不在于我的链接是Javascript执行,而是以Javascript开始:我不认为我可以使用Mechanize调用函数。 有谁知道这个任务甚至可能吗?如何自动执行浏览任务?
回答
的Perl模块,WWW::Mechanize
是自动化网页浏览的任务,如,下载,上传,表单提交,验证,简单的浏览,屏幕抓取的最流行的方式等等,等等
如果网站包含的JavaScript,流行的Perl模块来处理它们是使用WWW::Mechanize::Firefox
。
到目前为止,“几乎”任何类型的网站,包括像JavaScript和Ajax技术,并使用SSL安全性,或通过代理服务器访问可以通过属于LWP::UserAgent
和WWW::Mechanize
或WWW::Mechanize::Firefox
的Perl模块相结合的方法进行处理。通过网络提供的示例负载。
我理解它的方式WWW :: Mechanize :: Firefox需要MozlRepl这是一个Firefox扩展,并且与我的命令行环境无关。 – user1470618 2012-07-18 19:49:44
你使用的是什么样的“命令行环境”?您也可以使用WWW :: Scripter来处理JavaScript。 – Annjawn 2012-07-18 19:56:06
谢谢Annjawn,只是linux,事情是我想创建一个需要凭据的网站,并运行一个脚本来自动化一些任务,因此所有的任务都应该在脚本中完成,我也会看看Scripter。但我得出的结论是,尽管大家都说,处理复杂的网站与脚本是可能极其困难和模块依赖。 – user1470618 2012-07-18 20:11:42
一个例子使用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()手动启动它们。
* OOOOO一堆随机链接!* - 任何更多的信息将是有益的。 – rlemon 2012-07-17 22:37:49
Selenium WebDriver在Ajax元素上失败。 – user1470618 2012-07-17 22:38:23
另外你确定我能用Phantom运行服务器端JavaScript吗? – user1470618 2012-07-17 22:38:43
- 1. 如何自动执行BUILD任务
- 2. 自动执行Eclipse任务
- 3. 如何使用wget自动完成网页浏览任务?
- 4. 在Xcode 4中自动执行任务
- 5. 使用PHP自动执行任务
- 6. SVN脚本来自动执行任务
- 7. 流浪ssh后自动执行任务
- 8. 自动执行平凡的任务
- 9. 使用UFT自动执行HPALM任务
- 10. django-cron任务不会自动执行
- 11. 许多Selenium浏览器执行相同的任务(python)
- 12. 如何执行gradle任务
- 13. 如何在SVN更新后自动执行Visual Studio任务?
- 14. 如何在JFrame显示后自动执行任务?
- 15. 如何在Odoo 10创建自动执行任务?
- 16. 如何在构建后自动执行重复性任务?
- 17. 如何在Linux中自动执行在线任务?
- 18. 如何在Xcode中自动执行任务?
- 19. 如何最有效地自动执行重复的Excel任务?
- 20. 如何自动滚动浏览邮件
- 21. 活动不执行任务
- 22. 如何在Chrome,Microsoft Edge或任何其他浏览器中自动执行UI测试?
- 23. 如何为浏览器场景自动执行多用户登录
- 24. 如何在自动成功执行.bat文件后关闭浏览器
- 25. 如何自动执行定期执行作业的WCF服务
- 26. 如何从现代浏览器中启动可执行文件?
- 27. Windows可执行文件如何从浏览器中启动[.exe]?
- 28. 在任务并行库:如何推迟Task.TaskFactory.FromAsync任务执行?
- 29. 在部署Salesforce项目后自动执行手动任务
- 30. 如何执行INotifyPropertyChanged自动
您是否尝试过使用selenium的'waitFor's来让Ajax播放更好?它究竟如何'失败'? – 2012-07-17 22:42:32
Selenium登录失败。我使用硒的.NET包装,并无法通过登录屏幕。我收到了“您必须输入密码”错误。 (是的表单字段的名称是正确的) – user1470618 2012-07-17 22:57:29
[机械化常见问题](http://p3rl.org/WWW::Mechanize::FAQ#JavaScript)包含缺少JavaScript支持的解决方法,并列出许多模块有Javascript支持。 – daxim 2012-07-18 07:41:51