用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

时间: 2024-11-08 18:51:39

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

用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(); 运行: casp

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

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

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

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

redis主动向页面push数据

对于页面上定时刷新显示的数据,之前一直都是比较"传统"的思想--那就是"页面通过ajax请求后台,后台响应后把数据返回给前台展示,如此反复--",而自己也从来没有过"服务端主动向页面推送数据"的概念. 现在需要用到redis的发布/订阅,页面"订阅"某一channel,服务端在某一channel"发布"内容.服务端发布后,客户端可以通过订阅实时将刚刚发布的内容展示出来. 说说我探索的解决过程吧..从用tom

谷歌眼镜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

用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

casperjs模拟登陆https页面获取当前面地址后发现为about:blank问题排查

解决方案参考:https://github.com/n1k0/casperjs/issues/49#issuecomment-60430359 casper.wait(10000,function(){}),等待了10s后发现获取当前页面的地址的话,还是about:blank 但是我按照上面说的加上casperjs my.js --ignore-ssl-errors=yes 和 --ssl-protocol=any都不行,最后看里面有人也碰到了此情况. casperjs --help后发现,根本

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

本文链接:https://blog.csdn.net/zeroyulong/article/details/81911704困扰了好久的问题,最终还是在官方文档上找到了答案(看英文文档真心难受啊~~) 官方文档地址:https://reacttraining.com/react-router/web/example/auth-workflow 1.来源页中跳转登录按钮: 将本页pathname存放到路由state中, <Link to={{ pathname:"/login",

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

之前我们已经讨论过浏览器的渲染原理,今天我们来讨论下更广泛的从输入URL到渲染出页面的过程. 1. 查询URL对应的IP 首先,到 host 文件查找,如果找到则返回. 如果没有找到,去访问 DNS 服务器(一般先访问本地路由器,没有再访问更高级的 DNS 服务器),最终得到对应的 IP 2. 建立 TCP 连接 首先,通过 IP 协议,指定 出发地 和 目的地 然后,通过 OSPF 协议,计算路由的最佳路径,得到路过的每个路由器的 IP地址 最后,再利用 ARP 计算出路径经过每个路由器的 M