How to use driver.contexts method in Appium Xcuitest Driver

Best JavaScript code snippet using appium-xcuitest-driver

basics-specs.js

Source:basics-specs.js Github

copy

Full Screen

...10 driver.currentContext().should.eventually.equal("NATIVE_APP")11 .nodeify(done);12 });13 it('getting list should work after webview open', function (done) {14 driver.contexts().should.eventually.have.length.above(0)15 .nodeify(done);16 });17 it('getting list multiple times should not crash appium', function (done) {18 driver19 .contexts().should.eventually.have.length.above(0)20 .contexts().should.eventually.have.length.above(0)21 .contexts().should.eventually.have.length.above(0)22 .contexts().should.eventually.have.length.above(0)23 .contexts().should.eventually.have.length.above(0)24 .contexts().should.eventually.have.length.above(0)25 .contexts().should.eventually.have.length.above(0)26 .nodeify(done);27 });28 it('contexts should be strings', function (done) {29 driver.contexts().then(function (ctxs) {30 ctxs.length.should.be.above(0);31 _.each(ctxs, function (ctx) {32 (typeof ctx).should.equal("string");33 });34 }).nodeify(done);35 });36 it('setting context without getting contexts should work', function (done) {37 driver38 .context("WEBVIEW_1")39 .sleep(500)40 .get(env.GUINEA_TEST_END_POINT)41 .sleep(500)42 .title()43 .should.eventually.equal("I am a page title")44 .nodeify(done);45 });46 it('setting context to \'WEBVIEW_X\' should work', function (done) {47 driver.contexts().then(function (contexts) {48 contexts.should.have.length.above(0);49 driver50 .context(contexts[1])51 .sleep(500)52 .get(env.GUINEA_TEST_END_POINT)53 .sleep(1000)54 .title()55 .should.eventually.equal("I am a page title")56 .nodeify(done);57 });58 });59 it('setting context to \'WEBVIEW\' should work', function (done) {60 driver61 .context("WEBVIEW")62 .sleep(500)63 .get(env.GUINEA_TEST_END_POINT)64 .sleep(500)65 .title()66 .should.eventually.equal("I am a page title")67 .nodeify(done);68 });69 it('setting context to \'null\' should work', function (done) {70 driver.contexts().then(function (ctxs) {71 ctxs.length.should.be.above(0);72 return ctxs[0];73 }).then(function (ctx) {74 return driver.context(ctx);75 })76 .context(null)77 .nodeify(done);78 });79 it('returning to \'NATIVE_APP\' should work', function (done) {80 driver.contexts().then(function (ctxs) {81 ctxs.length.should.be.above(0);82 return ctxs[0];83 }).then(function (ctx) {84 return driver.context(ctx);85 })86 .context('NATIVE_APP')87 .nodeify(done);88 });89 it('setting context to non-existent context should return \'NoSuchContext\' (status: 35)', function (done) {90 driver91 .context("WEBVIEW_420")92 .should.be.rejectedWith(/status: 35/)93 .nodeify(done);94 });95 it('switching back and forth between native and webview contexts should work @skip-ios6', function (done) {96 driver.contexts().then(function (contexts) {97 driver98 .context(contexts[1])99 .get(env.GUINEA_TEST_END_POINT)100 .sleep(3000)101 .title()102 .should.eventually.equal("I am a page title")103 .context("NATIVE_APP")104 .context(contexts[1])105 .get(env.GUINEA_TEST_END_POINT)106 .sleep(3000)107 .elementByLinkText('i am a link').click()108 .elementById('only_on_page_2').should.eventually.exist109 .nodeify(done);110 });...

Full Screen

Full Screen

tests.js

Source:tests.js Github

copy

Full Screen

...21 app: appPath22};23driver.init(androidCapabilities)24.then(function() {25 return driver.contexts();26})27.then(function(contexts) {28 return switchToWebViewContext();29})30.then(function() {31 return test();32})33.catch(function(err) {34 console.log('catch', err);35});36function test() {37 return driver.elementById('ziv-take-photo-btn').click()38 .then(function() {39 return switchToNativeContext();40 })41 .then(function() {42 //click take picture43 var resId = 'com.android.camera2:id/shutter_button';44 return clickAndroidElementByResId(resId);45 })46 .then(function() {47 //click picture done48 var resId = 'com.android.camera2:id/btn_done';49 return clickAndroidElementByResId(resId);50 })51 .then(function() {52 return switchToWebViewContext();53 })54 .then(function() {55 return getCropBtn();56 })57 .then(function(btn) {58 btn.click();59 })60 .then(function() {61 return driver.elementsByClassName('ziv-slider-item');62 })63 .then(function(elements) {64 return elements[0].click();65 })66 .then(function() {67 return driver.elementById('ziv-edit-photo-continue-btn').click();68 })69 .then(function() {70 return isPictureSave();71 })72 .then(function(isPictureSave) {73 console.log(isPictureSave);74 })75 .catch(function(err) {76 console.log('TEST ERR', err)77 });78}79function isPictureSave() {80 var url = 'http://192.168.1.104:3000/photos/image.jpg';81 return request(url)82 .spread(function(response) {83 console.log(response.statusCode);84 return Promise.resolve(response.statusCode == 200);85 })86 .catch(function(err) {87 return Promise.resolve(false);88 });89}90function getCropBtn() {91 return driver.elementsByClassName('jr-crop')92 .then(function(elements) {93 return elements[0].elementsByTagName('button');94 })95 .then(function(elements) {96 return elements[1];97 });98}99function clickAndroidElementByResId(resId) {100 return getAndroidElementByResId(resId)101 .then(function(element) {102 return element.click();103 });104}105function getAndroidElementByResId(resId) {106 return driver.elementsByAndroidUIAutomator('new UiSelector().resourceId("' + resId + '")')107 .then(function(elements) {108 return Promise.resolve(elements[0]);109 });110}111function switchToWebViewContext() {112 return driver.contexts()113 .then(function(contexts) {114 return getContext(contexts, 'WEBVIEW')115 })116 .then(function(context) {117 return driver.context(context);118 });119}120function switchToNativeContext() {121 return driver.contexts()122 .then(function(contexts) {123 return getContext(contexts, 'NATIVE')124 })125 .then(function(context) {126 return driver.context(context);127 });128}129function getContext(contexts, phrase) {130 var context = _.find(contexts, function(context) {131 return context.indexOf(phrase) != -1;132 });133 if (context) {134 return context;135 } else {...

Full Screen

Full Screen

web-e2e-specs.js

Source:web-e2e-specs.js Github

copy

Full Screen

...23 it('should get the title of a webview page', async function () {24 await driver.title().should.eventually.equal('I am a page title');25 });26 it('should find one native and one web context', async function () {27 let contexts = await driver.contexts();28 contexts.length.should.equal(2);29 contexts[0].should.match(/^native/i);30 contexts[1].should.match(/^webview/i);31 });32 it('should send text to html text inputs', async function () {33 const html = await driver.source();34 html.should.match(/Selenium/);35 const textbox = await driver.elementById('i_am_a_textbox');36 await textbox.clear();37 await textbox.type('Text contents');38 await textbox.getAttribute('value').should.eventually.equal('Text contents');39 await textbox.clear();40 await textbox.text().should.eventually.equal('');41 });42 it('should navigate between webview pages', async function () {43 const anchorLink = await driver.elementById('i am a link');44 await anchorLink.click();45 const bodyEl = await driver.elementByTagName('body');46 bodyEl.getAttribute('value').should.eventually.equal(/I am some other page content/);47 await driver.back();48 await driver.elementById('i am a link').should.eventually.exist;49 });50 it('should be able to switch from webview back to native, navigate to a different webview and then switch back to web context', async function () {51 // Switch to webview52 let contexts = await driver.contexts();53 await driver.context(contexts[1]);54 await driver.title().should.eventually.equal('I am a page title');55 // Switch to native and go to different activity56 await driver.context(contexts[0]);57 await driver.startActivity({appActivity: 'io.appium.android.apis.view.WebView3', appPackage: 'io.appium.android.apis'});58 contexts = await driver.contexts();59 await driver.elementById('android:id/content').should.eventually.exist;60 // Switch to webview again61 await driver.context(contexts[1]);62 await driver.title().should.eventually.equal('I am a page title');63 });64 });65 describe('Chrome Browser', function () {66 it('should reject "browserName=Chrome" sessions', async function () {67 await initSession({68 ...GENERIC_CAPS,69 browserName: 'Chrome',70 }).should.eventually.be.rejectedWith(/doesn't have permission/);71 await deleteSession();72 });...

Full Screen

Full Screen

context-e2e-specs.js

Source:context-e2e-specs.js Github

copy

Full Screen

...23 after(async function () {24 await driver.quit();25 });26 it('should find webview context', async function () {27 let contexts = await driver.contexts();28 contexts.length.should.be.at.least(2);29 // make sure the process was found, otherwise it comes out as "undefined"30 contexts.join('').should.not.include('undefined');31 contexts.join('').should.include(WEBVIEW);32 });33 it('should go into the webview', async function () {34 // TODO: Fix this on TestObject. Chromedriver does not exist error35 if (process.env.TESTOBJECT_E2E_TESTS) {36 this.skip();37 }38 let contexts = await driver.contexts();39 await driver.context(contexts[1]);40 });41 it('should be able to go into native context and interact with it after restarting app', async function () {42 await driver.closeApp();43 await driver.launchApp();44 await driver.context(NATIVE);45 await driver.elementByXPath(NATIVE_LOCATOR);46 });47 it('should be able to go into native context and interact with it after resetting app', async function () {48 await driver.resetApp();49 await driver.context(NATIVE);50 await driver.elementByXPath(NATIVE_LOCATOR);51 });52 it('should be able to go into webview context and interact with it after restarting app', async function () {...

Full Screen

Full Screen

macaca-test-sample.test.js

Source:macaca-test-sample.test.js Github

copy

Full Screen

1/* ================================================================2 * macaca-test-sample by xdf(xudafeng[at]126.com)3 *4 * first created at : Thu Mar 10 2016 14:21:49 GMT+0800 (CST)5 *6 * ================================================================7 * Copyright xdf8 *9 * Licensed under the MIT License10 * You may not use this file except in compliance with the License.11 *12 * ================================================================ */13'use strict';14var path = require('path');15var wd = require('webdriver-client')({16 platformName: 'iOS',17 app: path.join(__dirname, '..', 'app', 'ios-app-bootstrap.zip')18});19describe('macaca test sample', function() {20 this.timeout(5 * 60 * 1000);21 var driver = wd.initPromiseChain();22 before(function() {23 return driver.initDriver();24 });25 after(function() {26 return driver27 .sleep(1000)28 .quit();29 });30 it('#1 should login success', function() {31 return driver32 .login('12345678', '111111')33 .sleep(1000);34 });35 it('#2 should display home', function() {36 return driver37 .takeScreenshot();38 });39 it('#3 should display webview', function() {40 return driver41 .elementByName('Webview')42 .click()43 .sleep(3000)44 .takeScreenshot();45 });46 it('#4 should go into webview', function() {47 return driver48 .contexts()49 .then(function(arr) {50 return driver51 .context(arr[arr.length - 1]);52 })53 .elementById('pushView')54 .click()55 .sleep(1000)56 .elementById('popView')57 .click()58 .sleep(1000)59 .takeScreenshot();60 });61 it('#5 should go into test', function() {62 return driver63 .contexts()64 .then(function(arr) {65 return driver66 .context(arr[0]);67 })68 .elementByName('Baidu')69 .click()70 .sleep(5000)71 .takeScreenshot();72 });73 it('#6 should works with web', function() {74 return driver75 .contexts()76 .then(function(arr) {77 return driver78 .context(arr[arr.length - 1]);79 })80 .elementById('index-kw')81 .sendKeys('TesterHome')82 .elementById('index-bn')83 .click()84 .sleep(5000)85 .source()86 .then(function(html) {87 html.should.containEql('TesterHome');88 })89 .takeScreenshot();90 });91 it('#7 should logout success', function() {92 return driver93 .contexts()94 .then(function(arr) {95 return driver96 .context(arr[0]);97 })98 .elementByName('PERSONAL')99 .click()100 .sleep(1000)101 .takeScreenshot()102 .elementByName('Logout')103 .click()104 .sleep(1000)105 .takeScreenshot();106 });...

Full Screen

Full Screen

background.js

Source:background.js Github

copy

Full Screen

1(function(info, tab) {2 var regexp = {3 "BaiduPan": {4 reg: /^1[a-z]+/i,5 site: "http://pan.baidu.com/s/"6 },7 "Bilibili": {8 reg: /^av\d+$/i,9 site: "http://www.bilibili.com/video/"10 },11 "Acfun": {12 reg: /^ac\d+$/i,13 site: "http://www.acfun.tv/v/"14 }15 };16 var Pixiv = {17 "pic": "http://www.pixiv.net/member_illust.php?mode=medium&illust_id=",18 "auth": "http://www.pixiv.net/member.php?id="19 };20 //add an item21 // chrome.runtime.onInstalled.addListener(function() {22 var id = chrome.contextMenus.create({23 "title": "PixivLink",24 "contexts": ["selection"],25 "id": "oldDriver"26 // "onclick": onClickHandler27 });28 console.log("item:" + id);29 chrome.contextMenus.create({30 "title": "图片id",31 "parentId": "oldDriver",32 "contexts": ["selection"],33 "id": "picId",34 "onclick": function(info, tab) {35 var value = info.selectionText.trim();36 window.open(Pixiv["pic"] + value, "_blank");37 }38 });39 chrome.contextMenus.create({40 "title": "作者id",41 "parentId": "oldDriver",42 "contexts": ["selection"],43 "id": "authid",44 "onclick": function(info, tab) {45 var value = info.selectionText.trim();46 window.open(Pixiv["auth"] + value, "_blank");47 }48 });49 chrome.contextMenus.create({50 "title": "其他",51 "parentId": "oldDriver",52 "contexts": ["selection"],53 "id": "others",54 "onclick": onClickHandler55 });56 // });57 // chrome.contextMenus.onClicked.addListener(onClickHandler);58 function onClickHandler(info, tab) {59 var value = info.selectionText.trim();60 console.log(value);61 if (value != "") {62 for (var i in regexp) {63 if (regexp.hasOwnProperty(i)) {64 if (regexp[i].reg.test(value)) {65 console.log(i);66 window.open(regexp[i].site + value, "_blank");67 }68 }69 }70 }71 }...

Full Screen

Full Screen

context-specs.js

Source:context-specs.js Github

copy

Full Screen

...16 .contexts().should.eventually.have.length(1)17 .nodeify(done);18 });19 it('setting context to \'null\' should work', function (done) {20 driver.contexts().then(function (ctxs) {21 ctxs.length.should.be.equal(1);22 return ctxs[0];23 }).then(function (ctx) {24 return driver.context(ctx);25 })26 .context(null)27 .nodeify(done);28 });29 it('setting context to \'NATIVE_APP\' should work', function (done) {30 driver.contexts().then(function (ctxs) {31 ctxs.length.should.be.above(0);32 return ctxs[0];33 }).then(function (ctx) {34 return driver.context(ctx);35 })36 .context('NATIVE_APP')37 .nodeify(done);38 });39 it('setting context to non-existent context should return \'NoSuchContext\' (status: 35)', function (done) {40 driver41 .context("WEBVIEW_42")42 .should.be.rejectedWith(/status: 35/)43 .nodeify(done);44 });...

Full Screen

Full Screen

window-specs.js

Source:window-specs.js Github

copy

Full Screen

1"use strict";2var setup = require("../../common/setup-base"),3 desired = require('./desired');4describe('uicatalog - contexts @skip-ios6', function () {5 var driver;6 setup(this, desired).then(function (d) { driver = d; });7 it('getting contexts should do nothing when no webview open', function (done) {8 driver9 .contexts().should.eventually.have.length(1)10 .nodeify(done);11 });...

Full Screen

Full Screen

Using AI Code Generation

copy

Full Screen

1import wd from 'wd';2import chai from 'chai';3import chaiAsPromised from 'chai-as-promised';4chai.use(chaiAsPromised);5chai.should();6const host = 'localhost';7const port = 4723;8const driver = wd.promiseChainRemote(host, port);9const desired = {

Full Screen

Using AI Code Generation

copy

Full Screen

1const wd = require('wd');2const chai = require('chai');3const chaiAsPromised = require('chai-as-promised');4chai.use(chaiAsPromised);5chai.should();6const desiredCaps = {7};8const driver = wd.promiseChainRemote('localhost', 4723);9driver.init(desiredCaps).then(function () {10 return driver.contexts();11}).then(function (contexts) {12 console.log('Available contexts: ', contexts);13 return driver.context(contexts[1]);14}).then(function () {15}).then(function () {16 return driver.elementById('lst-ib');17}).then(function (searchBox) {18 return searchBox.sendKeys('Appium');19}).then(function () {20 return driver.elementById('tsbb');21}).then(function (searchButton) {22 return searchButton.click();23}).then(function () {24 return driver.waitForElementByCss('.r a', 10000);25}).then(function (firstLink) {26 return firstLink.click();27}).then(function () {28 return driver.contexts();29}).then(function (contexts) {30 console.log('Available contexts: ', contexts);31 return driver.context(contexts[0]);32}).then(function () {33 return driver.quit();34}).catch(function (err) {35 console.log(err);36});37const wd = require('wd');38const chai = require('chai');39const chaiAsPromised = require('chai-as-promised');40chai.use(chaiAsPromised);41chai.should();42const desiredCaps = {

Full Screen

Automation Testing Tutorials

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.

LambdaTest Learning Hubs:

YouTube

You could also refer to video tutorials over LambdaTest YouTube channel to get step by step demonstration from industry experts.

Run Appium Xcuitest Driver automation tests on LambdaTest cloud grid

Perform automation testing on 3000+ real desktop and mobile devices online.

Sign up Free
_

Try LambdaTest Now !!

Get 100 minutes of automation test minutes FREE!!

Next-Gen App & Browser Testing Cloud

Was this article helpful?

Helpful

NotHelpful