下面的安装测试基于window系统(win10)
1.PhantomJS
PhantomJS 是一个基于 WebKit 的服务器端JavaScript API,它全面支持web而不需浏览器支持,其快速,原生支持各种Web标准: DOM 处理, CSS 选择器, JSON, Canvas, 和 SVG。 PhantomJS 可以用于 页面自动化, 网络监测 , 网页截屏 ,以及 无界面测试 等
1.1 安装
下载地址为:http://phantomjs.org/download.html 解压之后,可以加到环境变量中
1.2 使用
- 示例demo1.js–截图:
1 | var page = require('webpage').create(); |
命令行输入:1
phantomjs demo1.js
- 示例demo2.js–DOM操作
1 | var page = require('webpage').create(); |
执行命令同上,得到结果是:1
2success
Page title: 百度一下,你就知道
所执行的DOM操作要在page.evaluate
中,
- 示例demo3.js–读取文件
1 | var system = require('system'); |
url-02.txt中如果是很多url,一个一个访问url的话,可能会这样实现1
2
3
4
5
6
7page.open(urlArr[0], function(status) {
page.open(urlArr[1], function(status) {
page.open(urlArr[2], function(status) {
//... ...
});
});
});
这样写法就有很大的不方便,于是我们就引入了CasperJS
2.CasperJS
2.1 安装
1 | npm i casperjs --save-dev |
为方便使用也可以加入到环境变量中
2.2 使用
- 示例demo:casper-test.js–打开网页截图
1 | var casper = require('casper').create(); |
执行命令如下1
casperjs casper-test.js
- 示例demo:casper-test2.js–操作DOM,访问网页
1 | var casper = require('casper').create(); |
执行命令类比同上
- 示例demo:casper-test3.js–单元测试
1 | function Cow() { |
执行命令1
casperjs test casper-test3.js
结果是:1
2
3
4
5
6Test file: casper-test3.js
# Cow can moo
PASS Subject equals the expected value
PASS Subject is strictly true
PASS Cow can moo (2 tests)
PASS 2 tests executed in 0.031s, 2 passed, 0 failed, 0 dubious, 0 skipped.
- 示例demo:casper-test4.js–浏览器测试
1 | casper.test.begin('Google search retrieves 10 or more results', 5, function suite(test) { |
执行命令如demo3类比
3.PhantomJs+CasperJs
实现异步操作
1 | var casper = require('casper').create(); //新建一个页面 |
demo(casper-phantomjs.js)如下–一次访问三十几个url:1
2
3
4
5
6
7
8
9
10
11
12
13
14
15var fs = require('fs');
var casper = require('casper').create();
phantom.outputEncoding = "gbk"; //解决中文乱码
var filePath = "url-02.txt";
var content = fs.read(filePath);
var urlArr = content.split('\n');
casper.start();
for (var i = 0; i < urlArr.length; i++) {
casper.thenOpen(urlArr[i], function() {
this.echo('Page title: ' + this.getTitle());
});
}
casper.run();
// phantom.exit();
执行命令1
casperjs casper-phantomjs.js
参考阅读: