CasperJs是一个基于PhantomJs的工具,其比起PhantomJs能够更加方便的进行navigation。

一个最简单的CasperJs代码

创建一个文件baidu.js。用来模拟我们訪问百度页面

var casper = require('casper').create();



casper.start('http://www.baidu.com/', function() {

   this.echo(this.getTitle());

});



casper.run();

执行:

casperjs baidu.js

得到输出:

“百度一下,你就知道”

一个第二简单的CasperJs代码

CasperJs的运行脚本是由一个一个的Step串联起来的。start表示第一步。然后后面的step用then来表示,再依次运行:

var casper = require('casper').create();



casper.start('http://www.baidu.com/', function() {

   this.echo(this.getTitle());

});



casper.then(function() {

   this.capture('baidu-homepage.png');

})



casper.run();

完毕以后。我们会在Console上得到一个title,同一时候我们也会得到在then中捕捉到的图片baidu-homepage.jpg

一个第三简单的CasperJs代码

我们想办法让CasperJs完毕搜索功能:

var casper = require('casper').create();



casper.start('http://www.baidu.com/', function() {

   this.echo(this.getTitle());

});



casper.then(function() {

   this.capture('baidu-homepage.png');

});



casper.then(function() {

   this.fill('form[action="/s"]', { wd: 'thoughtworks' }, true);//填入form。进行搜索

});



casper.then(function() {

   this.capture('thoughtworks-search-results.png');

});



casper.run();

得到的thoughtworks-search-results.png:

怎么引入jQuery

有些时候,还是jQuery来得方便

var casper = require('casper').create({

   clientScripts: ["jquery.js"]

});



casper.start('http://www.baidu.com/', function() {

   this.echo(this.getTitle());

});



casper.then(function() {

   this.fill('form[action="/s"]', { wd: 'thoughtworks' }, true);

});



casper.then(function() {

   search_result_titles = this.evaluate(getTitles)

   this.echo(search_result_titles.join('\n'))

});



function getTitles() {

   var titles = $.map($("h3.t a"), function(link) {

      return $(link).text()

   });

   return titles

}



casper.run();

返回结果:

thoughtworks_百度百科

成都Thoughtworks-招聘专员--地点:成都招聘信息|ThoughtWorks招聘...

敏捷开发和体验设计 | ThoughtWorks

thoughtworks基本情况及待遇 【懦夫救星_职场古拳法】

和Thoughtworks的一次邂逅(一) - redhat - ITeye技术站点

thoughtworks笔试整理zz_ThoughtWorks招聘经验

关于我们 | ThoughtWorks

ThoughtWorks位列面试难度最高的科技公司之首_百度文库

透明的相冊-ThoughtWorks西安办公室

思特沃克软件技术(西安)有限公司ThoughtWorks Software ...

须要注意的地方:

1)create casper的时候,我们inject了jquery。这个jquery必须是保存在本地的,通过HTTP訪问是无效的。

2)this.evaluate(getTitles)能够理解成。我们在CasperJs中,将getTitles这种方法注入到了訪问的页面中。在訪问的页面中运行这种方法并反问其返回值。

3)訪问页面log的获取:2)中讲到了getTitles事实上是在被訪问页面中运行的,假设我们在getTitles增加一段console.log的代码话,怎么可以得到被訪问页面的console信息呢?

casper.then(function() {

   this.page.onConsoleMessage = function(e) {

      console.log(e);

   }


   search_result_titles = this.evaluate(getTitles)

   this.echo(search_result_titles.join('\n'))

})

这样就能够侦听被訪问页面的console.log事件,比导出到CasperJs中

參考:http://docs.casperjs.org/en/latest/faq.html#can-i-use-jquery-with-casperjs

