跳至內容

PhantomJS

本頁使用了標題或全文手工轉換
維基百科,自由的百科全書
PhantomJS
開發者Ariya Hidayat
首次發布2011年1月17日,​13年前​(2011-01-17
最終版本2.1.1[1](2016年1月24日,​8年前​(2016-01-24
源代碼庫 編輯維基數據鏈接
編程語言C++JavaScriptC
類型無頭瀏覽器
許可協議BSD許可證[2]
網站phantomjs.org/ 編輯維基數據

PhantomJS是一種已停止開發的無頭瀏覽器,用於自動化網頁交互。PhantomJS 提供了一個JavaScript API,支持自動模擬鼠標、屏幕截圖、用戶行為和斷言,使其成為用於在無頭系統(如持續集成環境)中運行基於瀏覽器的單元測試的常用工具。PhantomJS 基於WebKit,使其成為類似於SafariGoogle Chrome(在其WebKit分支變為Blink之前)的瀏覽環境。它是在BSD許可證下發布的開源軟件

歷史

[編輯]

PhantomJS 經過幾年的開發,於 2011年1月23日由 Ariya Hidayat 發布[3]第一次公開提交是在 2011 年。 [4]

PhantomJS 的常用標誌是黑色背景上的熒光藍色幽靈。這是指缺少圖形用戶界面或瀏覽器主體,使 PhantomJS 用戶看起來像鬼。

2018年3月,由於缺乏積極貢獻,PhantomJS 的開發暫停。[5]

用法

[編輯]

PhantomJS的JavaScript API 可用於打開網頁、截屏、執行用戶操作以及在頁面上下文中運行注入的 JavaScript。例如,以下代碼將打開英文維基百科,並在加載時將屏幕截圖保存到文件並退出。

console.log('正在載入頁面');
var page = require('webpage').create();
var url = 'http://en.wikipedia.org/';
page.open(url, function (status) {
  console.log('頁面已載入');
  page.render('wikipedia.org.png');
  phantom.exit();
});

生態系統

[編輯]

PhantomJS 的影響力之大,以至於類似的項目都採用 API 作為與無頭瀏覽器交互的標準方式。 SlimerJS 提供了一個類似 PhantomJS 的 API,但是基於MozillaGecko 瀏覽器引擎而不是 WebKit。[6]類似的專案trifleJS 針對Internet ExplorerMSHTML引擎。[7]

PhantomJS 發布後不久,Nicolas Perriault 編寫了 CasperJS,這是一套基於 PhantomJS 的庫,可擴展其作為自動網頁測試客戶端的功能,允許用戶利用 PhantomJS 創建行為驅動開發測試。CasperJS 的最終版本在2017年發佈。[8]

雅虎開發了一個利用 PhantomJS 收集網站性能指標的 YSlow 版本。[9]

用戶

[編輯]

幾家著名的公司已經使用了 PhantomJS。

  • Twitter從 2015 年開始使用QUnit和 PhantomJS 進行單元測試。[10]
  • 自 2011 年起,LinkedIn使用基於 PhantomJS 的工具進行性能測試。[11]
  • 自 2014 年起,Netflix使用 Sketchy(一個使用 PhantomJS 構建的無頭瀏覽器)來了解其網頁的行爲而無需訪問該網站。[12]
  • 自 2012 年起,時代華納有線電視公司將 PhantomJS 與CoffeeScript 、 Jasmine和JUnit XML 一起用於Jenkins持續集成。[13]

參見

[編輯]

參考來源

[編輯]
  1. ^ Releases · ariya/phantomjs. GitHub. [2017-04-21]. (原始內容存檔於2022-04-09). 
  2. ^ phantomjs/LICENSE.BSD at master · ariya/phantomjs. GitHub. [2022-03-24]. (原始內容存檔於2022-04-21) (英語). 
  3. ^ don't code today what you can't debug tomorrow. ariya.blogspot.com. [2015-07-20]. (原始內容存檔於2015-07-23). 
  4. ^ ariya/phantomjs. GitHub. [2015-07-20]. (原始內容存檔於2022-04-21). 
  5. ^ Archiving the project: suspending the development. ariya/phantomjs. Github. 2018-03-03 [2022-03-24]. (原始內容存檔於2022-05-12). 
  6. ^ Laurent Jouanneau. FaQ - SlimerJS. slimerjs.org. [2015-07-20]. (原始內容存檔於2022-03-31). 
  7. ^ trifleJS. [2015-07-20]. (原始內容存檔於2022-04-01). 
  8. ^ CasperJS on GitHub. GitHub. [2021-04-11]. (原始內容存檔於2022-03-24). 
  9. ^ Marcel Duran. YSlow - Official Open Source Project Website. yslow.org. [2015-07-20]. (原始內容存檔於2022-04-27). 
  10. ^ Leo Lanese on Twitter. Twitter. [2015-07-20]. (原始內容存檔於2022-04-08). 
  11. ^ phegaro. LinkedIn Mobile: How do we do it?. SlideShare. [2015-07-20]. (原始內容存檔於2021-06-16). 
  12. ^ Michael Mimoso. Netflix Open Source Security Tools Solve Range of Challenges. threatpost.com. [2015-07-20]. (原始內容存檔於2021-06-12). 
  13. ^ one year of wandering headlessly. ofilabs.com. [2015-07-20]. (原始內容存檔於2015-07-22).