Research
Security News
Threat Actor Exposes Playbook for Exploiting npm to Build Blockchain-Powered Botnets
A threat actor's playbook for exploiting the npm ecosystem was exposed on the dark web, detailing how to build a blockchain-powered botnet.
appium-chromedriver
Advanced tools
The appium-chromedriver npm package is a Node.js wrapper around the Chromedriver binary, which is used to automate Chrome-based browsers for testing purposes. It is primarily used in conjunction with Appium to facilitate automated testing of web applications on mobile devices.
Install Chromedriver
This feature allows you to install the Chromedriver binary required for automating Chrome-based browsers. The code sample demonstrates how to set up Chromedriver using the appium-chromedriver package.
const Chromedriver = require('appium-chromedriver');
const driver = new Chromedriver();
driver.setupChromedriver().then(() => console.log('Chromedriver installed successfully'));
Start Chromedriver
This feature allows you to start the Chromedriver server. The code sample demonstrates how to start Chromedriver using the appium-chromedriver package.
const Chromedriver = require('appium-chromedriver');
const driver = new Chromedriver();
driver.start().then(() => console.log('Chromedriver started successfully'));
Stop Chromedriver
This feature allows you to stop the Chromedriver server. The code sample demonstrates how to stop Chromedriver using the appium-chromedriver package.
const Chromedriver = require('appium-chromedriver');
const driver = new Chromedriver();
driver.stop().then(() => console.log('Chromedriver stopped successfully'));
Get Chromedriver Status
This feature allows you to get the status of the Chromedriver server. The code sample demonstrates how to retrieve the status using the appium-chromedriver package.
const Chromedriver = require('appium-chromedriver');
const driver = new Chromedriver();
driver.status().then(status => console.log('Chromedriver status:', status));
The selenium-webdriver package is a popular tool for automating web browsers. It provides a high-level API for controlling browsers and is widely used for web application testing. Unlike appium-chromedriver, which is focused on mobile automation, selenium-webdriver supports a broader range of browsers and platforms.
WebdriverIO is a powerful automation framework for web and mobile applications. It provides a rich set of features for browser automation and integrates well with various testing frameworks. Compared to appium-chromedriver, WebdriverIO offers more extensive support for different browsers and testing environments.
Nightwatch is an end-to-end testing framework for web applications and websites. It uses the W3C WebDriver API to perform browser automation and provides a simple syntax for writing tests. While appium-chromedriver is focused on mobile automation, Nightwatch is designed for web application testing and offers built-in support for various browsers.
Node.js wrapper around Chromedriver and Microsoft Edge WebDriver. The Microsoft Edge WebDriver support is since v5.4.0. This wrapper is not used directly in Appium, but rather by various Android drivers to automate Chrome/Chromium-based browsers and web views using Hybrid Mode approach. Check the corresponding driver tutorials to get more details on it.
Note
This package is intended to be used as a helper module for Appium drivers such as UiAutomator2 and appium-chromium-driver. It was not created for standalone usage. Please ensure you know what you are doing before using this package directly.
Note
This package can work with Microsoft Edge WebDriver as well, but the support is limited. For example, automatic downloads do not work for Microsoft Edge WebDriver.
By default, upon installation the package downloads the most recent known Chromedriver version from
Chromedriver CDN server: http://chromedriver.storage.googleapis.com.
If, for some reason, you want to install the package without downloading the Chromedriver
binary set the APPIUM_SKIP_CHROMEDRIVER_INSTALL
environment variable:
APPIUM_SKIP_CHROMEDRIVER_INSTALL=1 npm install appium-chromedriver
By default, the package uses the most recent known Chromedriver version. The full list of known Chromedriver versions and their corresponding supported Chrome version could be found in mapping.json
To download a custom version of Chromedriver, please set CHROMEDRIVER_VERSION
environment variable:
CHROMEDRIVER_VERSION=107.0.5304.62 npm install appium-chromedriver
If you want Chromedriver to be downloaded from another CDN, which differs from the
default one https://chromedriver.storage.googleapis.com, then either set the npm config property chromedriver_cdnurl
:
npm install appium-chromedriver --chromedriver_cdnurl=http://npm.taobao.org/mirrors/chromedriver
The property could also be added into your .npmrc
file.
chromedriver_cdnurl=http://npm.taobao.org/mirrors/chromedriver
Or set the new URL to CHROMEDRIVER_CDNURL
environment variable:
CHROMEDRIVER_CDNURL=http://npm.taobao.org/mirrors/chromedriver npm install appium-chromedriver
If you want automatic chromedrivers download feature to work with a custom CDN URL then make sure
the server returns a proper list of stored drivers in response to requests having
Accept: application/xml
header. An example XML could be retrieved from the original URL using
curl -H 'Accept: application/xml' https://chromedriver.storage.googleapis.com
command.
Since version 5.6 the second environment variable has been added: CHROMELABS_URL
. By default, it points
to https://googlechromelabs.github.io, and is expected to contain the actual prefix of
Chrome for Testing availability
JSON API. This API allows retrieval of chromedrivers whose versions are greater than 114.
Similarly to the above it could be also defined in the .npmrc file:
chromelabs_url=https://googlechromelabs.github.io
You may also want to skip checking for older Chromedriver versions by providing an
empty value to the CHROMEDRIVER_CDNURL
variable.
import Chromedriver from 'appium-chromedriver';
// 'sync'-like await/Promise usage
async function runSession() {
let driver = new Chromedriver();
const desiredCaps = {browserName: 'chrome'};
await driver.start(desiredCaps);
let status = await driver.sendCommand('/status', 'GET');
await driver.stop();
}
// EventEmitter usage
function runSession2() {
let driver = new Chromedriver();
const desiredCaps = {browserName: 'chrome'};
driver.start(desiredCaps);
driver.on(Chromedriver.EVENT_CHANGED, function (msg) {
if (msg.state === Chromedriver.STATE_ONLINE) {
driver.sendCommand('/status', 'GET').then(function (status) {
driver.stop();
});
}
});
driver.on(Chromedriver.EVENT_ERROR, function (err) {
// :-(
});
}
Here's what the Chromedriver state machine looks like:
Here are the events you can listen for:
Chromedriver.EVENT_ERROR
: gives you an error objectChromedriver.EVENT_CHANGED
: gives you a state change object, with a state
property that can be one of:
Chromedriver.STATE_STOPPED
Chromedriver.STATE_STARTING
Chromedriver.STATE_ONLINE
Chromedriver.STATE_STOPPING
Chromedriver.STATE_RESTARTING
npm run build
npm run lint
npm run test
npm run e2e-test
FAQs
Node.js wrapper around chromedriver.
The npm package appium-chromedriver receives a total of 303,967 weekly downloads. As such, appium-chromedriver popularity was classified as popular.
We found that appium-chromedriver demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 7 open source maintainers collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Research
Security News
A threat actor's playbook for exploiting the npm ecosystem was exposed on the dark web, detailing how to build a blockchain-powered botnet.
Security News
NVD’s backlog surpasses 20,000 CVEs as analysis slows and NIST announces new system updates to address ongoing delays.
Security News
Research
A malicious npm package disguised as a WhatsApp client is exploiting authentication flows with a remote kill switch to exfiltrate data and destroy files.