Best Headless Browser Selenium
A list of (almost) all headless web browsers in existence – GitHub
A list of (almost) all headless web browsers in existence
A web browser without a graphical user interface, controlled programmatically. Used for automation, testing, and other purposes.
Browser engines
These browser engines fully render web pages or run JavaScript in a virtual DOM
Name
About
Supported Languages
License
Chromium Embedded Framework
CEF is a open source project based on the Google Chromium project.
JavaScript
BSD
Erik
Headless browser on top of Kanna and WebKit.
Swift
MIT
jBrowserDriver
A Selenium-compatible headless browser which is written in pure Java. WebKit-based. Works with any of the Selenium Server bindings.
Java
Apache License v2. 0
PhantomJS
[Unmaintained] PhantomJS is a headless WebKit scriptable with a JavaScript API. It has fast and native support for various web standards: DOM handling, CSS selector, JSON, Canvas, and SVG.
JavaScript, Python, Ruby, Java, C#, Haskell, Objective-C, Perl, PHP, R(via Selenium)
BSD 3-Clause
Splash
Splash is a javascript rendering service with an HTTP API. It’s a lightweight browser with an HTTP API, implemented in Python using Twisted and QT.
Any
Surf
Surf is an open source project that implements a virtual web browser that can be controlled programatically
Go
Multi drivers
These libraries can control multiple browser engines (typically using Selenium)
CasperJS
[Unmaintained] CasperJS is an open source navigation scripting & testing utility written in Javascript for the PhantomJS WebKit headless browser and SlimerJS (Gecko).
Geb
Geb is a Groovy interface to WebDriver.
Groovy
Apache
Playwright
Playwright is a Node library to automate the Chromium, WebKit and Firefox browsers with a single API
TypeScript
PlaywrightSharp
PlaywrightSharp is a library to automate Chromium, Firefox and WebKit browsers with a single API.
Selenium
Selenium is a suite of tools to automate web browsers across many platforms.
JavaScript, Python, Ruby, Java, C#, Haskell, Objective-C, Perl, PHP, R
Splinter
Splinter is an open source tool for testing web applications using Python. It lets you automate browser actions, such as visiting URLs and interacting with their items.
Python
–
SST
SST (selenium-simple-test) is a web test framework that uses Python to generate functional browser-based tests.
Watir
The most elegant way to use Selenium WebDriver with Ruby.
Ruby
PhantomJS drivers
These libraries control PhantomJS
Ghostbuster
Automated browser testing via, with all of the pain taken out! That means you get a real browser, with a real DOM, and can do real testing!
Not specified
jedi-crawler
Lightsabing Node/PhantomJS crawler; scrape dynamic content: without the hassle
Lotte
Lotte is a headless, automated testing framework built on top of PhantomJS and inspired by Ghostbuster.
phantompy
Phantompy is a headless WebKit engine with powerful pythonic api build on top of Qt5 Webkit
LGPL-2. 1
X-RAY
Supports strings, arrays, arrays of objects, nested object structures, selector API, pagination, crawler, concurrency, throttles, delays, timeouts, and pluggable drivers (PhantomJS, HTTP)
Horseman
Promise based module for PhantomJS. Features chainable API, understandable control-flow, support for multiple tabs, and built-in jQuery.
Chromium drivers
These libraries control Chromium
Awesomium
Chromium-based headless browser engine
C++,
Free/Commercial
Headless Chromium
Chromium feature activated with the –headlesss flag, currently availible in the nightly build of Chromium, not yet released
C++
Opensource
Puppeteer
Headless Chrome Node API from the Chrome DevTools team
PuppeteerSharp
PuppeteerSharp is a port of the official Headless Chrome Puppeteer API
chrome-remote-interface
Chrome Debugging Protocol interface for
Chromy
Features chainable API, mobile emulation, fundamental API such as javascript evaluation.
chromedp
A faster, simpler way to drive browsers (Chrome, Edge, Safari, Android, etc) without external dependencies (ie, Selenium, PhantomJS, etc) using the Chrome Debugging Protocol.
Chromeless
Chrome automation made simple. Runs locally or headless on AWS Lambda.
Chrome PHP
PHP API to drive Chromium or Google Chrome via the Chrome Devtools Protocole.
PHP
Fair
Wendigo
Test-oriented browser automation library using Puppeteer.
GPL-3. 0
cdp4j
A web-automation library for Java. It can be used for automating the use of web pages and for testing web pages. It use Google Chrome DevTools Protocol to automate Chrome/Chromium based browsers.
cdp4j Commercial License
Pyppeteer
Python port of puppeteer JavaScript (headless) chrome/chromium browser automation library
Headless Chrome
A high-level API to control headless Chrome or Chromium over the DevTools Protocol.
Rust
None
Webkit drivers
These drivers control an in-process instance of Webkit
Browserjet
Runs a custom build of webkit, controlled by interface.
is a webkit web client written in python.
headless_browser
Headless browser based on WebKit written in C++.
Not Specified
Jabba-Webkit
Jabba’s headless webkit browser for scraping AJAX-powered webpages.
Jasmine-Headless-Webkit
jasmine-headless-webkit uses the QtWebKit widget to run your specs without needing to render a pixel.
Python, JavaScript, Ruby
Free
Python-Webkit
Python-Webkit is a python extension to Webkit to add full, complete access to Webkit’s DOM
GNU
Spynner
Programmatic web browsing module with AJAX support for Python
Webloop
Scriptable, headless WebKit with a Go API.
wkhtmltopdf wkhtmltox wkhtmltoimage
Command line tool rendering HTML into PDF and other image formats.
shell, C
LGPLv3
WKZombie
Functional headless browser (with JSON support) for iOS using WebKit and hpple/libxml2.
Other drivers
These libraries control lesser known browsers or OS-provided web libraries
Cypress
Cypress supports end-to-end, integration and unit tests and makes debugging tests simple. Default engine is headless Electron.
Nightmare
Nightmare is a high-level browser automation library built as an easier alternative to PhantomJS. It runs on the Electron engine.
grope
A RubyCocoa interface to the macOS WebKit Framework
RubyCocoa
SlimerJS
SlimerJS is similar to PhantomJs, except that it runs Gecko, the browser engine of Mozilla Firefox, instead of Webkit (And it is not yet truly headless).
Mozilla 2. 0
SpecterJS
A scriptable headless Internet Explorer port of PhantomJS.
trifleJS
A headless Internet Explorer browser using the WebBrowser Class with a Javascript API running on the V8 engine.
Fake Browser Engine
These libraries are typically naive or HTML-only browsers
AngleSharp
Http Parsing Library
Guillotine
A headless browser, written in C#
LGPL-3. 0
benv
Stub a browser environment in and headlessly test your client-side code.
Headless Ruby browser on top of Nokogiri and TheRubyRacer
BrowserKit
BrowserKit simulates the behavior of a web browser.
DamonJS
Bot navigating urls and doing tasks.
Headless
Headless browser support for fast web acceptance testing in
HeadlessBrowser
A very miniature headless browser, for testing the DOM on
HtmlUnit
HtmlUnit is a “GUI-Less browser for Java programs”.
Jaunt
Java Web Scraping & Automation API
Apache (monthly edition)
Jauntium
Free Java library that allows you to easily automate Chrome, Firefox, Safari, Edge, IE, and other modern web browers.
JSDom
A JavaScript implementation of the WHATWG DOM and HTML standards, for use with
MechanicalSoup
A Python library for automating interaction with websites.
mechanize
Stateful programmatic web browsing.
BSD 3-Clause, ZPL 2. 1
node-as-browser
Create a browser-like environment within
RoboBrowser
A simple, Pythonic library for browsing the web without a standalone web browser.
SimpleBrowser
A flexible and intuitive web browser engine designed for automation tasks. Built on the 4 framework.
stanislaw
Naive, mechanize-like HTML parser/form driver.
twill
Twill is a simple language that interacts with basic HTML pages (no JavaScript support).
WeasyPrint
WeasyPrint is a visual rendering engine for HTML and CSS that can export to PDF. It aims to support web standards for printing.
WWW::Mechanize
Headless browser for Perl with many plugins and extensions, notably Test::WWW:Mechanize for testing
Perl
Perl 5
Xidel (Internet Tools)
An XQuery-based cli web scraper for static X/HTML pages and JSON-APIs.
FreePascal, XQuery
GPL-2
is a lightweight framework for testing client-side JavaScript code in a simulated environment. No browser required.
Runs in a browser
DalekJS
[unmaintained and recommend TestCafé] Automated cross browser testing with JavaScript.
TestCafé
Automated browser testing for the modern web development stack.
Sahi
Sahi is a cross-browser automation/testing tool with the facility to record and playback scripts.
JavaScript, Java, Ruby, PHP
Apache / Commercial
WatiN
Web Application Testing In
Apache 2. 0
Misc tools
browser-launcher
Detect and launch browser versions, headlessly or otherwise
Headless Recorder
Chrome extension that records your browser interactions and generates a Playwright or Puppeteer script
MIT
Why Should I Run My Selenium Tests in Headless? – SmartBear
Headless testing is greatly underutilized – here are three quick ways it can increase performance
Selenium has grown to be one of the most popular automation tools available today. It automates many tasks needed for online testing, including checking titles, navigating pages, clicking links, and much more. Many developers already use the full set of capabilities Selenium offers, but few know about running their tests in headless browsers. And even fewer actually deploy this approach in their daily testing. With headless testing you can increase your testing performance to an all-time high.
What is Headless testing?
Headless testing is simply running your Selenium tests using a headless browser. It operates as your typical browser would, but without a user interface, making it excellent for automated testing.
How does Headless testing benefit developers?
There are several benefits, actually. They can create new testing opportunities, as well as accelerate tests you’re already running.
Benefits include:
Greater testing reach
Improved speed and performance
Multitasking
When running Selenium tests, you typically need a machine that supports the graphics of the web browser that you’re testing on. With headless testing we get rid of this need and open up a whole new set of devices to test on. Ex. Servers, docker containers, etc.
Selenium tests can take a while to complete, due to elements on a page that the browser needs to load. Headless testing gets rid of this load time, allowing you to cut your testing times significantly. In our tests with headless testing, we’ve seen a 30% reduction of test execution times. And you can use other techniques, like running more tests in parallel, to amplify that benefit.
Running normal Selenium tests take up your screen time, keeping you from being able to accomplish anything else on that device. With the UI disabled, headless testing lets you continue to use your computer while the tests execute in the background.
In our conversations with customers, we’ve found that headless testing has let developers experience all of these benefits – and many more!
How have you used headless testing to improve your processes? And where do you see opportunities to take advantage of them? Respond in the comments!
To help you get started Headless testing with CrossBrowserTesting, visit our help page: Headless Testing Documentation
Does Selenium support headless browser testing? – Tutorialspoint
Yes, Selenium supports headless browser testing. This can be done with the help of the HTMLUnitDriver. It is the fastest webdriver among other browser drivers and is platform Selenium 2. 53 version, HTMLUnitDriver jar has to be added explicitly within the project. To add the dependency, follow the steps as listed below −Navigate to the link − on the link highlighted in the below on the project and choose Build path. Then click on Configure Build to Java Build Path, then select Libraries. Click on Add External JARs. Then browse and add the HTMLUnitDriver have to add to the project. ExampleCode;
import;
public class HeadlessMode{
public static void main(String[] args) {
//HtmlUnitDriver initialization
HtmlUnitDriver driver = new HtmlUnitDriver();
(“);
// wait of 5 seconds
(). timeouts(). implicitlyWait(5, CONDS);
(“Page title: ” + tTitle());}}OutputAlso, there will be no browser displayed as execution goes on.
Published on 28-Dec-2020 13:03:04
Related Questions & AnswersDoes Selenium support Safari browser?
Selenium testing without browser.
Browser Plugin Testing With Selenium.
Does cypress support api automation testing also?
Selenium and Headless Environment.
Python class browser support
How does selenium interact with the Web browser?
browser support with HTML
Downloading with chrome headless and selenium.
Does Selenium RC has separate drivers for each browser?
How does selenium webdriver upload files to the browser?
Does Python support polymorphism?
How to connect to Chromium Headless using Selenium?
Does MySQL support table inheritance?
Does Python support multiple inheritance?
Frequently Asked Questions about best headless browser selenium
Can Selenium work headless?
Headless testing is simply running your Selenium tests using a headless browser. It operates as your typical browser would, but without a user interface, making it excellent for automated testing.Oct 8, 2019
Does Selenium support headless browser testing?
Yes, Selenium supports headless browser testing. This can be done with the help of the HTMLUnitDriver. It is the fastest webdriver among other browser drivers and is platform independent.Dec 28, 2020
What are the best headless browsers for testing?
6 Popular Headless Browsers for Web TestingFirefox headless mode.Headless Chrome.PhantomJS.Zombie.js.HtmlUnit.Splash.Feb 22, 2018