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测试框架。