Best JavaScript code snippet using appium-android-driver
basic-specs.js
Source:basic-specs.js
...16 });17 });18 describe('implicit wait', function () {19 it('should set the implicit wait for finding web elements', async function () {20 await driver.implicitWait(7 * 1000);21 let before = new Date().getTime() / 1000;22 let hasThrown = false;23 /**24 * we have to use try catch to actually halt the process here25 */26 try {27 await driver.findElement('tag name', 'notgonnabethere');28 } catch (e) {29 hasThrown = true;30 } finally {31 hasThrown.should.be.ok;32 }33 let after = new Date().getTime() / 1000;34 ((after - before) > 7).should.be.ok;35 await driver.implicitWait(0);36 });37 });38 describe('window title', function () {39 beforeEach(async function () { return await loadWebView(desired, driver); });40 it('should return a valid title on web view', async function () {41 (await driver.title()).should.include('I am a page title');42 });43 });44 describe('element handling', function () {45 beforeEach(async function () { return await loadWebView(desired, driver); });46 it('should find a web element in the web view', async function () {47 (await driver.findElement('id', 'i_am_an_id')).should.exist;48 });49 it('should find multiple web elements in the web view', async function () {...
playback-webdriver.spec.js
Source:playback-webdriver.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 { promisify } from 'util'18import { By } from 'selenium-webdriver'19import { createHeadlessChrome } from '@seleniumhq/webdriver-testkit'20import { createStaticSite } from '@seleniumhq/side-testkit'21import Playback from '../../src/playback'22import Variables from '../../src/Variables'23import WebDriverExecutor from '../../src/webdriver'24jest.setTimeout(30000)25describe('Playback using webdriver', () => {26 const app = createStaticSite()27 let port, close, driver, executor, variables28 beforeAll(async () => {29 await new Promise(res => {30 const server = app.listen(() => {31 port = server.address().port32 close = promisify(server.close.bind(server))33 res()34 })35 })36 })37 afterEach(() => {38 executor.hooks = undefined39 })40 afterAll(async () => {41 await close()42 })43 beforeAll(async () => {44 variables = new Variables()45 driver = await createHeadlessChrome()46 executor = new WebDriverExecutor({ driver, implicitWait: 50 })47 })48 afterAll(async () => {49 await driver.quit()50 })51 afterEach(async () => {52 try {53 await driver.actions({ bridge: true }).clear()54 } catch (err) {55 // chromedriver doesn't support clear()56 }57 })58 it('should run a test using WebDriverExecutor', async () => {59 const test = {60 id: 1,61 commands: [62 {63 command: 'open',64 target: '/check.html',65 value: '',66 },67 {68 command: 'uncheck',69 target: 'id=t',70 value: '',71 },72 {73 command: 'check',74 target: 'id=f',75 value: '',76 },77 ],78 }79 const playback = new Playback({80 executor,81 variables,82 baseUrl: `http://localhost:${port}/`,83 })84 await (await playback.play(test))()85 const element = await driver.findElement(By.id('f'))86 expect(await element.isSelected()).toBeTruthy()87 })88 it('should utilize before and after commands', async () => {89 const test = {90 id: 1,91 commands: [92 {93 command: 'open',94 target: '/check.html',95 value: '',96 },97 {98 command: 'uncheck',99 target: 'id=t',100 value: '',101 },102 {103 command: 'check',104 target: 'id=f',105 value: '',106 },107 ],108 }109 const playback = new Playback({110 executor,111 variables,112 baseUrl: `http://localhost:${port}/`,113 })114 executor.hooks = {115 onAfterCommand: jest.fn(),116 onBeforeCommand: jest.fn(),117 }118 await (await playback.play(test))()119 expect(executor.hooks.onBeforeCommand).toHaveBeenCalledTimes(3)120 expect(executor.hooks.onAfterCommand).toHaveBeenCalledTimes(3)121 expect(executor.hooks.onBeforeCommand.mock.calls[0]).toEqual([122 {123 command: test.commands[0],124 },125 ])126 expect(executor.hooks.onAfterCommand.mock.calls[0]).toEqual([127 {128 command: test.commands[0],129 },130 ])131 })132 it('should inform of a new window', async () => {133 const test = {134 id: 1,135 commands: [136 {137 command: 'open',138 target: '/windows.html',139 value: '',140 },141 {142 command: 'click',143 target: 'css=a',144 value: '',145 opensWindow: true,146 windowHandleName: 'new',147 windowTimeout: 200,148 },149 ],150 }151 const playback = new Playback({152 executor,153 variables,154 baseUrl: `http://localhost:${port}/`,155 })156 executor.hooks = {157 onWindowAppeared: jest.fn(),158 }159 await (await playback.play(test))()160 expect(executor.hooks.onWindowAppeared).toHaveBeenCalledTimes(1)161 expect(executor.hooks.onWindowAppeared.mock.calls[0]).toMatchObject([162 {163 command: test.commands[1],164 windowHandleName: test.commands[1].windowHandleName,165 windowHandle: expect.stringMatching(/^CDwindow-/),166 },167 ])168 })169 it('should wait for hook execution to complete', async () => {170 let didExecute = false171 const test = {172 id: 1,173 commands: [174 {175 command: 'open',176 target: '/windows.html',177 value: '',178 },179 {180 command: 'click',181 target: 'css=a',182 value: '',183 opensWindow: true,184 windowHandleName: 'new',185 windowTimeout: 200,186 },187 ],188 }189 const playback = new Playback({190 executor,191 variables,192 baseUrl: `http://localhost:${port}/`,193 })194 executor.hooks = {195 onWindowAppeared: () => {196 return new Promise(res => {197 setTimeout(() => {198 didExecute = true199 res()200 }, 10)201 })202 },203 }204 await (await playback.play(test))()205 expect(didExecute).toBeTruthy()206 })207 it('should perform locator fallback', async () => {208 const test = {209 id: 1,210 commands: [211 {212 command: 'open',213 target: '/check.html',214 value: '',215 },216 {217 command: 'uncheck',218 target: 'id=nan',219 value: '',220 targetFallback: [221 ['id=stillnan', 'id'],222 ['id=t', 'id'],223 ['id=broken', 'id'],224 ],225 },226 ],227 }228 const playback = new Playback({229 executor,230 variables,231 baseUrl: `http://localhost:${port}/`,232 })233 await (await playback.play(test))()234 const element = await driver.findElement(By.id('t'))235 expect(await element.isSelected()).toBeFalsy()236 })...
timeout-specs.js
Source:timeout-specs.js
...64 });65 });66 describe('implicitWait', function () {67 it('should call setImplicitWait when given an integer', async function () {68 await driver.implicitWait(42);69 implicitWaitSpy.calledOnce.should.be.true;70 implicitWaitSpy.firstCall.args[0].should.equal(42);71 driver.implicitWaitMs.should.eql(42);72 });73 it('should call setImplicitWait when given a string', async function () {74 await driver.implicitWait('42');75 implicitWaitSpy.calledOnce.should.be.true;76 implicitWaitSpy.firstCall.args[0].should.equal(42);77 driver.implicitWaitMs.should.eql(42);78 });79 it('should throw an error if something random is sent', async function () {80 await driver.implicitWait('howdy').should.eventually.be.rejected;81 });82 it('should throw an error if timeout is negative', async function () {83 await driver.implicitWait(-42).should.eventually.be.rejected;84 });85 });86 describe('set implicit wait', function () {87 it('should set the implicit wait with an integer', function () {88 driver.setImplicitWait(42);89 driver.implicitWaitMs.should.eql(42);90 });91 describe('with managed driver', function () {92 let managedDriver1 = new BaseDriver();93 let managedDriver2 = new BaseDriver();94 before(function () {95 driver.addManagedDriver(managedDriver1);96 driver.addManagedDriver(managedDriver2);97 });...
find-basic-e2e-specs.js
Source:find-basic-e2e-specs.js
...73 });74 describe('implicit wait', function () {75 let implicitWait = 5000;76 before(async function () {77 await driver.implicitWait(implicitWait);78 });79 it('should respect implicit wait with multiple elements', async function () {80 let beforeMs = Date.now();81 await driver.findElements('id', 'there_is_nothing_called_this')82 .should.eventually.have.length(0);83 let afterMs = Date.now();84 (afterMs - beforeMs).should.be.below(implicitWait + 5000);85 (afterMs - beforeMs).should.be.above(implicitWait);86 });87 it('should respect implicit wait with a single element', async function () {88 let beforeMs = Date.now();89 await driver.findElement('id', 'there_is_nothing_called_this')90 .should.eventually.be.rejectedWith(/could not be located/);91 let afterMs = Date.now();...
windows-frame-specs.js
Source:windows-frame-specs.js
...12 }).driver;13 describe('within webview', function () {14 before(async function () {15 // minimize waiting if something goes wrong16 await driver.implicitWait(1000);17 });18 beforeEach(function () { return loadWebView('safari', driver); });19 it("should throw nosuchwindow if there's not one", function () {20 return driver.setWindow('noexistman').should.be.rejectedWith(/window could not be found/);21 });22 // unfortunately, iOS8 doesn't respond to the close() method on window23 // the way iOS7 does24 it('should be able to open and close windows @skip-ios8', async function () {25 let el = await driver.findElement('id', 'blanklink');26 await driver.click(el);27 await spinTitle('I am another page title', driver);28 await B.delay(2000);29 await driver.closeWindow();30 await B.delay(3000);31 await spinTitle('I am a page title', driver);32 });33 it('should be able to go back and forward', async function () {34 let link = await driver.findElement('link text', 'i am a link');35 await driver.click(link);36 await driver.findElement('id', 'only_on_page_2');37 await driver.back();38 await driver.findElement('id', 'i_am_a_textbox');39 await driver.forward();40 await driver.findElement('id', 'only_on_page_2');41 });42 // broken on real devices, see https://github.com/appium/appium/issues/516743 it('should be able to open js popup windows with safariAllowPopups set to true @skip-real-device', async function () {44 let link = await driver.findElement('link text', 'i am a new window link');45 await driver.click(link);46 await spinTitle('I am another page title', driver, 30);47 });48 });49});50describe(`safari - windows and frames (${env.DEVICE}) - without safariAllowPopups`, function () {51 this.timeout(MOCHA_SAFARI_TIMEOUT);52 const driver = setup(this, {53 browserName: 'safari',54 safariAllowPopups: false55 }).driver;56 before(async function () {57 // minimize waiting if something goes wrong58 await driver.implicitWait(5000);59 });60 beforeEach(async function () { return await loadWebView('safari', driver); });61 it('should not be able to open js popup windows', async function () {62 await driver.execute("window.open('/test/guinea-pig2.html', null)");63 await spinTitle('I am another page title', driver, 5).should.eventually.be.rejected;64 });...
calc-app-2-specs.js
Source:calc-app-2-specs.js
...38 });39 // TODO: Fails on sauce, investigate40 // TODO: Fails with 8.4 or Appium 1.5, investigate cause41 it.skip('should be able to get syslog logs @skip-ios8 @skip-ci', async function () {42 await driver.implicitWait(4000);43 await B.resolve(driver.findElement('accessibility id', 'SumLabelz'))44 .catch(throwMatchableError)45 .should.be.rejectedWith(/jsonwpCode: 7/);46 let logs = await driver.getLog();47 logs.length.should.be.above(0);48 logs[0].message.should.not.include('\n');49 logs[0].level.should.equal('ALL');50 logs[0].timestamp.should.exist;51 });52 it('should be able to get crashlog logs @skip-ci', async function () {53 let dir = path.resolve(process.env.HOME, 'Library', 'Logs', 'DiagnosticReports');54 let msg = 'boom';55 let logs = await driver.getLog('crashlog');56 await fs.writeFile(`${dir}/myApp_${Date.parse(new Date())}_rocksauce.crash`, msg);...
implicit-wait-specs.js
Source:implicit-wait-specs.js
...26 (afterMs - beforeMs).should.be.below(impWaitMs + 2000);27 (afterMs - beforeMs).should.be.above(impWaitMs);28 };29 it('should set the implicit wait for finding elements', async function () {30 await driver.implicitWait(4000);31 await impWaitCheck('class name', 'UIANotGonnaBeHere', 4000);32 await impWaitCheck('accessibility id', 'FoShoIAintHere', 4000);33 await impWaitCheckSingle('accessibility id', 'FoShoIAintHere', 4000);34 });35 it('should work with small command timeout', async function () {36 await driver.timeouts('command', 5000);37 await driver.implicitWait(10000);38 await impWaitCheck('class name', 'UIANotGonnaBeHere', 10000);39 });40 it('should work even with a reset in the middle', async function () {41 await driver.timeouts('command', 60000);42 await driver.implicitWait(4000);43 await impWaitCheck('class name', 'UIANotGonnaBeHere', 4000);44 await driver.reset();45 await B.delay(3000); // cooldown46 await impWaitCheck('class name', 'UIANotGonnaBeHere', 4000);47 });48 });...
session.js
Source:session.js
...51 attempts = Math.min(env.MAX_RETRY, attempts);52 }53 await init(attempts);54 this.initialized = true;55 await this.driver.implicitWait(env.IMPLICIT_WAIT_TIMEOUT);56 }57 async tearDown () {58 if (this.initialized) {59 try {60 await this.driver.deleteSession();61 } catch (err) {62 log.warn("didn't quit cleanly.");63 }64 }65 }66}...
Using AI Code Generation
1var webdriver = require('selenium-webdriver');2var driver = new webdriver.Builder().forBrowser('chrome').build();3driver.manage().timeouts().implicitlyWait(30);4driver.findElement(webdriver.By.name('q')).sendKeys('webdriver');5driver.findElement(webdriver.By.name('btnG')).click();6driver.wait(function() {7 return driver.getTitle().then(function(title) {8 return title === 'webdriver - Google Search';9 });10}, 1000);11driver.quit();
Using AI Code Generation
1driver.implicitWait(10000);2driver.findElementByAndroidUIAutomator("new UiSelector().text(\"Views\")").click();3driver.findElementByAndroidUIAutomator("new UiSelector().text(\"Popup Menu\")").click();4driver.findElementByAndroidUIAutomator("new UiSelector().text(\"Eclipse\")").click();5driver.waitForElement(10000, "new UiSelector().text(\"Views\")");6driver.findElementByAndroidUIAutomator("new UiSelector().text(\"Views\")").click();7driver.waitForElement(10000, "new UiSelector().text(\"Popup Menu\")");8driver.findElementByAndroidUIAutomator("new UiSelector().text(\"Popup Menu\")").click();9driver.waitForElement(10000, "new UiSelector().text(\"Eclipse\")");10driver.findElementByAndroidUIAutomator("new UiSelector().text(\"Eclipse\")").click();11driver.quit();
Using AI Code Generation
1var webdriver = require('selenium-webdriver');2var driver = new webdriver.Builder().forBrowser('chrome').build();3driver.findElement(webdriver.By.name('q')).sendKeys('webdriver');4driver.findElement(webdriver.By.name('btnG')).click();5driver.wait(function() {6 return driver.getTitle().then(function(title) {7 return title === 'webdriver - Google Search';8 });9}, 1000);10driver.quit();11var webdriver = require('selenium-webdriver');12var driver = new webdriver.Builder().forBrowser('chrome').build();13driver.findElement(webdriver.By.name('q')).sendKeys('webdriver');14driver.findElement(webdriver.By.name('btnG')).click();15driver.wait(function() {16 return driver.getTitle().then(function(title) {17 return title === 'webdriver - Google Search';18 });19}, 1000);20driver.quit();21var webdriver = require('selenium-webdriver');22var driver = new webdriver.Builder().forBrowser('chrome').build();23driver.findElement(webdriver.By.name('q')).sendKeys('webdriver');24driver.findElement(webdriver.By.name('btnG')).click();25driver.wait(function() {26 return driver.getTitle().then(function(title) {27 return title === 'webdriver - Google Search';28 });29}, 1000);30driver.quit();31var webdriver = require('selenium-webdriver');32var driver = new webdriver.Builder().forBrowser('chrome').build();33driver.findElement(webdriver.By.name('q')).sendKeys('webdriver');34driver.findElement(webdriver.By.name('btnG')).click();35driver.wait(function() {36 return driver.getTitle().then(function(title) {37 return title === 'webdriver - Google Search';38 });39}, 1000);40driver.quit();41var webdriver = require('selenium
Using AI Code Generation
1var webdriver = require('selenium-webdriver');2var driver = new webdriver.Builder()3 .withCapabilities(webdriver.Capabilities.android())4 .build();5var webdriver = require('selenium-webdriver');6var driver = new webdriver.Builder()7 .withCapabilities(webdriver.Capabilities.ios())8 .build();9var webdriver = require('selenium-webdriver');10var driver = new webdriver.Builder()11 .withCapabilities(webdriver.Capabilities.windows())12 .build();13var webdriver = require('selenium-webdriver');14var driver = new webdriver.Builder()15 .withCapabilities(webdriver.Capabilities.firefox())16 .build();17var webdriver = require('selenium-webdriver');18var driver = new webdriver.Builder()19 .withCapabilities(webdriver.Capabilities.chrome())20 .build();21var webdriver = require('selenium-webdriver');22var driver = new webdriver.Builder()23 .withCapabilities(webdriver.Capabilities.safari())24 .build();25var webdriver = require('selenium-webdriver');26var driver = new webdriver.Builder()27 .withCapabilities(webdriver.Capabilities.opera())28 .build();
Learn to execute automation testing from scratch with LambdaTest Learning Hub. Right from setting up the prerequisites to run your first automation test, to following best practices and diving deeper into advanced test scenarios. LambdaTest Learning Hubs compile a list of step-by-step guides to help you be proficient with different test automation frameworks i.e. Selenium, Cypress, TestNG etc.
You could also refer to video tutorials over LambdaTest YouTube channel to get step by step demonstration from industry experts.
Get 100 minutes of automation test minutes FREE!!