用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自己主动浏览页面的更多相关文章
- ASP.NET之AdRotator实现淘宝浏览页面的商品随机推荐功能
如今随便上个网都能够看到淘宝.京东等各大电商平台的双十一购物狂欢宣传,从2009年開始淘宝愣是把11.11这一天打造成了全民购物狂欢节.阿里巴巴的上市更是激发了阿里人的斗志,据说他们今年的目标是100 ...
- 利用HTML5判断用户是否正在浏览页面技巧
现在,HTML5里页面可见性接口就提供给了程序员一个方法,让他们使用visibilitychange页面事件来判断当前页面可见性的状态,并针对性的执行某些任务.同时还有新的document.hidde ...
- chrome浏览页面常用快捷键
1.chrome浏览页面常用快捷键 Ctrl+N 打开新窗口. Ctrl+T 打开新标签页. Ctrl+W关闭当前标签 Ctrl + F4 关闭chrome浏览器 Ctrl+Tab 或 Ctrl+Pg ...
- sharepoint 浏览页面导航不正确
问题是这样的: sharepoint网站上建立一个二级站点,然后在网站中创建几个页面.当浏览二级网站的页面的时候,顶部导航的位置总是在首页的地方,而不是我的二级站点的导航位置. 解决方法: 转到网站集 ...
- jq页面提示或者页面牵引浏览--页面的指引向导插件
1.看看插件效果吧 2. html 文件 :index.html <!DOCTYPE html> <html lang="en"> <head> ...
- Django 浏览页面点击计数(通用视图)
通常情况下在Views.py中直接写一个视图函数就可以了,由于每次点出详情时都会经视图函数处理, 所以可以在此视图函数中对浏览次数进行"+1" 操作. 对应的url:url(r'^ ...
- [web前端] react router4.0 登录后返回之前浏览页面(回到来源页)
本文链接:https://blog.csdn.net/zeroyulong/article/details/81911704困扰了好久的问题,最终还是在官方文档上找到了答案(看英文文档真心难受啊~~) ...
- 从输入URL到浏览页面的过程
之前我们已经讨论过浏览器的渲染原理,今天我们来讨论下更广泛的从输入URL到渲染出页面的过程. 1. 查询该URL是否有缓存 如果有,则直接返回,没有的话,下一步 2. 查询URL对应的IP 首先,到 ...
- vue主动刷新页面及列表数据删除后的刷新方法
在继刷新当前页面,重载页面数据那篇之后 那一篇 深入理解数据驱动 以上算是开发过程中的一个坑,用了一段时间,今天再读代码的时候,感觉被坑的很严重. 1. 获取列表方法 2.重新获取数据 3.这样再次调 ...
随机推荐
- 深入分析redis cluster 集群
深入分析redis cluster 集群安装配置详解 下面小编来为各位介绍一篇深入分析redis cluster 集群安装配置详解,如果你希望做数据库集群就可以来看看此文章的哦. http://rub ...
- SVM入门(十)将SVM用于多类分类
源地址:http://www.blogjava.net/zhenandaci/archive/2009/03/26/262113.html 从 SVM的那几张图可以看出来,SVM是一种典型的两类分类器 ...
- setenv 和 set
setenv 和 set 是在csh系列的命令,当然bash中也有set,还是有出入的. set 是对当前进程有效,不会传递给子进程 setenv 不仅对当前进程有效,也会传递给子进程. 语法 ...
- hdu2647解题报告
题意:有个工厂的老板给工人发奖金,每人基础都是888,工人们有自己的想法,如:a 工人想要比 b 工人的奖金高,老板想要使花的钱最少 那么就可以 给b 888,给a 889 ,但是如果在此基础上,b也 ...
- UVA 10622 - Perfect P-th Powers(数论)
UVA 10622 - Perfect P-th Powers 题目链接 题意:求n转化为b^p最大的p值 思路:对n分解质因子,然后取全部质因子个数的gcd就是答案,可是这题有个坑啊.就是输入的能够 ...
- CF 316C2(Tidying Up-二分图最大边权)
C2. Tidying Up time limit per test 4 seconds memory limit per test 256 megabytes input standard inpu ...
- 解压tar.gz文件报错gzip: stdin: not in gzip format解决方法
解压tar.gz文件报错gzip: stdin: not in gzip format解决方法 在解压tar.gz文件的时候报错 1 2 3 4 5 [Sun@localhost Downloads] ...
- hdu2063+hdu1083(最大匹配数)
传送门:hdu2063过山车 #include <cstdio> #include <cstring> #include <string> #include < ...
- http_load安装与测试参数分析 - 追求自由自在的编程 - ITeye技术网站
http_load安装与测试参数分析 - 追求自由自在的编程 - ITeye技术网站 http_load -p 50 -s 120 urls
- ubuntu 经常使用软件及环境
安装完系统后,更新系统 sudo apt-get update # 更新源索引 sudo apt-get dist-upgrade # 更新系统 sudo apt-get autoremove 1安装 ...