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/