- Documentation
- Quick Start Guide
- Selenium Grid Configuration
- Auto Scaling
- Spot Instance Nodes
- Selenium Grid Integration
- Pre Launch API Integration
- Selenium Grid V4 Examples
- Selenium Grid V3 Examples
- Performance Testing
WebdriverIO Selenium Grid Examples
The selenium grid WebdriverIO examples below can quickly be run on a free Gridlastic selenium grid.
The Gridlastic grid hostname, credentials and video url used in these code examples are presented after launching your Gridlastic selenium grid.
Get a free account and launch your Gridlastic selenium grid, then run this code locally and test your grid!
wdio.conf.ts
// STARTING WITH WEBDRIVERIO V9, GRID CREDENTIALS CANNOT BE PASSED IN VIA HOST URL import { Buffer } from 'buffer'; const GRIDLASTIC_GRID_HOSTNAME = ''; \\ LIKE: subdomain-hub.gridlastic.com const GRIDLASTIC_GRID_USERNAME = ''; const GRIDLASTIC_GRID_PASSWORD = ''; const GRIDLASTIC_GRID_HUB_PROXY = ''; // like: your_subdomain-hub.gridlastic.com:8001 global.GRIDLASTIC_GRID_VIDEO_URL = ''; // like: https://s3-us-west-1.amazonaws.com/023a15f2-534d-31e5-f8cc-7ceaf6355377/238a51b7-c526-ceb8-8ffd-1759b612a464/play.html? const gridlastic_grid_credentials = `${GRIDLASTIC_GRID_USERNAME}:${GRIDLASTIC_GRID_PASSWORD}`; const gridlastic_grid_encodedCredentials = Buffer.from(gridlastic_grid_credentials).toString('base64'); export const config: WebdriverIO.Config = { // ... logLevel: 'error', maxInstances: 10, headers: { Authorization: `Basic ${gridlastic_grid_encodedCredentials}` }, protocol: 'https', hostname: GRIDLASTIC_GRID_HOSTNAME, port: 443, path: '/wd/hub', // ... capabilities: [{ browserName: 'chrome', // can be chrome, MicrosoftEdge, firefox browserVersion: 'latest', platformName: 'WIN11', // can be WIN11, WIN10 or LINUX 'gridlastic:options': { video: true // default is false }, webSocketUrl: true, /* proxy: { proxyType: "manual", httpProxy: GRIDLASTIC_GRID_HUB_PROXY, ftpProxy: GRIDLASTIC_GRID_HUB_PROXY, sslProxy: GRIDLASTIC_GRID_HUB_PROXY, noProxy: "none" } */ }], specs: [ './test/specs/**/*.js' ], connectionRetryTimeout: 600000, // 10 minutes max to wait for grid nodes to spin up which can take several minutes. waitforTimeout: 30000, mochaOpts: { ui: 'bdd', timeout: 60000 }, }
example.js
describe('WebdriverIO Example', () => { after(async () => { console.log('Video: ' + GRIDLASTIC_GRID_VIDEO_URL + driver.sessionId); }) it('Check title', async () => { await browser.url('https://www.gridlastic.com/?demo') await browser.maximizeWindow() await expect(browser).toHaveTitle('Selenium grid') await browser.pause(10000); // pause for demo purposes }) /* it('Check that IP is the same as the selenium grid hub IP', async () => { await browser.url('https://www.whatismybrowser.com/') await browser.maximizeWindow() await browser.pause(5000); // pause for demo purposes await browser.scroll(0, 1600) await browser.pause(5000); // pause for demo purposes }) */ })
bidi-geolocation.js
describe('BiDi geolocation example', () => { after(async () => { console.log('Video: ' + GRIDLASTIC_GRID_VIDEO_URL + driver.sessionId); }) it('should find my emulated geo location', async () => { await browser.emulate('geolocation', { // Paris @48.8587895,2.2975715,16z latitude: 48.8587895, longitude: 2.2975715, accuracy: 300 }) await browser.url('https://www.google.com/maps') const btnMyLocation = await browser.$('#mylocation') await btnMyLocation.waitForClickable() await btnMyLocation.click() console.log(await browser.getUrl()) await expect(browser).toHaveUrl( expect.stringContaining('@48.8587895,2.2975715,16z?') ) await browser.maximizeWindow() await browser.pause(10000); // pause for demo purposes }) })
package.json
{ "name": "selenium-grid-tests", "version": "1.0.0", "dependencies": { "assert": "2.1.0", "selenium-webdriver": "4.28.1" }, "devDependencies": { "@wdio/cli": "^9.7.2", "@wdio/local-runner": "^9.7.2", "@wdio/mocha-framework": "^9.7.2", "@wdio/spec-reporter": "^9.6.3", "mocha": "11.0.1" }, "scripts": { "wdio": "wdio run ./wdio.conf.ts" } }
Try our
SELENIUM GRID DEMO