PhantomJS
PhantomJS是一種已停止開發的無頭瀏覽器,用於自動化網頁互動。PhantomJS 提供了一個JavaScript API,支援自動模擬指標、螢幕截圖、用戶行為和斷言,使其成為用於在無頭系統(如持續整合環境)中執行基於瀏覽器的單元測試的常用工具。PhantomJS 基於WebKit,使其成為類似於Safari和Google Chrome(在其WebKit分支變為Blink之前)的瀏覽環境。它是在BSD許可證下發佈的開源軟件。
![]() | |
開發者 | Ariya Hidayat |
---|---|
首次發佈 | 2011年1月17日 |
最終版本 |
|
原始碼庫 | |
程式語言 | C++,JavaScript,C |
類型 | 無頭瀏覽器 |
許可協定 | BSD許可證[2] |
網站 | phantomjs![]() |
歷史
編輯PhantomJS 經過幾年的開發,於 2011年1月23日由 Ariya Hidayat 發佈[4]第一次公開提交是在 2011 年。 [5]
PhantomJS 的常用標誌是黑色背景上的熒光藍色幽靈。這是指缺少圖形化使用者介面或瀏覽器主體,使 PhantomJS 用戶看起來像鬼。
2018年3月,由於缺乏積極貢獻,PhantomJS 的開發暫停。[6]
用法
編輯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,但是基於Mozilla的Gecko 瀏覽器引擎而不是 WebKit。[7]類似的專案trifleJS 針對Internet Explorer的MSHTML引擎。[8]
PhantomJS 發佈後不久,Nicolas Perriault 編寫了 CasperJS,這是一套基於 PhantomJS 的庫,可延伸其作為自動網頁測試客戶端的功能,允許用戶利用 PhantomJS 建立行為驅動開發測試。CasperJS 的最終版本在2017年發佈。[9]
用戶
編輯幾家著名的公司已經使用了 PhantomJS。
參見
編輯參考來源
編輯- ^ Release 2.1.1. 2016年1月24日 [2018年7月22日].
- ^ phantomjs/LICENSE.BSD at master · ariya/phantomjs. GitHub. [2022-03-24]. (原始內容存檔於2022-04-21) (英語).
- ^ Releases · ariya/phantomjs. GitHub. [2017-04-21]. (原始內容存檔於2022-04-09).
- ^ don't code today what you can't debug tomorrow. ariya.blogspot.com. [2015-07-20]. (原始內容存檔於2015-07-23).
- ^ ariya/phantomjs. GitHub. [2015-07-20]. (原始內容存檔於2022-04-21).
- ^ Archiving the project: suspending the development. ariya/phantomjs. Github. 2018-03-03 [2022-03-24]. (原始內容存檔於2022-05-12).
- ^ Laurent Jouanneau. FaQ - SlimerJS. slimerjs.org. [2015-07-20]. (原始內容存檔於2022-03-31).
- ^ trifleJS. [2015-07-20]. (原始內容存檔於2022-04-01).
- ^ CasperJS on GitHub. GitHub. [2021-04-11]. (原始內容存檔於2022-03-24).
- ^ Marcel Duran. YSlow - Official Open Source Project Website. yslow.org. [2015-07-20]. (原始內容存檔於2022-04-27).
- ^ Leo Lanese on Twitter. Twitter. [2015-07-20]. (原始內容存檔於2022-04-08).
- ^ phegaro. LinkedIn Mobile: How do we do it?. SlideShare. [2015-07-20]. (原始內容存檔於2021-06-16).
- ^ Michael Mimoso. Netflix Open Source Security Tools Solve Range of Challenges. threatpost.com. [2015-07-20]. (原始內容存檔於2021-06-12).
- ^ one year of wandering headlessly. ofilabs.com. [2015-07-20]. (原始內容存檔於2015-07-22).