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. Qt之VLFeat SLIC超像素分割(Cpp版)

    源地址:http://yongyuan.name/blog/vlfeat-slic-with-qt.html 近段时间学了点Qt,恰好前段时间用借助VLfeat以及OpenCV捣鼓了SLIC超像素分割 ...

  2. 从Hadoop骨架MapReduce在海量数据处理模式(包括淘宝技术架构)

    从hadoop框架与MapReduce模式中谈海量数据处理 前言 几周前,当我最初听到,以致后来初次接触Hadoop与MapReduce这两个东西,我便稍显兴奋,认为它们非常是神奇.而神奇的东西常能勾 ...

  3. uva 1151 - Buy or Build poj 2784 Buy or Build(最小生成树)

    最小生成树算法简单 只是增加了一些新的东西,对于需要最小生成树算法 和中 并检查使用的一系列 还有一些更深入的了解. 方法的一些复杂问题 #include<cstdio> #include ...

  4. poj 3415 Common Substrings

    题目链接:http://poj.org/problem?id=3415 题目分类:后缀数组 题意:给出两个串和一个数字k,求两个串的公共字串大于等于k的数目 代码: //#include<bit ...

  5. 新发现IM项目Rabbitim(使用msys或者cygwin编译安装),FileZilla(wxWidget开发)

    https://github.com/KangLin/rabbitim/blob/master/docs/INSTALL.md https://github.com/KangLin/rabbitim ...

  6. Hawk-数据抓取工具

    Hawk-数据抓取工具:简明教程   Hawk: Advanced Crawler& ETL tool written in C#/WPF 1.软件介绍 HAWK是一种数据采集和清洗工具,依据 ...

  7. C++&&Mysql&&codeblocks

    #include <iostream> #include <stdio.h> #include <winsock2.h> #include <mysql.h& ...

  8. web开发性能优化---用户体验篇

    怎样从技术角度怎样增强用户体验.都是非常多平台都在做的事情,依据个人实际经验碰到几种体验做下总结. 1.降低页面刷新白屏 适当使用ajax技术.改善刷新白屏现象. 2.信息提醒,邮件.站内信.短信在购 ...

  9. hdu1054(最小顶点覆盖)

    传送门:Strategic Game 题意:用尽量少的顶点来覆盖所有的边. 分析:最小顶点覆盖裸题,最小顶点覆盖=最大匹配数(双向图)/2. #include <cstdio> #incl ...

  10. WASP_百度百科

    WASP_百度百科 WASP