用CasperJs自己主动浏览页面的更多相关文章

  1. ASP.NET之AdRotator实现淘宝浏览页面的商品随机推荐功能

    如今随便上个网都能够看到淘宝.京东等各大电商平台的双十一购物狂欢宣传,从2009年開始淘宝愣是把11.11这一天打造成了全民购物狂欢节.阿里巴巴的上市更是激发了阿里人的斗志,据说他们今年的目标是100 ...

  2. 利用HTML5判断用户是否正在浏览页面技巧

    现在,HTML5里页面可见性接口就提供给了程序员一个方法,让他们使用visibilitychange页面事件来判断当前页面可见性的状态,并针对性的执行某些任务.同时还有新的document.hidde ...

  3. chrome浏览页面常用快捷键

    1.chrome浏览页面常用快捷键 Ctrl+N 打开新窗口. Ctrl+T 打开新标签页. Ctrl+W关闭当前标签 Ctrl + F4 关闭chrome浏览器 Ctrl+Tab 或 Ctrl+Pg ...

  4. sharepoint 浏览页面导航不正确

    问题是这样的: sharepoint网站上建立一个二级站点,然后在网站中创建几个页面.当浏览二级网站的页面的时候,顶部导航的位置总是在首页的地方,而不是我的二级站点的导航位置. 解决方法: 转到网站集 ...

  5. jq页面提示或者页面牵引浏览--页面的指引向导插件

    1.看看插件效果吧 2. html 文件 :index.html <!DOCTYPE html> <html lang="en"> <head> ...

  6. Django 浏览页面点击计数(通用视图)

    通常情况下在Views.py中直接写一个视图函数就可以了,由于每次点出详情时都会经视图函数处理, 所以可以在此视图函数中对浏览次数进行"+1" 操作. 对应的url:url(r'^ ...

  7. [web前端] react router4.0 登录后返回之前浏览页面(回到来源页)

    本文链接:https://blog.csdn.net/zeroyulong/article/details/81911704困扰了好久的问题,最终还是在官方文档上找到了答案(看英文文档真心难受啊~~) ...

  8. 从输入URL到浏览页面的过程

    之前我们已经讨论过浏览器的渲染原理,今天我们来讨论下更广泛的从输入URL到渲染出页面的过程. 1. 查询该URL是否有缓存 如果有,则直接返回,没有的话,下一步 2. 查询URL对应的IP 首先,到 ...

  9. vue主动刷新页面及列表数据删除后的刷新方法

    在继刷新当前页面,重载页面数据那篇之后 那一篇 深入理解数据驱动 以上算是开发过程中的一个坑,用了一段时间,今天再读代码的时候,感觉被坑的很严重. 1. 获取列表方法 2.重新获取数据 3.这样再次调 ...

随机推荐

  1. Delphi自写组件:可设置颜色的按钮(改成BS_OWNERDRAW风格,然后CN_DRAWITEM)

    unit ColorButton; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, StdCtrls; ...

  2. 使用URLConnection提交请求

    URL的openConnection()方法将返回一个URLConnection对象,该对象表示应用程序和URL之间的通信连接.程序可以通过URLConnection实例向该URL发送请求,读取URL ...

  3. 关于PHP的内置服务器的使用

    今天刚开始正式学习PHP(之前有一点了解),推荐学习的网站是w3school.一开始不知道tomcat服务器不支持PHP脚本,直接把.php文件放到tomcat里面去运行,结果嵌入的php代码段没有什 ...

  4. [初探iOS开发]storyboard的使用

    storyboard的目的是为了方便的设计程序view之间的关系,使得程序员把精力都放到核心业务逻辑之上.

  5. 理解Spring的Bean工厂

    一提到工厂,我们先来回顾前面学习过的工厂方法和抽象工厂模式: 工厂方法:针对产品维度,能够产生新的产品,也能够产生新的产品工厂,既能够扩展产品维度.可是假设我们想在普通工厂上生产产品系列,就会特别麻烦 ...

  6. OpenCV HaarTraining代码解析(二)cvCreateMTStumpClassifier(建立决策树)

    HaarTraining关键的部分是建立基分类器classifier,OpenCV中所採用的是CART(决策树的一种):通过调用cvCreateMTStumpClassifier来完毕. 这里我讨论利 ...

  7. java多线程12设计模式

    1.Single Threaded Execution Pattern(单线程运行模式) 2.Immutable Pattern(一成不变的模式) 3.Guarded Suspension Patte ...

  8. cxf和jboss eap 6.2版本号冲突

    升级jboss版本号到jjboss-eap-6.2之后,启动项目时CXF出现异常. 在jboss-as-7.1.1.Final.apache-tomcat-7.0.37以及jboss-eap-6.1 ...

  9. 初步C++运算符重载学习笔记&lt;3&gt; 增量递减运算符重载

    初步C++运算符重载学习笔记<1> 初探C++运算符重载学习笔记<2> 重载为友元函数     增量.减量运算符++(--)分别有两种形式:前自增++i(自减--i).后自增i ...

  10. 静态网页VS动态网页

    干<沙朗新闻发布系统>什么时候.我们已经建立的网页.html的,并且.aspx,第一次接触.我认为这些东西是一样的,因为它,在观看ASP.NET视频的时候.听见里面讲课的老师有提到了这两样 ...