phantomjs入門使用

PhantomJS是一個命令行工具。確保您熟悉命令提示符或PowerShell(在Windows上)或終端(在macOS和Linux上)的使用。
這個指令假設PhantomJS已經安裝並放置在路徑的某個地方(例如,Windows用戶請參閱本教程)。javascript

1、下載

地址:https://phantomjs.org/downloa...html

選擇對應操做系統的下載便可,下載完成後須要添加到環境變量中,才能使用phantomjs命令java

2、Hello World!

建立test.js文件,內容以下:web

console.log('Hello, world!');
phantom.exit();

執行命令網絡

> phantomjs test.js
Hello, world!
注意:phantom須要退出,否則會一直執行,因此須要在腳本文件尾加上 phantom.exit()

3、加載網頁打印快照

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

4、測試加載網站的速度

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

5、代碼評審

在能夠沙盒模式下使用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/

image.png

相關文章
相關標籤/搜索