PhantomJS 英文解釋: PhantomJS is a headless WebKit scriptable with JavaScript. 中文解釋: 一個基於 webkit 內核的無頭瀏覽器,沒有 UI 界面。 補充: 它就是一個瀏覽器,只是內部的點擊、翻頁等人爲相關操做須要程序設計實現。
NightmareJS 英文解釋: A high-level browser automation library. Under the covers it uses Electron, which is similar to PhantomJS but roughly twice as fast and more modern. 中文解釋: 一個輕量級瀏覽器自動化測試庫。基於Electron,和PhantomJS相似,可是快了大約2倍且更現代。 補充: 它的接口比PhantomJS友好不少,大大提升了開發效率:
並且,它還提供了chrome插件-daydream,它可以錄製你在頁面上的操做,而且生成對應的代碼。這也是我爲何當初選擇它的重要的緣由之一。 可是,如今NightmareJS好像難產了,核心代碼的更新是在一年多前,並且daydream的插件安裝頁面也404中。果斷拋棄。
Puppeteer 英文解釋: Puppeteer is a Node library which provides a high-level API to control Chrome or Chromium over the DevTools Protocol. Puppeteer runs headless by default, but can be configured to run full (non-headless) Chrome or Chromium. 中文解釋: Puppeteer是一個提供創建在DevTools協議(devtools-protocol),控制Chrome或Chromium的高階API node庫。Puppeteer默認無界面運行,不過能夠經過配置變爲有界面運行Chrome或Chromium。 補充: 它由Chrome DevTools維護,並且和NightmareJS同樣,也提供了自動生成代碼的Chrome插件-puppeteer-recorder。因此它徹底能夠替代NightmareJS,或者說就是NightmareJS涼了的緣由吧。
Puppeteer還分puppeteer和puppeteer-core,區別可參閱 puppeteer-vs-puppeteer-core。 總之,若是對各個瀏覽器兼容性測試沒有要求的話,我的認爲是最好的e2e自動化測試庫。
Selenium-webdriver 英文解釋: Selenium is a browser automation library. Most often used for testing web-applications, Selenium may be used for any task that requires automating interaction with the browser. 中文解釋: Selenium是一個瀏覽器自動化測試庫。大都用來測試web應用,Selenium能夠用來作任何須要和瀏覽器交互的任務。 補充: 底層基於webdriver實現,因此,能夠自動化測試各類瀏覽器,只要對應的瀏覽器實現了webdriver功能(現代瀏覽器,IE是涼涼的)均可以用它來自動調起和測試。 啓動瀏覽器的lancher/driver已經繼承到selenium-webdriver中了:
Nightwatch 英文解釋: End-to-end testing framework written in Node.js and using the Webdriver API. 中文解釋: Node.js調用Webdriver API實現的端到端(e2e)測試框架。 補充: 咱們注意到,它是一個framework而不是一個library。以前介紹到的庫的話,每每要結合其它庫,好比mocha,chai等,而後經過一番折騰結合,才能實現完整的測試功能。 framework雖然也不是說不須要裝任何額外的庫或插件,可是,基礎的東西,它都已經集成到框架中了,它能大大減小你的折騰時間。 同Selenium,它也是基於webdriver實現,因此,能夠也自動化測試各類瀏覽器。 啓動各個瀏覽器只需裝對應瀏覽器的laucher/driver就好:
Geckodriver (Firefox):
Geckodriver is the WebDriver service used to drive the Mozilla Firefox Browser.
$ npm install geckodriver --save-dev
Chromedriver:
Chromedriver is the WebDriver service used to drive the Google Chrome Browser.
$ npm install chromedriver --save-dev
複製代碼
Protractor 英文解釋: E2E test framework for Angular apps. 中文解釋: 爲Angular應用而生的e2e測試框架。