Best JavaScript code snippet using webdriverio-monorepo
takeScreenshot.spec.js
Source:takeScreenshot.spec.js
1jest.mock("fs");2jest.mock("../../src/stores/configStore");3jest.mock("../../src/worker/services/appiumService");4const fs = require("fs");5const { appiumService } = require("../../src/worker/services/appiumService");6const { createFindElementMock } = require("../appiumServiceMocks");7const { setPlatform, setConfig } = require("../helpers");8const { AppiumError, ElementNotFoundError, ElementActionError } = require("../../src/worker/errors");9const { element, by } = require("../../main");10beforeEach(() => {11 setPlatform("iOS");12 setConfig({ findInterval: 200, findTimeout: 1000 });13});14afterEach(() => {15 jest.resetAllMocks();16 jest.restoreAllMocks();17});18it("returns a buffer containing the result of 'takeScreenshot' on the Appium Service", async () => {19 const ref = createFindElementMock();20 const screenshot = "dGVzdA==";21 jest.spyOn(appiumService, "findElement").mockResolvedValue(ref);22 jest.spyOn(appiumService, "takeElementScreenshot").mockResolvedValue(screenshot);23 const result = await element(by.label("list-item")).takeScreenshot();24 expect(result).toBeInstanceOf(Buffer);25 expect(result.toString("base64")).toEqual(screenshot);26 expect(appiumService.findElement).toHaveBeenCalledTimes(1);27 expect(appiumService.takeElementScreenshot).toHaveBeenCalledTimes(1);28});29it("stores the screenshot on disk if a 'filePath' is configured", async () => {30 const ref = createFindElementMock();31 const filePath = "some/path";32 jest.spyOn(appiumService, "findElement").mockResolvedValue(ref);33 jest.spyOn(appiumService, "takeElementScreenshot").mockResolvedValue("dGVzdA==");34 jest.spyOn(fs, "writeFile").mockImplementation((path, data, cb) => cb());35 const buffer = await element(by.label("list-item")).takeScreenshot({ filePath });36 expect(fs.writeFile).toHaveBeenCalledWith(filePath, buffer, expect.any(Function));37});38it("throws an ElementNotFoundError if the element isn't found", async () => {39 const error = new AppiumError("Request error.", 7);40 jest.spyOn(appiumService, "findElement").mockRejectedValue(error);41 jest.spyOn(appiumService, "takeElementScreenshot").mockResolvedValue("dGVzdA==");42 expect.assertions(4);43 try {44 await element(by.label("list-item")).takeScreenshot();45 } catch (err) {46 expect(err).toBeInstanceOf(ElementNotFoundError);47 expect(err).toHaveProperty("message", `Failed to find element by label matching "list-item".`);48 }49 expect(appiumService.findElement).toHaveBeenCalled();50 expect(appiumService.takeElementScreenshot).toHaveBeenCalledTimes(0);51});52it("throws an ElementActionError for Appium request errors", async () => {53 const ref = createFindElementMock();54 const error = new AppiumError("Request error.", 3);55 jest.spyOn(appiumService, "findElement").mockResolvedValue(ref);56 jest.spyOn(appiumService, "takeElementScreenshot").mockRejectedValue(error);57 expect.assertions(3);58 try {59 await element(by.label("list-item")).takeScreenshot();60 } catch (err) {61 expect(err).toBeInstanceOf(ElementActionError);62 expect(err).toHaveProperty("message", "Failed to take element screenshot.");63 }64 expect(appiumService.takeElementScreenshot).toHaveBeenCalledTimes(1);65});66it("throws an ElementActionError if it is unable to store on disk when a 'filePath' is configured", async () => {67 const ref = createFindElementMock();68 const error = new Error("File system error.");69 jest.spyOn(appiumService, "findElement").mockResolvedValue(ref);70 jest.spyOn(appiumService, "takeElementScreenshot").mockResolvedValue("dGVzdA==");71 jest.spyOn(fs, "writeFile").mockImplementation((path, data, cb) => cb(error));72 expect.assertions(4);73 try {74 await element(by.label("list-item")).takeScreenshot({ filePath: "some/path" });75 } catch (err) {76 expect(err).toBeInstanceOf(ElementActionError);77 expect(err).toHaveProperty("message", "Failed to store element screenshot on disk.");78 }79 expect(appiumService.takeElementScreenshot).toHaveBeenCalledTimes(1);80 expect(fs.writeFile).toHaveBeenCalledTimes(1);81});82it("propagates errors from further up the chain", async () => {83 const ref = createFindElementMock();84 const tapError = new AppiumError("Request error.", 3);85 jest.spyOn(appiumService, "findElement").mockResolvedValue(ref);86 jest.spyOn(appiumService, "tapElement").mockRejectedValue(tapError);87 jest.spyOn(appiumService, "takeElementScreenshot").mockResolvedValue("dGVzdA==");88 expect.assertions(5);89 try {90 await element(by.label("list-item"))91 .tap()92 .takeScreenshot();93 } catch (err) {94 expect(err).toBeInstanceOf(ElementActionError);95 expect(err).toHaveProperty("message", "Failed to tap element.");96 }97 expect(appiumService.findElement).toHaveBeenCalledTimes(1);98 expect(appiumService.tapElement).toHaveBeenCalledTimes(1);99 expect(appiumService.takeElementScreenshot).toHaveBeenCalledTimes(0);100});101it("propagates other types of errors", async () => {102 const ref = createFindElementMock();103 const error = new Error("Something went wrong.");104 jest.spyOn(appiumService, "findElement").mockResolvedValue(ref);105 jest.spyOn(appiumService, "takeElementScreenshot").mockRejectedValue(error);106 expect.assertions(3);107 try {108 await element(by.label("list-item")).takeScreenshot();109 } catch (err) {110 expect(err).toBeInstanceOf(error.constructor);111 expect(err).toHaveProperty("message", error.message);112 }113 expect(appiumService.takeElementScreenshot).toHaveBeenCalledTimes(1);...
take-element-screenshot.js
Source:take-element-screenshot.js
...17 await t.maximizeWindow();18 })19 .afterEach(t => restoreWindowState(t));20test('Incorrect action selector argument', async t => {21 await t.takeElementScreenshot(1, 'custom/' + t.ctx.parsedUA.family + '.png');22});23test('Incorrect action path argument', async t => {24 await t.takeElementScreenshot('table', 1);25});26test('Invalid dimensions', async t => {27 await t.takeElementScreenshot('table', 'custom/' + t.ctx.parsedUA.family + '.png', { crop: { left: -10, right: -50 } });28});29test('Invisible element', async t => {30 await t31 .click('#hide')32 .takeElementScreenshot('table', 'custom/' + t.ctx.parsedUA.family + '.png');33});34test('Non-existent element', async t => {35 await t36 .click('#remove')37 .takeElementScreenshot('table', 'custom/' + t.ctx.parsedUA.family + '.png');38});39test('Invalid scroll target', async t => {40 await t.takeElementScreenshot('table', 'custom/' + t.ctx.parsedUA.family + '.png', { scrollTargetX: -2000, scrollTargetY: -3000 });41});42test('Element', async t => {43 await enableScrollWatcher();44 await t45 .takeElementScreenshot('table', 'custom/' + t.ctx.parsedUA.family + '.png')46 .expect(getInternalScrollEventsCount()).gt(0)47 .expect(checkWindowScroll()).notOk();48});49test('Element with margins', async t => {50 await t.takeElementScreenshot('table', 'custom/' + t.ctx.parsedUA.family + '.png', { includeMargins: true });51});52test('Default crop', async t => {53 await t.takeElementScreenshot('table', 'custom/' + t.ctx.parsedUA.family + '.png', { crop: { right: 50, bottom: 50 } });54});55test('Top-left', async t => {56 await t.takeElementScreenshot('table', 'custom/' + t.ctx.parsedUA.family + '.png', { crop: { left: 0, top: 0, right: 50, bottom: 50 } });57});58test('Top-right', async t => {59 await t.takeElementScreenshot('table', 'custom/' + t.ctx.parsedUA.family + '.png', { crop: { left: -50, top: 0, bottom: 50 } });60});61test('Bottom-left', async t => {62 await t.takeElementScreenshot('table', 'custom/' + t.ctx.parsedUA.family + '.png', { crop: { left: 0, top: -50, right: -50 } });63});64test('Bottom-right', async t => {65 await t.takeElementScreenshot('table', 'custom/' + t.ctx.parsedUA.family + '.png', { crop: { left: 50, top: -50 } });66});67test68 .page('../pages/same-domain-iframe.html')69 ('Same-domain iframe', async t => {70 await t71 .switchToIframe('iframe')72 .takeElementScreenshot('table', 'custom/' + t.ctx.parsedUA.family + '.png');73 });74test75 .page('../pages/nested-iframe.html')76 ('Nested iframes', async t => {77 await t78 .switchToIframe('iframe')79 .switchToIframe('iframe')80 .takeElementScreenshot('table', 'custom/' + t.ctx.parsedUA.family + '.png');81 });82test83 .page('../pages/nested-iframe.html')84 ('Rescroll parents', async t => {85 await t86 .switchToIframe('iframe')87 .switchToIframe('iframe')88 .takeElementScreenshot('table', 'custom/' + t.ctx.parsedUA.family + '.png')89 .switchToMainWindow()90 .expect(getInternalScrollEventsCount()).eql(1)91 .switchToIframe('iframe')92 .expect(getInternalScrollEventsCount()).eql(1)93 .switchToIframe('iframe')94 .expect(getInternalScrollEventsCount()).eql(1);95 });96test97 .page('../pages/cross-domain-iframe.html')98 ('Cross-domain iframe', async t => {99 await t100 .switchToIframe('iframe')101 .takeElementScreenshot('table', 'custom/' + t.ctx.parsedUA.family + '.png');102 });103test('Scroll target', async t => {104 await t.takeElementScreenshot('body', 'custom/' + t.ctx.parsedUA.family + '.png', { scrollTargetX: 2000, scrollTargetY: 3000 });105});106test('Negative scroll target', async t => {107 await t.takeElementScreenshot('body', 'custom/' + t.ctx.parsedUA.family + '.png', { scrollTargetX: -2000, scrollTargetY: -3000 });108});109test110 .page('../pages/element-bottom-right.html')111 (`Bottom-right element`, async t => {112 await t.takeElementScreenshot('table', 'custom/' + t.ctx.parsedUA.family + '.png');...
module_ProductList.js
Source:module_ProductList.js
...27 .click(page.lnk_Dresses)28 //Get total count of elements in Results Area29 counter = await Selector('#center_column > ul > li').count;30 await t31 .takeElementScreenshot('#center_column > ul')32 //Validating the Total Count is 533 .expect(counter).eql(constants.int_expect005);34 for(forCounter = 1; forCounter <= constants.int_expect005; forCounter++)35 {36 itemDescription = await Selector ('#center_column > ul > li:nth-child(' + forCounter + ') > div > div.right-block > h5 > a').getAttribute('title');37 //itemDescription = await Selector ('#center_column > ul > li:nth-child(' + forCounter + ') > div > div.right-block > h5 > a').innerText;38 39 //Validate Item Description contains the expected substring40 await t41 .expect(itemDescription).contains('Dress',' ' + itemDescription + ' contains the substring Dress')42 }43 });44//TEST 0245test('Hover Women, Hover top, select Tshirts, check all listed elements read Tshirts', async t =>46{47 await t48 //Maximizing the Screen49 .maximizeWindow()50 //Hovering WOMEN link in Banner51 .hover(page.bnr_Women)52 .takeScreenshot()53 .wait(2000)54 //Click on T-shirt links under WOMEN section55 .click(page.lnk_Tshirts)56 //Get total count of elements in Results Area57 counter = await Selector('#center_column > ul > li').count;58 await t59 .takeElementScreenshot('#center_column > ul')60 //Validating the Total Count is 161 .expect(counter).eql(constants.int_expect001);62 63 for(forCounter = 1; forCounter <= constants.int_expect001; forCounter++)64 {65 itemDescription = await Selector ('#center_column > ul > li:nth-child(' + forCounter + ') > div > div.right-block > h5 > a').getAttribute('title');66 //itemDescription = await Selector ('#center_column > ul > li:nth-child(' + forCounter + ') > div > div.right-block > h5 > a').innerText;67 68 //Validate Item Description contains the expected substring69 await t70 .expect(itemDescription).contains('T-shirts',' ' + itemDescription + ' contains the substring T-shirts')71 }72});73//TEST 0374test('Open Dresses, perform validations over first Item', async t =>75{76 await t77 //Maximizing the Screen78 .maximizeWindow()79 //Validating the URL belongs to HOME Page80 getLocation = ClientFunction(() => document.location.href);81 await t82 .expect(getLocation()).notContains(constants.url_categories)83 await t84 //Navigating to DRESSES page85 .click(page.bnr_Dresses)86 //Validating the URL belongs to DRESSES Page87 getLocation = ClientFunction(() => document.location.href);88 89 await t90 //Take a screenshot from the first Item in the Results area91 .takeElementScreenshot(page.are_Item1)92 //Validate Add to Cart button is not visible93 .expect(page.lnk_Item1AddtoCart.visible).notOk()94 //Validate More button is not visible95 .expect(page.lnk_Item1More.visible).notOk()96 //Hovering over the first Item in the Results area97 .hover(page.are_Item1)98 //Take a screenshot from the first Item in the Results area99 .takeElementScreenshot(page.are_Item1)100 //Validate Add to Cart button is visible when mouse is over the Item101 .expect(page.lnk_Item1AddtoCart.visible).ok()102 //Validate More button is visible when mouse is over the Item103 .expect(page.lnk_Item1More.visible).ok()...
takeElementScreenshot.js
Source:takeElementScreenshot.js
...4 *5 * @example6 * module.exports = {7 * demoTest(browser) {8 * browser.takeElementScreenshot('#main', function (imageData, err) {9 * require('fs').writeFile('out.png', imageData.value, 'base64', function (err) {10 * console.log(err);11 * });12 * });13 *14 * // with explicit locate strategy15 * browser.takeElementScreenshot('css selector', '#main', function(imageData, err) {16 * require('fs').writeFile('out.png', imageData.value, 'base64', function (err) {17 * console.log(err);18 * });19 * });20 *21 * // with selector object - see https://nightwatchjs.org/guide#element-properties22 * browser.takeElementScreenshot({23 * selector: '#main ul li a',24 * index: 125 * }, function(imageData, err) {26 * require('fs').writeFile('out.png', imageData.value, 'base64', function (err) {27 * console.log(err);28 * });29 * });30 * },31 *32 * demoTestAsync: async function(browser) {33 * const data = await browser.takeElementScreenshot('#main');34 * require('fs').writeFile('out.png', data, 'base64');35 * }36 * }37 *38 * @method takeElementScreenshot39 * @syntax .takeElementScreenshot(selector, callback)40 * @syntax .takeElementScreenshot(using, selector, callback)41 * @param {string} [using] The locator strategy to use. See [W3C Webdriver - locator strategies](https://www.w3.org/TR/webdriver/#locator-strategies)42 * @param {string} selector The CSS/Xpath selector used to locate the element.43 * @param {function} callback Callback function which is called with the result value.44 * @returns {string} Take a screenshot of the visible region encompassed by this element's bounding rectangle.45 * @link /#dfn-take-element-screenshot46 * @api protocol.screens47 * @since 2.0.048 */49class TakeElementScreenshot extends BaseElementCommand {50 get elementProtocolAction() {51 return 'takeElementScreenshot';52 }53}54module.exports = TakeElementScreenshot;
helper.js
Source:helper.js
1//@flow2'use strict';3/*4* Visual-regression snapshot test helper with util functions to do 5* all the things ;)6*/7const glob = require('glob');8const path = require('path');9const fs = require('fs-extra');10const pageSelector = '#examples';11async function takeScreenShot(page /*:any*/, url /*:string*/) {12 await page.goto(url);13 await page.waitForSelector(pageSelector);14 return page.screenshot();15}16async function takeElementScreenShot(page /*:any*/, selector /*:string*/) {17 let element = await page.$(selector);18 return element.screenshot();19}20//function to check if image snapshot dir exists and delete it21function removeOldProdSnapshots(snapshotDir /*: string */) {22 if (process.env.PROD === 'true' && fs.existsSync(snapshotDir)) {23 fs.removeSync(snapshotDir);24 }25}26// get all examples from the code sync27function getAllExamplesSync() /*: Array<Object> */ {28 return glob29 .sync('**/packages/**/examples/*.+(js|ts|tsx)', {30 ignore: '**/node_modules/**',31 })32 .map(file => {33 const reverseExamplePath = file.split('/').reverse();34 return {35 team: reverseExamplePath[3],36 package: reverseExamplePath[2],37 exampleName: reverseExamplePath[0]38 .replace('.js', '')39 .replace('.tsx', '')40 .replace(/^\d+\-\s*/, ''),41 };42 });43}44function getExamplesFor(pkgName /*: string */) /*: Array<Object> */ {45 return getAllExamplesSync().filter(obj => obj.package === pkgName);46}47// construct example urls for a given example48const baseUrl = 'http://localhost:9000';49const getExampleUrl = (50 group: string,51 packageName: string,52 exampleName: string = '',53 environment: string = baseUrl,54) =>55 `${environment}/examples.html?groupId=${group}&packageId=${packageName}&exampleId=${exampleName}`;56module.exports = {57 getExamplesFor,58 removeOldProdSnapshots,59 takeScreenShot,60 takeElementScreenShot,61 getExampleUrl,...
testTakeElementScreenshot.js
Source:testTakeElementScreenshot.js
...9 });10 after(function (done) {11 CommandGlobals.afterEach.call(this, done);12 });13 it('client.takeElementScreenshot()', function (done) {14 MockServer.addMock({15 url: '/wd/hub/session/1352110219202/element/0/screenshot',16 method: 'GET',17 response: JSON.stringify({18 sessionId: '1352110219202',19 status: 0,20 value:21 randomImage22 })23 });24 this.client.api25 .takeElementScreenshot('#weblogin', function(result) {26 assert.strictEqual(result.value, randomImage);27 })28 .takeElementScreenshot('css selector', '#weblogin', function(result) {29 assert.strictEqual(result.value, randomImage);30 })31 .takeElementScreenshot('css selector', {32 selector: '#weblogin',33 timeout: 10034 }, function(result) {35 assert.strictEqual(result.value, randomImage);36 });37 this.client.start(done);38 });...
takeElementScreenshot.test.js
Source:takeElementScreenshot.test.js
...5 it('should be able to take an element screenshot with the takeElementScreenshot API', async () => {6 global.driver = {7 takeElementScreenshot: jest.fn().mockResolvedValue(imageString),8 }9 expect(await takeElementScreenshot({ elementId: 1 }, 'file-path')).toEqual(imageString)10 global.driver = {11 takeElementScreenshot: jest.fn().mockRestore(),12 }13 })14 it('should be able to take an element screenshot when the takeElementScreenshot API is not available', async () => {15 global.driver = {}16 const takeResizedElementScreenshotSpy = jest.spyOn(ResizedElementScreenshot, 'takeResizedElementScreenshot').mockReturnValue(imageString)17 expect(await takeElementScreenshot({ elementId: 1 }, 'file-path')).toEqual(imageString)18 expect(takeResizedElementScreenshotSpy).toBeCalledWith({ elementId: 1 }, 'file-path')19 })...
test.js
Source:test.js
...4test('Take a screenshot of a fieldset', async t => {5 await t6 .click('#reusing-js-code')7 .click('#continuous-integration-embedding')8 .takeElementScreenshot(Selector('fieldset').nth(1), 'my-fixture/important-features.png');9});10fixture`TestController.takeElementScreenshot`11 .page`https://testcafe.io/`;12test('Take a screenshot of image piece', async t => {13 await t14 .takeElementScreenshot('.main-middle img', {15 includeMargins: true,16 crop: {17 top: -100,18 left: 10,19 bottom: 30,20 right: 200,21 },22 });...
Using AI Code Generation
1var webdriverio = require('webdriverio');2var options = {3 desiredCapabilities: {4 }5};6 .remote(options)7 .init()8 .takeElementScreenshot('body', function(err, screenshot) {9 console.log(screenshot);10 })11 .end();
Using AI Code Generation
1var webdriverio = require('webdriverio');2var options = {3 desiredCapabilities: {4 }5}6var client = webdriverio.remote(options);7 .init()8 .takeElementScreenshot('body',function(err, screenshot) {9 console.log(screenshot);10 client.end();11 });
Using AI Code Generation
1const { remote } = require('webdriverio')2async function main () {3 const browser = await remote({4 capabilities: {5 'goog:chromeOptions': {6 }7 }8 })9 const element = await browser.$('#search_input_react')10 const screenshot = await element.takeElementScreenshot()11 await browser.deleteSession()12}13main()14exports.config = {15 capabilities: [{16 'goog:chromeOptions': {17 }18 }],19 mochaOpts: {20 }21}
Using AI Code Generation
1const { remote } = require('webdriverio');2const fs = require('fs');3const path = require('path');4(async () => {5 const browser = await remote({6 capabilities: {7 }8 })9 const elem = await browser.$('h1')10 const screenshot = await elem.takeElementScreenshot();11 fs.writeFileSync(path.join(__dirname, 'screenshot.png'), screenshot)12 await browser.deleteSession()13})().catch((e) => console.error(e))14const { remote } = require('webdriverio');15const fs = require('fs');16const path = require('path');17(async () => {18 const browser = await remote({19 capabilities: {20 }21 })22 const screenshot = await browser.takeScreenshot();23 fs.writeFileSync(path.join(__dirname, 'screenshot.png'), screenshot)24 await browser.deleteSession()25})().catch((e) => console.error(e))26const { remote } = require('webdriverio');27const fs = require('fs');
Using AI Code Generation
1const fs = require('fs');2const webdriverio = require('webdriverio');3const options = {4 desiredCapabilities: {5 }6};7const client = webdriverio.remote(options);8 .init()9 .saveScreenshot('screenshot.png')10 .then((base64ScreenshotData) => {11 fs.writeFileSync('elementScreenshot.png', new Buffer(base64ScreenshotData, 'base64'));12 })13 .end();14fs.writeFileSync('elementScreenshot.png', new Buffer(base64ScreenshotData, 'base64'));
Using AI Code Generation
1const webdriverio = require('webdriverio');2const options = {3 capabilities: {4 }5};6(async () => {7 const browser = await webdriverio.remote(options);8 await browser.deleteSession();9})();
Using AI Code Generation
1var webdriverio = require('webdriverio');2var options = {3 desiredCapabilities: {4 }5};6 .remote(options)7 .init()8 .saveElementScreenshot('#hplogo', 'google.png')9 .end();10var webdriverio = require('webdriverio');11var options = {12 desiredCapabilities: {13 }14};15 .remote(options)16 .init()17 .saveElementScreenshot('#hplogo', 'google.png')18 .end();19var webdriverio = require('webdriverio');20var options = {21 desiredCapabilities: {22 }23};24 .remote(options)25 .init()26 .saveElementScreenshot('#hplogo', 'google.png')27 .end();28var webdriverio = require('webdriverio');29var options = {30 desiredCapabilities: {31 }32};33 .remote(options)34 .init()35 .saveElementScreenshot('#hplogo', 'google.png')36 .end();37var webdriverio = require('webdriverio');38var options = {39 desiredCapabilities: {40 }41};42 .remote(options)43 .init()44 .saveElementScreenshot('#hplogo', 'google.png')45 .end();
Using AI Code Generation
1describe('webdriver.io page', () => {2 it('should take a screenshot of the whole page', () => {3 browser.takeElementScreenshot('body', { /* options */ });4 });5});6exports.config = {7 services: [['selenium-standalone', {8 installArgs: {9 drivers: {10 chrome: { version: '81.0.4044.20' },11 },12 },13 args: {14 drivers: {15 chrome: { version: '81.0.4044.20' },16 },17 },18 }]],19};20{21 "devDependencies": {22 }23}24describe('webdriver.io page', () => {25 it('should take a screenshot of the whole page', () => {26 browser.takeElementScreenshot('body', { /* options */ });27 });28});29exports.config = {30};31{32 "devDependencies": {33 }34}35describe('webdriver.io page', () => {36 it('should take a screenshot of the whole page', () => {37 browser.takeElementScreenshot('body', { /* options */ });38 });39});40exports.config = {41};42{43 "devDependencies": {44 }45}
Using AI Code Generation
1describe('Test', function() {2 it('Take Element Screenshot', function() {3 var elem = browser.element('input[name="q"]');4 browser.takeElementScreenshot(elem, 'elemScreenshot');5 });6});7describe('Test', function() {8 it('Take Element Screenshot', function() {9 var elem = browser.element('input[name="btnK"]');10 browser.takeElementScreenshot(elem, 'elemScreenshot');11 });12});13describe('Test', function() {14 it('Take Element Screenshot', function() {15 var elem = browser.element('input[name="btnK"]');16 browser.takeElementScreenshot(elem, 'elemScreenshot');17 });18});19describe('Test', function() {20 it('Take Element Screenshot', function() {21 var elem = browser.element('input[name="btnK"]');22 browser.takeElementScreenshot(elem, 'elemScreenshot');23 });24});25describe('Test', function() {26 it('Take Element Screenshot', function() {27 browser.url('https
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!!