用CasperJs自动浏览页面

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自动浏览页面

时间: 2024-10-23 14:24:07

用CasperJs自动浏览页面的相关文章

用CasperJs自动浏览页面(转)

内容转自 http://blog.csdn.net/kiwi_coder/article/details/36248353 CasperJs是一个基于PhantomJs的工具,其比起PhantomJs可以更加方便的进行navigation. 一个最简单的CasperJs代码 创建一个文件baidu.js,用来模拟我们访问百度页面 var casper = require('casper').create(); casper.start('http://www.baidu.com/', funct

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

现在,HTML5里页面可见性接口就提供给了程序员一个方法,让他们使用visibilitychange页面事件来判断当前页面可见性的状态,并针对性的执行某些任务.同时还有新的document.hidden属性可以使用. document.hidden 这个新出现的document.hidden属性,它显示页面是否为用户当前观看的页面,值为ture或false. document.visibilityState visibilityState的值要么是visible (表明页面为浏览器当前激活tab

gulp+browserSync自动刷新页面

BrowserSync "Browsersync能让浏览器实时.快速响应您的文件更改(html.js.css.sass.less等)并自动刷新页面.更重要的是 Browsersync可以同时在PC.平板.手机等设备下进项调试.您可以想象一下:"假设您的桌子上有pc.ipad.iphone.android等设备,同时打开了您需要调试的页面,当您使用browsersync后,您的任何一次代码保存,以上的设备都会同时显示您的改动".无论您是前端还是后端工程师,使用它将提高您30%的

滑动ListView自动隐藏页面头部和底部元素的例子

完整工程代码在这:https://github.com/NashLegend/Auto-Hide-ListView 现在很多软件都有这种滑动列表的时候自动隐藏页面头部和底部元素的功能,比如Google+.在刚刚进入Activity的时候,页面是一个列表,底部有一个view,头部一个view,当列表向上滑动的时候,隐藏头尾元素,以显示更多内容,当列表向下滑动的时候,再将头尾元素拉出来.比如Google+. 刚刚进入时是这个样子: 再把列表身上一拉,头尾隐藏,成了这个样子: 再往下拉,就会再变回第一

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

现在随便上个网都可以看到淘宝.京东等各大电商平台的双十一购物狂欢宣传,从2009年开始淘宝愣是把11.11这一天打造成了全民购物狂欢节.阿里巴巴的上市更是激发了阿里人的斗志,据说他们今年的目标是1000亿.都说一个成功男人的背后必有一个女人,马云的成功是背后成千上万的女人呀-- 言归正传我们谈点专业的知识.我们每个人都在淘宝上买过东西吧,一般我们都是先搜索自己想要买的东西,比如:上衣.牛仔裤.帽子--然后淘宝给出我们搜索结果.如果有更加明确的购物目标我们会勾选按照人气.销量.信用.价格等筛选,然

Servlet自动刷新页面

以下内容引用自http://wiki.jikexueyuan.com/project/servlet/auto-refresh.html: 假设一个Web页面,显示了现场比赛得分或股票市场状况或货币兑换率.对于所有这些类型的页面,都需要使用浏览器中的Refresh或Reload按钮来定期刷新Web页面. Java Servlet提供一个机制使这项工作变得简单,可以使得Web页面在给定的时间间隔自动刷新. 刷新一个Web页面最简单的方式是使用响应对象的方法setIntHeader().以下是这种方

自动检查页面链接是否有效

Function?CheckAllLinkReachable(strBrowser,?strPage,?strURLPattern) Dim?blnReachable blnReachable?=?True Set?bjXML?=?CreateObject("Msxml2.XMLHTTP") '?Get?all?link?on?the?page Set?bjDes?=?Description.Create objDes("micclass").Value?=?&qu

怎么让手机浏览器和微信焦点在文本输入框时不自动放大页面

方法一:禁止页面缩放 在head标签中加入以下代码 <meta name="viewport" content="width=device-width, initial-scale=1.0,minimum-scale=1.0,maximum-scale=1.0, user-scalable=no"> content的解释 width=device-width //宽度等于设备屏幕宽度 initial-scale=1.0 //初始缩放比例 minimum-

谷歌眼镜Mirror app开发之简单新闻浏览页面

Mirror app和Google glass其他APP一样,UI简洁很重要,所以我们需要设计一下怎么布局. 本人的布局如下: 有个绿色的标题,白色的简介还有蓝色的来源,布局很简单,代码如下 1 <article> 2 <img src="http://static.freebuf.com/2014/07/weixing-220x150.jpg" width="100%" height="100%"> 3 <div