PhantomJS是一个命令行工具。确保您熟悉命令提示符或PowerShell(在Windows上)或终端(在macOS和Linux上)的使用。
这个指令假设PhantomJS已经安装并放置在路径的某个地方(例如,Windows用户请参阅本教程)。javascript
地址:https://phantomjs.org/downloa...html
选择对应操做系统的下载便可,下载完成后须要添加到环境变量中,才能使用phantomjs命令java
建立test.js文件,内容以下:web
console.log('Hello, world!'); phantom.exit();
执行命令网络
> phantomjs test.js Hello, world!
注意:phantom须要退出,否则会一直执行,因此须要在脚本文件尾加上
phantom.exit()
test.js修改以下:闭包
var page = require('webpage').create(); page.open('https://www.baidu.com', function(status) { console.log("Status: " + status); if(status === "success") { page.render('./baidu-snapshoot.png'); } phantom.exit(); });
上面的代码是尝试打开百度网站,成功返回:success 失败返回:fail。成功后会执行网站截图保存下来less
test.js修改以下:函数
var page = require('webpage').create(), system = require('system'), t, address; if (system.args.length === 1) { console.log('Usage: loadspeed.js [some URL]'); phantom.exit(); } t = Date.now(); address = system.args[1]; page.open(address, function(status) { if (status !== 'success') { console.log('FAIL to load the address'); } else { t = Date.now() - t; console.log('Loading ' + system.args[1]); console.log('Loading time ' + t + ' msec'); } phantom.exit(); });
执行命令工具
> phantomjs test.js https://www.baidu.com Loading https://www.baidu.com Loading time 1485 msec
在能够沙盒模式下使用evaluate()
方法返回简单的javascript对象,不支持函数或闭包测试
test.js修改下如:
phantom.outputEncoding="gb2312"; // 解决命令行乱码 var page = require('webpage').create(); page.open('https://www.baidu.com', function(status) { var title = page.evaluate(function() { return document.title; }); console.log('Page title is ' + title); phantom.exit(); });
执行命令
> phantomjs test.js Page title is 百度一下,你就知道
若是想拦截console打印,须要使用onConsoleMessage
回调
phantom.outputEncoding="gb2312"; var page = require('webpage').create(); page.onConsoleMessage = function(msg) { console.log('Page title is ' + msg); }; page.open('https://www.baidu.com', function(status) { page.evaluate(function() { console.log(document.title); }); phantom.exit(); });
执行命令
> phantomjs test.js Page title is 每个星球都有一个驱动核心, 每一种思想都有影响力的种子。 感觉世界的温度, 年轻的你也能成为改变世界的动力, 百度珍惜你全部的潜力。 你的潜力,是改变世界的动力! Page title is %c百度2021校园招聘简历投递:https://talent.baidu.com/external/baidu/campus.html color:red Page title is 百度一下,你就知道
除了上面一些简单的示例,还须要探索使用PhantomJS进行页面自动化、网络监控、屏幕捕获和headless测试。官方也提供了一些写好的 示例 下载运行便可。
欢迎关注:https://www.fenxianglu.cn/