A lightweight, non-opinionated implementation of the WebDriver specification including mobile commands supported by Appium
There are tons of Selenium and WebDriver binding implementations in the Node.js world. Every one of them have an opinionated API and recommended way to use. This binding is the most non-opinionated you will find as it just represents the WebDriver specification and doesn't come with any extra or higher level abstraction. It is lightweight and comes with support for the WebDriver specification and Appiums Mobile JSONWire Protocol.
The following example demonstrates a simple Google Search scenario:
import WebDriver from 'webdriver'
;(async () => {
const client = await WebDriver.newSession({
path: '/',
capabilities: { browserName: 'firefox' }
})
await client.navigateTo('https://www.google.com/ncr')
const searchInput = await client.findElement('css selector', '#lst-ib')
await client.elementSendKeys(searchInput['element-6066-11e4-a52e-4f735466cecf'], 'WebDriver')
const searchBtn = await client.findElement('css selector', 'input[value="Google Search"]')
await client.elementClick(searchBtn['element-6066-11e4-a52e-4f735466cecf'])
console.log(await client.getTitle()) // outputs "WebDriver - Google Search"
await client.deleteSession()
})()
To create a WebDriver session call the newSession
method on the WebDriver
class and pass in your configurations:
import WebDriver from 'webdriver'
const client = await WebDriver.newSession(options)
The following options are available:
Defines the capabilities you want to run in your Selenium session.
Type: Object
Required: true
Level of logging verbosity.
Type: String
Default: info
Options: trace | debug | info | warn | error | silent
Protocol to use when communicating with the Selenium standalone server (or driver).
Type: String
Default: http
Options: http | https
Host of your WebDriver server.
Type: String
Default: localhost
Port your WebDriver server is on.
Type: Number
Default: 4444
Path to WebDriver server.
Type: String
Default: /wd/hub
Shorten url
command calls by setting a base url.
Type: String
Default: null
Timeout for any request to the Selenium server.
Type: Number
Default: 90000
Count of request retries to the Selenium server.
Type: Number
Default: 2