Best JavaScript code snippet using webdriverio-monorepo
getting-started.js
Source:getting-started.js
...156 //get title157 const title = await driver.getTitle()158 console.log(title)159 //-------------------------------160 let originalWindow = await driver.getWindowHandle()161 assert((await driver.getAllWindowHandles()).length === 1)162 await driver163 .findElement(By.linkText('The Equal Justice Initiative'))164 .click()165 await driver.wait(166 async () => (await driver.getAllWindowHandles()).length === 2,167 10000168 )169 let windows = await driver.getAllWindowHandles()170 windows.forEach(async (handle) => {171 if (handle != originalWindow) {172 await driver.switchTo().window(handle)173 }174 })175 await driver.wait(176 until.titleIs('Donate to the Equal Justice Initiative'),177 15000178 )179 //-------------------------------180 //Opens a new tab ans switches to new tab181 let originalWindow = await driver.getWindowHandle()182 console.log('original : ', originalWindow)183 await driver.switchTo().newWindow('tab')184 console.log('new tab : ', await driver.getWindowHandle())185 let windows = await driver.getAllWindowHandles()186 let tab187 windows.forEach((handle) => {188 if (handle != originalWindow) {189 tab = handle190 }191 })192 await driver.get('http://www.google.com')193 //-------------------------------194 //Opens a new window and switches to new window195 await driver.switchTo().newWindow('window')196 console.log('new window : ', await driver.getWindowHandle())197 windows = await driver.getAllWindowHandles()198 let window199 windows.forEach((handle) => {200 if (handle !== originalWindow) {201 window = handle202 }203 })204 await driver.get('http://www.facebook.com')205 //-------------------------------206 setTimeout(async () => {207 console.log('Before closing : ', await driver.getWindowHandle())208 //Close the tab or window209 await driver.close()210 //Switch back to the old tab or window211 await driver.switchTo().window(tab)212 console.log('After Switch : ', await driver.getWindowHandle())213 setTimeout(async () => {214 console.log('Before closing : ', await driver.getWindowHandle())215 await driver.close()216 await driver.switchTo().window(originalWindow)217 console.log('After Switch : ', await driver.getWindowHandle())218 assert((await driver.getAllWindowHandles()).length === 1)219 //quitting the browser at the end of a session220 setTimeout(async () => {221 await driver.quit()222 }, 5000)223 }, 5000)224 }, 5000)225 //-------------------------------226 //-------------------------------227 } catch (err) {228 console.log('There is an error.')229 await driver.quit()230 } finally {231 //await driver.wait(...
switchTo.test.js
Source:switchTo.test.js
1const uuid = require('uuid/v4');2const switchTo = require('../../../../src/core/actions/switchTo');3const logger = require('../../../../src/utils/logger');4const { MESSAGE_TYPE, SWITCH_ERR } = require('../../../../src/constants');5describe('switch command test suite', () => {6 test('switchTo function should return if only single tab is open when "tab" is passed', async () => {7 const state = {8 browser: {9 getWindowHandle: jest.fn(),10 getWindowHandles: jest.fn(),11 },12 };13 state.browser.getWindowHandles.mockResolvedValue([uuid()]);14 state.browser.getWindowHandle.mockResolvedValue(uuid());15 await switchTo(state, { args: { what: 'tab' } });16 expect(state.browser.getWindowHandle).toHaveBeenCalled();17 expect(state.browser.getWindowHandles).toHaveBeenCalled();18 });19 test('switchTo function should switch between tabs when "tab" is passed when multiple tabs are open and current tab is the initial tab', async () => {20 const state = {21 browser: {22 getWindowHandles: jest.fn(),23 getWindowHandle: jest.fn(),24 switchToWindow: jest.fn(),25 },26 };27 const handles = [uuid(), uuid()];28 const currentWindow = handles[0];29 state.browser.getWindowHandles.mockResolvedValue(handles);30 state.browser.getWindowHandle.mockResolvedValue(currentWindow);31 state.browser.switchToWindow.mockResolvedValue(true);32 await switchTo(state, { args: { what: 'tab' } });33 expect(state.browser.getWindowHandle).toHaveBeenCalled();34 expect(state.browser.getWindowHandles).toHaveBeenCalled();35 expect(state.browser.switchToWindow).toHaveBeenCalled();36 });37 test('switchTo function should switch between tabs when "tab" is passed when multiple tabs are open and current tab is the latest tab', async () => {38 const state = {39 browser: {40 getWindowHandles: jest.fn(),41 getWindowHandle: jest.fn(),42 switchToWindow: jest.fn(),43 },44 };45 const handles = [uuid(), uuid()];46 const currentWindow = handles[1];47 state.browser.getWindowHandles.mockResolvedValue(handles);48 state.browser.getWindowHandle.mockResolvedValue(currentWindow);49 state.browser.switchToWindow.mockResolvedValue(true);50 await switchTo(state, { args: { what: 'tab' } });51 expect(state.browser.getWindowHandle).toHaveBeenCalled();52 expect(state.browser.getWindowHandles).toHaveBeenCalled();53 expect(state.browser.switchToWindow).toHaveBeenCalled();54 });55 test('switchTo function should return if only single tab is open when "window" is passed', async () => {56 const state = {57 browser: {58 getWindowHandle: jest.fn(),59 getWindowHandles: jest.fn(),60 },61 };62 state.browser.getWindowHandles.mockResolvedValue([uuid()]);63 state.browser.getWindowHandle.mockResolvedValue(uuid());64 await switchTo(state, { args: { what: 'window' } });65 expect(state.browser.getWindowHandle).toHaveBeenCalled();66 expect(state.browser.getWindowHandles).toHaveBeenCalled();67 });68 test('switchTo function should switch between tabs when "window" is passed when multiple tabs are open and current tab is the initial tab', async () => {69 const state = {70 browser: {71 getWindowHandles: jest.fn(),72 getWindowHandle: jest.fn(),73 switchToWindow: jest.fn(),74 },75 };76 const handles = [uuid(), uuid()];77 const currentWindow = handles[0];78 state.browser.getWindowHandles.mockResolvedValue(handles);79 state.browser.getWindowHandle.mockResolvedValue(currentWindow);80 state.browser.switchToWindow.mockResolvedValue(true);81 await switchTo(state, { args: { what: 'window' } });82 expect(state.browser.getWindowHandle).toHaveBeenCalled();83 expect(state.browser.getWindowHandles).toHaveBeenCalled();84 expect(state.browser.switchToWindow).toHaveBeenCalled();85 });86 test('switchTo function should switch between tabs when "window" is passed when multiple tabs are open and current tab is the latest tab', async () => {87 const state = {88 browser: {89 getWindowHandles: jest.fn(),90 getWindowHandle: jest.fn(),91 switchToWindow: jest.fn(),92 },93 };94 const handles = [uuid(), uuid()];95 const currentWindow = handles[1];96 state.browser.getWindowHandles.mockResolvedValue(handles);97 state.browser.getWindowHandle.mockResolvedValue(currentWindow);98 state.browser.switchToWindow.mockResolvedValue(true);99 await switchTo(state, { args: { what: 'tab' } });100 expect(state.browser.getWindowHandle).toHaveBeenCalled();101 expect(state.browser.getWindowHandles).toHaveBeenCalled();102 expect(state.browser.switchToWindow).toHaveBeenCalled();103 });104 test('switchTo function should emit an error message if an incorrect parameter is passed', async () => {105 const state = {106 browser: {107 getWindowHandles: jest.fn(),108 getWindowHandle: jest.fn(),109 switchToWindow: jest.fn(),110 },111 };112 logger.emitLogs = jest.fn();113 await switchTo(state, { args: { what: 'incorrect' } });114 expect(state.browser.getWindowHandle).not.toHaveBeenCalled();115 expect(state.browser.getWindowHandles).not.toHaveBeenCalled();116 expect(state.browser.switchToWindow).not.toHaveBeenCalled();117 expect(logger.emitLogs).toHaveBeenCalledWith({ message: SWITCH_ERR, type: MESSAGE_TYPE.ERROR });118 });...
recording-syncronizer.spec.js
Source:recording-syncronizer.spec.js
1// Licensed to the Software Freedom Conservancy (SFC) under one2// or more contributor license agreements. See the NOTICE file3// distributed with this work for additional information4// regarding copyright ownership. The SFC licenses this file5// to you under the Apache License, Version 2.0 (the6// "License"); you may not use this file except in compliance7// with the License. You may obtain a copy of the License at8//9// http://www.apache.org/licenses/LICENSE-2.010//11// Unless required by applicable law or agreed to in writing,12// software distributed under the License is distributed on an13// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY14// KIND, either express or implied. See the License for the15// specific language governing permissions and limitations16// under the License.17import createRecorderSyncronizer from '../src/recording-syncronizer'18describe('recording syncronizer', () => {19 it('should sync the current window', async () => {20 const executeAsyncScript = jest.fn()21 const {22 hooks: { onStoreWindowHandle },23 } = createRecorderSyncronizer({24 sessionId: 'default',25 executeAsyncScript,26 })27 await onStoreWindowHandle({ windowHandle: '1', windowHandleName: 'first' })28 expect(executeAsyncScript.mock.calls[0][0]).toMatchSnapshot()29 })30 it('should sync a new window when switching to it', async () => {31 const executeAsyncScript = jest.fn()32 const {33 hooks: { onWindowAppeared, onWindowSwitched },34 } = createRecorderSyncronizer({35 sessionId: 'default',36 executeAsyncScript,37 })38 await onWindowAppeared({ windowHandle: '1', windowHandleName: 'first' })39 await onWindowSwitched({ windowHandle: '1' })40 expect(executeAsyncScript.mock.calls[0][0]).toMatchSnapshot()41 })42 it('should not sync a window if switched to it twice', async () => {43 const executeAsyncScript = jest.fn()44 const {45 hooks: { onWindowAppeared, onWindowSwitched },46 } = createRecorderSyncronizer({47 sessionId: 'default',48 executeAsyncScript,49 })50 await onWindowAppeared({ windowHandle: '1', windowHandleName: 'first' })51 await onWindowSwitched({ windowHandle: '1' })52 await onWindowSwitched({ windowHandle: '1' })53 expect(executeAsyncScript).toHaveBeenCalledTimes(1)54 })55 it('should log if tried to switch to a window that has no handle', async () => {56 const executeAsyncScript = jest.fn()57 const error = jest.fn()58 const {59 hooks: { onWindowSwitched },60 } = createRecorderSyncronizer({61 sessionId: 'default',62 executeAsyncScript,63 logger: { error },64 })65 await onWindowSwitched({ windowHandle: '1' })66 expect(error.mock.calls[0][0]).toMatchSnapshot()67 })68 it('should sync a new window when called if onWindowSwitched was not called for it', async () => {69 const executeAsyncScript = jest.fn()70 const switchToWindow = jest.fn()71 const getWindowHandle = jest.fn()72 const {73 hooks: { onWindowAppeared },74 syncAllPendingWindows,75 } = createRecorderSyncronizer({76 sessionId: 'default',77 executeAsyncScript,78 switchToWindow,79 getWindowHandle,80 })81 await onWindowAppeared({ windowHandle: '1', windowHandleName: 'first' })82 await syncAllPendingWindows()83 expect(getWindowHandle).toHaveBeenCalledTimes(1)84 expect(switchToWindow).toHaveBeenCalledTimes(2)85 expect(executeAsyncScript.mock.calls[0][0]).toMatchSnapshot()86 })87 it('should not sync a new window more than once when called', async () => {88 const executeAsyncScript = jest.fn()89 const switchToWindow = jest.fn()90 const getWindowHandle = jest.fn()91 const {92 hooks: { onWindowAppeared },93 syncAllPendingWindows,94 } = createRecorderSyncronizer({95 sessionId: 'default',96 executeAsyncScript,97 switchToWindow,98 getWindowHandle,99 })100 await onWindowAppeared({ windowHandle: '1', windowHandleName: 'first' })101 await syncAllPendingWindows()102 await syncAllPendingWindows()103 expect(getWindowHandle).toHaveBeenCalledTimes(1)104 expect(switchToWindow).toHaveBeenCalledTimes(2)105 expect(executeAsyncScript).toHaveBeenCalledTimes(1)106 })107 it('should sync one window through hooks and one when asked', async () => {108 const executeAsyncScript = jest.fn()109 const switchToWindow = jest.fn()110 const getWindowHandle = jest.fn()111 const {112 hooks: { onWindowAppeared, onWindowSwitched },113 syncAllPendingWindows,114 } = createRecorderSyncronizer({115 sessionId: 'default',116 executeAsyncScript,117 switchToWindow,118 getWindowHandle,119 })120 await onWindowAppeared({ windowHandle: '1', windowHandleName: 'first' })121 await onWindowSwitched({ windowHandle: '1' })122 expect(executeAsyncScript).toHaveBeenCalledTimes(1)123 await onWindowAppeared({ windowHandle: '2', windowHandleName: 'second' })124 await syncAllPendingWindows()125 expect(executeAsyncScript).toHaveBeenCalledTimes(2)126 })127 it('should sync the active context', async () => {128 const executeAsyncScript = jest.fn()129 const { syncActiveContext } = createRecorderSyncronizer({130 sessionId: 'default',131 executeAsyncScript,132 })133 await syncActiveContext()134 expect(executeAsyncScript.mock.calls[0][0]).toMatchSnapshot()135 })...
footer.spec.js
Source:footer.spec.js
...7 browser.get('/');8 });9 it('s able to share via facebook', function(done) {10 page.fbBtn.click();11 var appWindow = browser.getWindowHandle();12 browser.getAllWindowHandles().then(function (handles) {13 var newWindowHandle = handles[1];14 browser.switchTo(newWindowHandle).window(newWindowHandle).then(function () {15 browser.driver.executeScript('window.focus();');16 browser.ignoreSynchronization = true;17 expect(browser.getCurrentUrl()).toMatch('facebook.com');18 browser.driver.close().then(function () {19 browser.switchTo().window(appWindow);20 done();21 });22 });23 });24 });25 it('s able to share via twitter', function(done) {26 page.twitterBtn.click();27 var appWindow = browser.getWindowHandle();28 browser.getAllWindowHandles().then(function (handles) {29 var newWindowHandle = handles[1];30 browser.switchTo(newWindowHandle).window(newWindowHandle).then(function () {31 browser.driver.executeScript('window.focus();');32 browser.ignoreSynchronization = true;33 expect(page.twitterText.getText()).toBe('Share a link with your followers');34 expect(page.twitterShareText.getText()).toBe('Check this awesome planning poker app ' + config.DOMAIN + "/");35 browser.driver.close().then(function () {36 browser.switchTo().window(appWindow);37 done();38 });39 });40 });41 });42 it('s able to share via linkedin', function(done) {43 page.linkedInBtn.click();44 var appWindow = browser.getWindowHandle();45 browser.getAllWindowHandles().then(function (handles) {46 var newWindowHandle = handles[1];47 browser.switchTo(newWindowHandle).window(newWindowHandle).then(function () {48 browser.driver.executeScript('window.focus();');49 browser.ignoreSynchronization = true;50 expect(browser.getCurrentUrl()).toMatch('linkedin.com');51 browser.driver.close().then(function () {52 browser.switchTo().window(appWindow);53 done();54 });55 });56 });57 });58});
seleniumUtils.js
Source:seleniumUtils.js
...16 const pref = new webdriver.logging.Preferences();17 pref.setLevel( 'browser', webdriver.logging.Level.SEVERE );18 this.driver = await new webdriver.Builder().forBrowser(name).withCapabilities(chromeCapabilities)19 .setLoggingPrefs(pref).build();20 this.openBrowsers["main"] = await this.driver.getWindowHandle();21 this.driver.manage().window().maximize()22 return await this.driver;23 }24 }25 async closeDriver(){26 await this.driver.quit();27 }28 async openNewTab(name, url){29 await this.driver.switchTo().newWindow('tab');30 this.openBrowsers[name] = await this.driver.getWindowHandle();31 await this.driver.get(url);32 }33 async openNewWindow(name, url){34 await this.driver.switchTo().newWindow('window');35 this.openBrowsers[name] = await this.driver.getWindowHandle();36 await this.driver.get(url);37 }38 async switchTo(name){39 await this.driver.switchTo().window(this.openBrowsers[name]);40 }41 async switchToDefaultContent(){42 await this.driver.switchTo().defaultContent();43 }44 async switchToFrame(frameElement){45 await this.driver.switchTo().frame(frameElement);46 }47 async screenshot(){48 return await this.driver.takeScreenshot();49 }...
closeLastOpenedWindow.spec.js
Source:closeLastOpenedWindow.spec.js
1import closeLastOpenedWindow from 'src/support/action/closeLastOpenedWindow';2describe('closeLastOpenedWindow', () => {3 beforeEach(() => {4 global.browser = {5 getWindowHandles: jest.fn(() => [6 'one',7 'two',8 'three',9 ]),10 getWindowHandle: jest.fn(() => 'three'),11 switchToWindow: jest.fn(),12 closeWindow: jest.fn(),13 };14 });15 describe('when focused on the last opened window', () => {16 it('should call closeLastOpenedWindow on the browser', () => {17 closeLastOpenedWindow('');18 expect(global.browser.getWindowHandles).toHaveBeenCalledTimes(1);19 expect(global.browser.switchToWindow).toHaveBeenCalledTimes(0);20 expect(global.browser.closeWindow).toHaveBeenCalledTimes(1);21 });22 });23 describe('when NOT focused on the last opened window', () => {24 beforeEach(() => {25 global.browser.getWindowHandle = jest.fn(() => 'two');26 });27 it('should switch to the last opened window', () => {28 closeLastOpenedWindow('');29 expect(global.browser.switchToWindow).toHaveBeenCalledTimes(2);30 expect(global.browser.switchToWindow).toHaveBeenCalledWith('three');31 expect(global.browser.closeWindow).toHaveBeenCalledTimes(1);32 });33 it('should switch back to the last focused window', () => {34 closeLastOpenedWindow('');35 expect(global.browser.switchToWindow).toHaveBeenCalledTimes(2);36 expect(global.browser.switchToWindow).toHaveBeenCalledWith('two');37 expect(global.browser.closeWindow).toHaveBeenCalledTimes(1);38 });39 });...
window-handlers.js
Source:window-handlers.js
1describe('webdriver.io page', () =>{2 it('should manage new windows',()=>{3 browser.url('https://demoqa.com/automation-practice-switch-windows-2/');4 console.log("Title of the page is: " + browser.getTitle());5 console.log("Browser session id " + browser.getWindowHandle());6 $('#button1').click();7 browser.getWindowHandles();8 console.log("Multiple windows present ? " + browser.getWindowHandles());9 var handles = browser.getWindowHandles();10 //browser.switchToWindow(handles[1]);11 console.log("Browser session id after switch: " + browser.getWindowHandle());12 browser.createWindow("tab"); //Type of window that we are going to create13 browser.pause(3000);14 browser.closeWindow();15 browser.pause(3000);16 //console.log("Window closed");17 //console.log("Browser session id afert closing the window: " + browser.getWindowHandle());18 })...
getWindowHandle.js
Source:getWindowHandle.js
2Object.defineProperty(exports, "__esModule", {3 value: true4});5exports.default = getWindowHandle;6async function getWindowHandle() {7 return this.currentWindowHandle;...
Using AI Code Generation
1var webdriverio = require('webdriverio');2var options = { desiredCapabilities: { browserName: 'chrome' } };3 .remote(options)4 .init()5 .getTitle().then(function(title) {6 console.log('Title was: ' + title);7})8 .getWindowHandle().then(function(handle) {9 console.log('Window handle is: ' + handle);10})11 .end();
Using AI Code Generation
1var webdriverio = require('webdriverio');2var options = { desiredCapabilities: { browserName: 'chrome' } };3var client = webdriverio.remote(options);4 .init()5 .getTitle().then(function(title) {6 console.log('Title was: ' + title);7 })8 .end();
Using AI Code Generation
1describe('webdriver.io page', () => {2 it('should have the right title', () => {3 const title = browser.getTitle()4 console.log(title)5 const handle = browser.getWindowHandle()6 console.log(handle)7 const handles = browser.getWindowHandles()8 console.log(handles)9 browser.pause(5000)10 })11})
Using AI Code Generation
1describe('webdriver.io page', () => {2 it('should have the right title', () => {3 console.log(browser.getWindowHandle())4 })5})6describe('webdriver.io page', () => {7 it('should have the right title', () => {8 console.log(browser.getWindowHandles())9 })10})11describe('webdriver.io page', () => {12 it('should have the right title', () => {13 console.log(browser.getTitle())14 })15})16describe('webdriver.io page', () => {17 it('should have the right title', () => {18 console.log(browser.getUrl())19 })20})21describe('webdriver.io page', () => {22 it('should have the right title', () => {23 console.log(browser.getViewportSize())24 })25})26describe('webdriver.io page', () => {27 it('should have the right title', () => {28 const elem = $('#search_input_react')29 console.log(elem.isDisplayed())30 })31})
Using AI Code Generation
1describe('webdriver.io page', function() {2 it('should have the right title - the fancy generator way', function () {3 browser.windowHandleMaximize();4 var handle = browser.getWindowHandle();5 console.log(handle);6 browser.pause(3000);7 });8});
Using AI Code Generation
1describe('webdriver.io page', () => {2 it('should navigate to webdriver.io page', () => {3 const title = browser.getTitle()4 console.log('Title is: ' + title)5 const url = browser.getUrl()6 console.log('URL is: ' + url)7 const windowHandle = browser.getWindowHandle()8 console.log('Handle is: ' + windowHandle)9 const windowHandles = browser.getWindowHandles()10 console.log('Handles are: ' + windowHandles)11 browser.switchToFrame(0)12 browser.pause(3000)13 })14})
Using AI Code Generation
1describe('webdriver.io page', () => {2 it('should have the right title', () => {3 const title = browser.getTitle()4 console.log("Title is: " + title)5 const windowHandle = browser.getWindowHandle()6 console.log("Current window handle is: " + windowHandle)7 expect(browser).toHaveTitle('WebdriverIO · Next-gen browser and mobile automation test framework for Node.js')8 })9})
Using AI Code Generation
1describe('webdriver.io page', () => {2 it('should get window handle', () => {3 const windowHandle = browser.getWindowHandle();4 console.log(windowHandle);5 });6});
Using AI Code Generation
1describe('webdriver.io page', () => {2 it('should print the current window handle', () => {3 const windowHandle = browser.getWindowHandle()4 console.log(windowHandle)5 })6})7describe('webdriver.io page', () => {8 it('should print the current window handles', () => {9 const windowHandles = browser.getWindowHandles()10 console.log(windowHandles)11 })12})13describe('webdriver.io page', () => {14 it('should switch to a specific window handle and print the title', () => {15 const windowHandle = browser.getWindowHandle()16 browser.switchToWindow(windowHandle)17 const title = browser.getTitle()18 console.log(title)19 })20})21describe('webdriver.io page', () => {22 it('should close the current window and print the title', () => {23 browser.closeWindow()24 const title = browser.getTitle()25 console.log(title)26 })27})28describe('webdriver.io page', () => {29 it('should close a specific window and print the title', () => {30 const windowHandle = browser.getWindowHandle()31 browser.closeWindow(windowHandle)32 const title = browser.getTitle()33 console.log(title)34 })35})36describe('webdriver.io page', () => {
Using AI Code Generation
1const webdriverio = require('webdriverio');2const assert = require('assert');3const options = {4 desiredCapabilities: {5 }6};7(async function () {8 const browser = await webdriverio.remote(options);9 var windowHandle = await browser.getWindowHandle();10 console.log("windowHandle: "+windowHandle);11 await browser.end();12})().catch((e) => console.error(e));
Wondering what could be a next-gen browser and mobile test automation framework that is also simple and concise? Yes, that’s right, it's WebdriverIO. Since the setup is very easy to follow compared to Selenium testing configuration, you can configure the features manually thereby being the center of attraction for automation testing. Therefore the testers adopt WedriverIO to fulfill their needs of browser testing.
Learn to run automation testing with WebdriverIO tutorial. Go from a beginner to a professional automation test expert with LambdaTest WebdriverIO tutorial.
Running Your First Automation Script - Learn the steps involved to execute your first Test Automation Script using WebdriverIO since the setup is very easy to follow and the features can be configured manually.
Selenium Automation With WebdriverIO - Read more about automation testing with WebdriverIO and how it supports both browsers and mobile devices.
Browser Commands For Selenium Testing - Understand more about the barriers faced while working on your Selenium Automation Scripts in WebdriverIO, the ‘browser’ object and how to use them?
Handling Alerts & Overlay In Selenium - Learn different types of alerts faced during automation, how to handle these alerts and pops and also overlay modal in WebdriverIO.
How To Use Selenium Locators? - Understand how Webdriver uses selenium locators in a most unique way since having to choose web elements very carefully for script execution is very important to get stable test results.
Deep Selectors In Selenium WebdriverIO - The most popular automation testing framework that is extensively adopted by all the testers at a global level is WebdriverIO. Learn how you can use Deep Selectors in Selenium WebdriverIO.
Handling Dropdown In Selenium - Learn more about handling dropdowns and how it's important while performing automated browser testing.
Automated Monkey Testing with Selenium & WebdriverIO - Understand how you can leverage the amazing quality of WebdriverIO along with selenium framework to automate monkey testing of your website or web applications.
JavaScript Testing with Selenium and WebdriverIO - Speed up your Javascript testing with Selenium and WebdriverIO.
Cross Browser Testing With WebdriverIO - Learn more with this step-by-step tutorial about WebdriverIO framework and how cross-browser testing is done with WebdriverIO.
Get 100 minutes of automation test minutes FREE!!