When comparing Selenium vs NW.js (w/xvfb), the Slant community recommends NW.js (w/xvfb) for most people. In the question“What are the best headless browsers for testing?” NW.js (w/xvfb) is ranked 3rd while Selenium is ranked 6th. The most important reason people chose NW.js (w/xvfb) is:
The integration of Node with the DOM in NW.js opens up a number of new options in how your headless testing workflow can be facilitated. The distinct separation of JavaScript contexts, the introduction of a separate node context, and the ability to cross communicate, offers a lot of power and flexibility.
Specs
Ranked in these QuestionsQuestion Ranking
Pros
![Prasant Das](https://lh3.googleusercontent.com/-XdUIqdMkCWA/AAAAAAAAAAI/AAAAAAAAAAA/4252rscbv5M/photo.jpg?sz=50)
Pro Actively supported
The open source community behind Selenium has a very large & engaged developer base. This ensures a stable support channel for the tool. In addition, various companies also provide support for Selenium. This active and multi-channel support provides a much more lucrative option for developers looking to implement Selenium in their workflow.
Pro Cross-browser
Supports many browsers and a solid platform for adding future browsers to selenium (WebDriver)
Pro Cross-platform
Selenium is based on Java and can be run on Windows, Mac, Linux, Unix, etc.
Pro Ability to imitate a real user using the application
Testing is analogous to a human being using the web application which is not possible with a solution which runs headless and claims to run faster than Selenium.
![Prasant Das](https://lh3.googleusercontent.com/-XdUIqdMkCWA/AAAAAAAAAAI/AAAAAAAAAAA/4252rscbv5M/photo.jpg?sz=50)
Pro Integrates with any CI tool
Selenium, with its ability to interact with different testing frameworks, like NUnit or xUnit, makes it easy to get Selenium working with practically any Continuous Integration services.
Pro Uses an approved WC3 standard - WebDriver
The WebDriver protocol is standardized by the World Wide Web Consortium which makes it easy for third-parties to get involved and contribute to Selenium.
WebDriver has been the foundation of many additional automation projects besides core selenium and has become the de-facto standard for UI automation.
Pro You can use the same IDE you use for coding to debug
Pro Integrates well with existing testing frameworks
![Prasant Das](https://lh3.googleusercontent.com/-XdUIqdMkCWA/AAAAAAAAAAI/AAAAAAAAAAA/4252rscbv5M/photo.jpg?sz=50)
Pro Support for many languages
Selenium supports a variety of languages including Java, Python, PHP, C#, Ruby and JavaScript ensuring that the tool is easily accessible to a wide variety of developers.
Pro Use the very minimum amount of code required to run
Selenium tries to inject into the page only the bare minimum of code needed to run the tests.
Pro Easy to set preconditions for the tests
![Stoney Meyerhoeffer](https://lh6.googleusercontent.com/-sVjI-s_miu4/AAAAAAAAAAI/AAAAAAAABiE/kRStikf4UWY/photo.jpg?sz=50)
Pro Node integration
The integration of Node with the DOM in NW.js opens up a number of new options in how your headless testing workflow can be facilitated.
The distinct separation of JavaScript contexts, the introduction of a separate node context, and the ability to cross communicate, offers a lot of power and flexibility.
![Stoney Meyerhoeffer](https://lh6.googleusercontent.com/-sVjI-s_miu4/AAAAAAAAAAI/AAAAAAAABiE/kRStikf4UWY/photo.jpg?sz=50)
Pro NaCl support/integration
Access to the Native Client offers up more options in implementing your testing workflow.
Cons
Con Requires installation of drivers
Con The IDE for recording isn't too powerful
Con Issues with locators
Locators that support common attributes like: name
, id
, XPATH
, javascriptDOM
, etc. have to be found through firebugs.
![Stoney Meyerhoeffer](https://lh6.googleusercontent.com/-sVjI-s_miu4/AAAAAAAAAAI/AAAAAAAABiE/kRStikf4UWY/photo.jpg?sz=50)
Con xvfb Requirement (for now)
Headless is on the NW.js roadmap, but for now xvfb is necessary to get going. The community has done the work and you can find the details here.
![Vetted.ai illustration](/images/ai/vetted-illustration.png)