Coder Social home page Coder Social logo

appium-gestures-plugin's Introduction


AppiumGestures


appium-gestures-plugin npm version

This is an Appium plugin designed to perform basic gestures using W3C Actions.

Prerequisite

Appium version 2.0

Installation - Server

Install the plugin using Appium's plugin CLI, either as a named plugin or via NPM:

appium plugin install --source=npm appium-gestures-plugin

Activation

The plugin will not be active unless turned on when invoking the Appium server:

appium --use-plugins=gestures

Usage

Sample app used to demonstrate below gesture is available here

Swipe Left

RemoteWebElement carousel = (RemoteWebElement) wait.until(presenceOfElementLocated(AppiumBy.accessibilityId("Carousel")));

driver.executeScript("gesture: swipe", Map.of("elementId", carousel.getId(), "percentage", 50, "direction", "left"));

Swipe Right

RemoteWebElement carousel = (RemoteWebElement) wait.until(presenceOfElementLocated(AppiumBy.accessibilityId("Carousel")));

driver.executeScript("gesture: swipe", Map.of("elementId", carousel.getId(), "percentage", 50, "direction", "right"));

Swipe Up

RemoteWebElement scrollView = (RemoteWebElement) wait.until(presenceOfElementLocated(AppiumBy.accessibilityId("Swipe-screen")));

driver.executeScript("gesture: swipe", Map.of("elementId", scrollView.getId(),
                "percentage", 50,
                "direction", "up"));

Swipe Down

RemoteWebElement scrollView = (RemoteWebElement) wait.until(presenceOfElementLocated(AppiumBy.accessibilityId("Swipe-screen")));

driver.executeScript("gesture: swipe", Map.of("elementId", scrollView.getId(),
                "percentage", 50,
                "direction", "down"));

scrollElementIntoView

JAVA

RemoteWebElement scrollView = (RemoteWebElement) wait.until(presenceOfElementLocated(AppiumBy.accessibilityId("Swipe-screen")));

driver.executeScript("gesture: scrollElementIntoView", Map.of("scrollableView", scrollView.getId(),
    "strategy", "accessibility id",
    "selector", "WebdriverIO logo",
    "percentage", 50,
    "direction", "up",
    "maxCount", 3));

PYTHON

list_view = driver.find_element(by=AppiumBy.ID, value='android:id/list')
driver.execute_script('gesture: scrollElementIntoView',
                      {'scrollableView': list_view.id, 'strategy': 'accessibility id', 'selector': 'Picker',
                       'percentage': 50, 'direction': 'up', 'maxCount': 3})

Sample app used to demonstrate below gesture is available here

Drag and Drop

JAVA

RemoteWebElement source = (RemoteWebElement) wait.until(elementToBeClickable(AppiumBy.accessibilityId("dragMe")));
RemoteWebElement destination = (RemoteWebElement) wait.until(elementToBeClickable(AppiumBy.accessibilityId("dropzone")));

driver.executeScript("gesture: dragAndDrop", Map.of("sourceId", source.getId(), "destinationId", destination.getId()));

PYTHON

el1 = driver.find_element(by=AppiumBy.ID, value='io.appium.android.apis:id/drag_dot_1')
el2 = driver.find_element(by=AppiumBy.ID, value='io.appium.android.apis:id/drag_dot_2')

driver.execute_script('gesture: dragAndDrop', {
    'sourceId': el1.id,
    'destinationId': el2.id,
})

Double Tap

RemoteWebElement doubleTapMe = (RemoteWebElement) driver.findElement(AppiumBy.accessibilityId("doubleTapMe"));

driver.executeScript("gesture: doubleTap", Map.of("elementId", doubleTapMe.getId()));

Long Press

Pressure has to be between 0 and 1.

RemoteWebElement longPress = (RemoteWebElement) driver.findElement(AppiumBy.accessibilityId("longpress"));

driver.executeScript("gesture: longPress", Map.of("elementId", longPress.getId(), "pressure", 0.5, "duration", 800));

WDIO

await driver.execute('gesture: dragAndDrop', { sourceId, destinationId });

Supported

  • Swipe Left, right, up and down
  • scrollElementIntoView
  • Drag and Drop
  • Double Tap
  • Long Press

TODO

  • zoom
  • multi finger swipe

appium-gestures-plugin's People

Contributors

dependabot[bot] avatar mmonfared avatar saikrishna321 avatar srinivasantarget avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

appium-gestures-plugin's Issues

Plugin doesn't work when installed locally

Hi,

I'm trying to implement a horizontal swipe gesture from right to left. The one currently implemented is from left to right.
But after installing the plugin locally I get the following error when trying to perform a gesture:

[HTTP]
[HTTP] ?[37m-->?[39m ?[37mPOST?[39m ?[37m/wd/hub/session/0c116edc-8cbd-40ee-aa25-224c1cae6945/plugin/actions/dragAndDrop?[39m
[HTTP] {"sourceId":"00000000-0000-004b-ffff-ffff0000005d","destinationId":"00000000-0000-004b-ffff-ffff00000040"}
[Appium] Request to /wd/hub/session/0c116edc-8cbd-40ee-aa25-224c1cae6945/plugin/actions/dragAndDrop would normally be proxied, but plugin gestures (sessionless) wants to handle it internally. We'll avoid proxying in this case.
[debug] [W3C (0c116edc)] Calling AppiumDriver.dragAndDrop() with args: ["00000000-0000-004b-ffff-ffff0000005d","00000000-0000-004b-ffff-ffff00000040","0c116edc-8cbd-40ee-aa25-224c1cae6945"]
[Appium] Plugins which can handle cmd 'dragAndDrop': gestures (sessionless)
[Appium] Plugin gestures (sessionless) is now handling cmd 'dragAndDrop'
Source { height: 71, width: 64, x: 58, y: 1391 } Destination { height: 170, width: 1080, x: 0, y: 221 }
[gestures] Performing Drag and Drop http://127.0.0.1:8200/wd/hub/session/51ee686a-154b-423e-99d6-10bf0b571bac/actions with {"actions":[{"id":"finger","type":"pointer","parameters":{"pointerType":"touch"},"actions":[{"duration":0,"x":90,"y":1426.5,"type":"pointerMove","origin":"viewport"},{"button":1,"type":"pointerDown"},{"duration":600,"type":"pause"},{"duration":600,"x":540,"y":306,"type":"pointerMove","origin":"viewport"},{"button":1,"type":"pointerUp"}]}]}
[gestures] Drag and Drop for android
[Appium] Command 'dragAndDrop' was not handled by the following beahviors or plugins, even though they were registered to handle it: ["default"]. The command was handled by these: ["gestures (sessionless)"].
[debug] [W3C (0c116edc)] Encountered internal error running command: Error: Request failed with status code 400
[debug] [W3C (0c116edc)] at createError (/Users/zakaria.boutami/Repos/QA/appium-gestures-plugin/node_modules/axios/lib/core/createError.js:16:15)
[debug] [W3C (0c116edc)] at settle (/Users/zakaria.boutami/Repos/QA/appium-gestures-plugin/node_modules/axios/lib/core/settle.js:17:12)
[debug] [W3C (0c116edc)] at IncomingMessage.handleStreamEnd (/Users/zakaria.boutami/Repos/QA/appium-gestures-plugin/node_modules/axios/lib/adapters/http.js:269:11)
[debug] [W3C (0c116edc)] at IncomingMessage.emit (node:events:402:35)
[debug] [W3C (0c116edc)] at endReadableNT (node:internal/streams/readable:1340:12)
[debug] [W3C (0c116edc)] at processTicksAndRejections (node:internal/process/task_queues:83:21)
[HTTP] <-- POST /wd/hub/session/0c116edc-8cbd-40ee-aa25-224c1cae6945/plugin/actions/dragAndDrop 500 701 ms - 680
[HTTP]

This also happens when installing locally the original version of the plugin without any modification

.withArgument(GeneralServerFlag.USE_PLUGINS, "gestures,element-wait") causing connection problem with apple device

I am using the following method to invoke the Appium Server and connect to Android and Apple devices.

public AppiumDriverLocalService GetAppiumService(){
        GlobalParams params = new GlobalParams();
        return AppiumDriverLocalService.buildService(new AppiumServiceBuilder()
                .withIPAddress("127.0.0.1")
                .withAppiumJS(new File("/usr/local/lib/node_modules/appium/build/lib/main.js"))
                .usingDriverExecutable(new File("/usr/local/bin/node"))
                .usingAnyFreePort() //.usingPort(4723)
                .withTimeout(Duration.ofSeconds(40)) // to prevent failing to startLocally error
//                .withArgument(GeneralServerFlag.USE_PLUGINS, "gestures,element-wait") // <<<------- or comma separated list
//                .withArgument(GeneralServerFlag.USE_PLUGINS, "element-wait")  // <<<-------
                .withArgument(GeneralServerFlag.SESSION_OVERRIDE) // session clobbering. new session takes over even the old still running
                .withArgument(GeneralServerFlag.LOCAL_TIMEZONE)
                .withLogFile(new File(params.getPlatformName() + "_"+ params.getDeviceName() + File.separator + "Server.log")));
}

With Android device this line
withArgument(GeneralServerFlag.USE_PLUGINS, "gestures,element-wait")
is causing NO problem. But with apple device, it is causing this error...

` Given launch the app # stepdef.ActivationStepDef.launchTheApp()
Given user is in landing page # stepdef.ActivationStepDef.userIsInLandingPage()
org.openqa.selenium.WebDriverException: org.openqa.selenium.WebDriverException: An unknown server-side error occurred while processing the command. Original error: Cannot read properties of undefined (reading 'jwproxy')
Build info: version: '4.9.1', revision: 'eb2032df7f'
System info: os.name: 'Mac OS X', os.arch: 'x86_64', os.version: '10.16', java.version: '15.0.2'
Driver info: io.appium.java_client.ios.IOSDriver
Command: [6fb9f7ee-c3f9-41f7-936b-e05eb4f71848, findElement {using=accessibility id, value=Get Started}]
Capabilities {appium:automationName: XCuiTest, appium:bundleId: com.zimperium.zIPS, appium:databaseEnabled: false, appium:deviceName: iPhone, appium:javascriptEnabled: true, appium:locationContextEnabled: false, appium:networkConnectionEnabled: false, appium:newCommandTimeout: 120, appium:takesScreenshot: true, appium:udid: 00008020-001428810A88002E, appium:updatedWDABundleId: com.zips.io, appium:wdaLocalPort: 10001, appium:webStorageEnabled: false, appium:xcodeOrgId: ZPBUXYR5Q9, appium:xcodeSigningId: iPhone Developer, platformName: IOS}
Session ID: 6fb9f7ee-c3f9-41f7-936b-e05eb4f71848
at io.appium.java_client.pagefactory.AppiumElementLocator$WaitingFunction.apply(AppiumElementLocator.java:191)
at io.appium.java_client.pagefactory.AppiumElementLocator$WaitingFunction.apply(AppiumElementLocator.java:164)
at org.openqa.selenium.support.ui.FluentWait.until(FluentWait.java:208)
at io.appium.java_client.pagefactory.AppiumElementLocator.waitFor(AppiumElementLocator.java:98)
at io.appium.java_client.pagefactory.AppiumElementLocator.findElement(AppiumElementLocator.java:118)
at io.appium.java_client.pagefactory.interceptors.InterceptorOfASingleElement.intercept(InterceptorOfASingleElement.java:59)
at org.openqa.selenium.remote.RemoteWebElement$$EnhancerByCGLIB$$d27c0df4.getAttribute()
at org.openqa.selenium.support.ui.ExpectedConditions.getAttributeOrCssValue(ExpectedConditions.java:1182)
at org.openqa.selenium.support.ui.ExpectedConditions.access$100(ExpectedConditions.java:40)
at org.openqa.selenium.support.ui.ExpectedConditions$40.apply(ExpectedConditions.java:1130)
at org.openqa.selenium.support.ui.ExpectedConditions$40.apply(ExpectedConditions.java:1127)
at org.openqa.selenium.support.ui.FluentWait.until(FluentWait.java:208)
at pages.BasePage.waitForVisibility(BasePage.java:131)
at pages.BasePage.isDisplayed(BasePage.java:199)
at pages.ActivationPage.verifyGetStartedBtn(ActivationPage.java:207)
at stepdef.ActivationStepDef.userIsInLandingPage(ActivationStepDef.java:21)
at โœฝ.user is in landing page(file:///Users/venkatanutalapati/dev/IntelliJWorkspace/zimperiumzips/src/test/resources/features/Dashboard.feature:8)
Caused by: org.openqa.selenium.WebDriverException: An unknown server-side error occurred while processing the command. Original error: Cannot read properties of undefined (reading 'jwproxy')
Build info: version: '4.9.1', revision: 'eb2032df7f'
System info: os.name: 'Mac OS X', os.arch: 'x86_64', os.version: '10.16', java.version: '15.0.2'
Driver info: io.appium.java_client.ios.IOSDriver
Command: [6fb9f7ee-c3f9-41f7-936b-e05eb4f71848, findElement {using=accessibility id, value=Get Started}]
Capabilities {appium:automationName: XCuiTest, appium:bundleId: com.zimperium.zIPS, appium:databaseEnabled: false, appium:deviceName: iPhone, appium:javascriptEnabled: true, appium:locationContextEnabled: false, appium:networkConnectionEnabled: false, appium:newCommandTimeout: 120, appium:takesScreenshot: true, appium:udid: 00008020-001428810A88002E, appium:updatedWDABundleId: com.zips.io, appium:wdaLocalPort: 10001, appium:webStorageEnabled: false, appium:xcodeOrgId: ZPBUXYR5Q9, appium:xcodeSigningId: iPhone Developer, platformName: IOS}
Session ID: 6fb9f7ee-c3f9-41f7-936b-e05eb4f71848
at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:64)
at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:500)
at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:481)
at org.openqa.selenium.remote.codec.w3c.W3CHttpResponseCodec.createException(W3CHttpResponseCodec.java:200)
at org.openqa.selenium.remote.codec.w3c.W3CHttpResponseCodec.decode(W3CHttpResponseCodec.java:133)
at org.openqa.selenium.remote.codec.w3c.W3CHttpResponseCodec.decode(W3CHttpResponseCodec.java:53)
at org.openqa.selenium.remote.HttpCommandExecutor.execute(HttpCommandExecutor.java:193)
at io.appium.java_client.remote.AppiumCommandExecutor.execute(AppiumCommandExecutor.java:250)
at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:543)
at org.openqa.selenium.remote.ElementLocation$ElementFinder$2.findElement(ElementLocation.java:162)
at org.openqa.selenium.remote.ElementLocation.findElement(ElementLocation.java:66)
at org.openqa.selenium.remote.RemoteWebDriver.findElement(RemoteWebDriver.java:352)
at org.openqa.selenium.remote.RemoteWebDriver.findElement(RemoteWebDriver.java:344)
at io.appium.java_client.pagefactory.bys.builder.ByChained.lambda$getSearchingFunction$0(ByChained.java:41)
at org.openqa.selenium.support.ui.FluentWait.until(FluentWait.java:208)
at io.appium.java_client.pagefactory.bys.builder.ByChained.findElement(ByChained.java:75)
at org.openqa.selenium.remote.ElementLocation$ElementFinder$1.findElement(ElementLocation.java:136)
at org.openqa.selenium.remote.ElementLocation.findElement(ElementLocation.java:80)
at org.openqa.selenium.remote.RemoteWebDriver.findElement(RemoteWebDriver.java:352)
at org.openqa.selenium.remote.RemoteWebDriver.findElement(RemoteWebDriver.java:344)
at io.appium.java_client.pagefactory.bys.ContentMappedBy.findElement(ContentMappedBy.java:50)
at org.openqa.selenium.remote.ElementLocation$ElementFinder$1.findElement(ElementLocation.java:136)
at org.openqa.selenium.remote.ElementLocation.findElement(ElementLocation.java:80)
at org.openqa.selenium.remote.RemoteWebDriver.findElement(RemoteWebDriver.java:352)
at org.openqa.selenium.remote.RemoteWebDriver.findElement(RemoteWebDriver.java:344)
at io.appium.java_client.pagefactory.AppiumElementLocator.lambda$findElement$0(AppiumElementLocator.java:119)
at io.appium.java_client.pagefactory.AppiumElementLocator$WaitingFunction.apply(AppiumElementLocator.java:171)
at io.appium.java_client.pagefactory.AppiumElementLocator$WaitingFunction.apply(AppiumElementLocator.java:164)
at org.openqa.selenium.support.ui.FluentWait.until(FluentWait.java:208)
at io.appium.java_client.pagefactory.AppiumElementLocator.waitFor(AppiumElementLocator.java:98)
at io.appium.java_client.pagefactory.AppiumElementLocator.findElement(AppiumElementLocator.java:118)
at io.appium.java_client.pagefactory.interceptors.InterceptorOfASingleElement.intercept(InterceptorOfASingleElement.java:59)
at org.openqa.selenium.remote.RemoteWebElement$$EnhancerByCGLIB$$d27c0df4.getAttribute()
at org.openqa.selenium.support.ui.ExpectedConditions.getAttributeOrCssValue(ExpectedConditions.java:1182)
at org.openqa.selenium.support.ui.ExpectedConditions.access$100(ExpectedConditions.java:40)
at org.openqa.selenium.support.ui.ExpectedConditions$40.apply(ExpectedConditions.java:1130)
at org.openqa.selenium.support.ui.ExpectedConditions$40.apply(ExpectedConditions.java:1127)
at org.openqa.selenium.support.ui.FluentWait.until(FluentWait.java:208)
at pages.BasePage.waitForVisibility(BasePage.java:131)
at pages.BasePage.isDisplayed(BasePage.java:199)
at pages.ActivationPage.verifyGetStartedBtn(ActivationPage.java:207)
at stepdef.ActivationStepDef.userIsInLandingPage(ActivationStepDef.java:21)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:64)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:564)
at io.cucumber.java.Invoker.doInvoke(Invoker.java:66)
at io.cucumber.java.Invoker.invoke(Invoker.java:24)
at io.cucumber.java.AbstractGlueDefinition.invokeMethod(AbstractGlueDefinition.java:47)
at io.cucumber.java.JavaStepDefinition.execute(JavaStepDefinition.java:29)
at io.cucumber.core.runner.CoreStepDefinition.execute(CoreStepDefinition.java:66)
at io.cucumber.core.runner.PickleStepDefinitionMatch.runStep(PickleStepDefinitionMatch.java:63)
at io.cucumber.core.runner.ExecutionMode$1.execute(ExecutionMode.java:10)
at io.cucumber.core.runner.TestStep.executeStep(TestStep.java:86)
at io.cucumber.core.runner.TestStep.run(TestStep.java:57)
at io.cucumber.core.runner.PickleStepTestStep.run(PickleStepTestStep.java:51)
at io.cucumber.core.runner.TestCase.run(TestCase.java:95)
at io.cucumber.core.runner.Runner.runPickle(Runner.java:75)
at io.cucumber.testng.TestNGCucumberRunner.lambda$runScenario$1(TestNGCucumberRunner.java:132)
at io.cucumber.core.runtime.CucumberExecutionContext.lambda$runTestCase$3(CucumberExecutionContext.java:110)
at io.cucumber.core.runtime.RethrowingThrowableCollector.executeAndThrow(RethrowingThrowableCollector.java:23)
at io.cucumber.core.runtime.CucumberExecutionContext.runTestCase(CucumberExecutionContext.java:110)
at io.cucumber.testng.TestNGCucumberRunner.runScenario(TestNGCucumberRunner.java:129)
at runners.MyTestNGRunnerTest.scenario(MyTestNGRunnerTest.java:60)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:64)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:564)
at org.testng.internal.invokers.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:139)
at org.testng.internal.invokers.TestInvoker.invokeMethod(TestInvoker.java:677)
at org.testng.internal.invokers.TestInvoker.invokeTestMethod(TestInvoker.java:221)
at org.testng.internal.invokers.MethodRunner.runInSequence(MethodRunner.java:50)
at org.testng.internal.invokers.TestInvoker$MethodInvocationAgent.invoke(TestInvoker.java:969)
at org.testng.internal.invokers.TestInvoker.invokeTestMethods(TestInvoker.java:194)
at org.testng.internal.invokers.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:148)
at org.testng.internal.invokers.TestMethodWorker.run(TestMethodWorker.java:128)
at java.base/java.util.ArrayList.forEach(ArrayList.java:1511)
at org.testng.TestRunner.privateRun(TestRunner.java:829)
at org.testng.TestRunner.run(TestRunner.java:602)
at org.testng.SuiteRunner.runTest(SuiteRunner.java:437)
at org.testng.SuiteRunner$SuiteWorker.run(SuiteRunner.java:475)
at org.testng.internal.thread.ThreadUtil.lambda$execute$0(ThreadUtil.java:58)
at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:630)
at java.base/java.lang.Thread.run(Thread.java:832)

And Create Group Activation Link # stepdef.ActivationStepDef.createGroupActivation()
When user selects "Get Started" option # stepdef.ActivationStepDef.userSelectsOption(java.lang.String)
And user selects "Login with Activation Link" # stepdef.ActivationStepDef.userSelects(java.lang.String)
And user enters activation link # stepdef.ActivationStepDef.userEntersActivationLink()
And user taps "continue" option # stepdef.ActivationStepDef.userTapsOption(java.lang.String)
And user allows "All the Permission" # stepdef.ActivationStepDef.userAllows(java.lang.String)
And user allows device setting "permissions" # stepdef.ActivationStepDef.userAllowsDeviceSetting(java.lang.String)
Then user should see "DashBoard" page # stepdef.ActivationStepDef.userShouldSeePage(java.lang.String)

org.openqa.selenium.WebDriverException: org.openqa.selenium.WebDriverException: An unknown server-side error occurred while processing the command. Original error: Cannot read properties of undefined (reading 'jwproxy')
Build info: version: '4.9.1', revision: 'eb2032df7f'
System info: os.name: 'Mac OS X', os.arch: 'x86_64', os.version: '10.16', java.version: '15.0.2'
Driver info: io.appium.java_client.ios.IOSDriver
Command: [6fb9f7ee-c3f9-41f7-936b-e05eb4f71848, findElement {using=accessibility id, value=Get Started}]
Capabilities {appium:automationName: XCuiTest, appium:bundleId: com.zimperium.zIPS, appium:databaseEnabled: false, appium:deviceName: iPhone, appium:javascriptEnabled: true, appium:locationContextEnabled: false, appium:networkConnectionEnabled: false, appium:newCommandTimeout: 120, appium:takesScreenshot: true, appium:udid: 00008020-001428810A88002E, appium:updatedWDABundleId: com.zips.io, appium:wdaLocalPort: 10001, appium:webStorageEnabled: false, appium:xcodeOrgId: ZPBUXYR5Q9, appium:xcodeSigningId: iPhone Developer, platformName: IOS}
Session ID: 6fb9f7ee-c3f9-41f7-936b-e05eb4f71848

at io.appium.java_client.pagefactory.AppiumElementLocator$WaitingFunction.apply(AppiumElementLocator.java:191)
at io.appium.java_client.pagefactory.AppiumElementLocator$WaitingFunction.apply(AppiumElementLocator.java:164)
at org.openqa.selenium.support.ui.FluentWait.until(FluentWait.java:208)
at io.appium.java_client.pagefactory.AppiumElementLocator.waitFor(AppiumElementLocator.java:98)
at io.appium.java_client.pagefactory.AppiumElementLocator.findElement(AppiumElementLocator.java:118)
at io.appium.java_client.pagefactory.interceptors.InterceptorOfASingleElement.intercept(InterceptorOfASingleElement.java:59)
at org.openqa.selenium.remote.RemoteWebElement$$EnhancerByCGLIB$$d27c0df4.getAttribute(<generated>)
at org.openqa.selenium.support.ui.ExpectedConditions.getAttributeOrCssValue(ExpectedConditions.java:1182)
at org.openqa.selenium.support.ui.ExpectedConditions.access$100(ExpectedConditions.java:40)
at org.openqa.selenium.support.ui.ExpectedConditions$40.apply(ExpectedConditions.java:1130)
at org.openqa.selenium.support.ui.ExpectedConditions$40.apply(ExpectedConditions.java:1127)
at org.openqa.selenium.support.ui.FluentWait.until(FluentWait.java:208)
at pages.BasePage.waitForVisibility(BasePage.java:131)
at pages.BasePage.isDisplayed(BasePage.java:199)
at pages.ActivationPage.verifyGetStartedBtn(ActivationPage.java:207)
at stepdef.ActivationStepDef.userIsInLandingPage(ActivationStepDef.java:21)
at โœฝ.user is in landing page(file:///Users/venkatanutalapati/dev/IntelliJWorkspace/zimperiumzips/src/test/resources/features/Dashboard.feature:8)

Caused by: org.openqa.selenium.WebDriverException: An unknown server-side error occurred while processing the command. Original error: Cannot read properties of undefined (reading 'jwproxy')
Build info: version: '4.9.1', revision: 'eb2032df7f'
System info: os.name: 'Mac OS X', os.arch: 'x86_64', os.version: '10.16', java.version: '15.0.2'
Driver info: io.appium.java_client.ios.IOSDriver
Command: [6fb9f7ee-c3f9-41f7-936b-e05eb4f71848, findElement {using=accessibility id, value=Get Started}]
Capabilities {appium:automationName: XCuiTest, appium:bundleId: com.zimperium.zIPS, appium:databaseEnabled: false, appium:deviceName: iPhone, appium:javascriptEnabled: true, appium:locationContextEnabled: false, appium:networkConnectionEnabled: false, appium:newCommandTimeout: 120, appium:takesScreenshot: true, appium:udid: 00008020-001428810A88002E, appium:updatedWDABundleId: com.zips.io, appium:wdaLocalPort: 10001, appium:webStorageEnabled: false, appium:xcodeOrgId: ZPBUXYR5Q9, appium:xcodeSigningId: iPhone Developer, platformName: IOS}
Session ID: 6fb9f7ee-c3f9-41f7-936b-e05eb4f71848
at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:64)
at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:500)
at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:481)
at org.openqa.selenium.remote.codec.w3c.W3CHttpResponseCodec.createException(W3CHttpResponseCodec.java:200)
at org.openqa.selenium.remote.codec.w3c.W3CHttpResponseCodec.decode(W3CHttpResponseCodec.java:133)
at org.openqa.selenium.remote.codec.w3c.W3CHttpResponseCodec.decode(W3CHttpResponseCodec.java:53)
at org.openqa.selenium.remote.HttpCommandExecutor.execute(HttpCommandExecutor.java:193)
at io.appium.java_client.remote.AppiumCommandExecutor.execute(AppiumCommandExecutor.java:250)
at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:543)
at org.openqa.selenium.remote.ElementLocation$ElementFinder$2.findElement(ElementLocation.java:162)
at org.openqa.selenium.remote.ElementLocation.findElement(ElementLocation.java:66)
at org.openqa.selenium.remote.RemoteWebDriver.findElement(RemoteWebDriver.java:352)
at org.openqa.selenium.remote.RemoteWebDriver.findElement(RemoteWebDriver.java:344)
at io.appium.java_client.pagefactory.bys.builder.ByChained.lambda$getSearchingFunction$0(ByChained.java:41)
at org.openqa.selenium.support.ui.FluentWait.until(FluentWait.java:208)
at io.appium.java_client.pagefactory.bys.builder.ByChained.findElement(ByChained.java:75)
at org.openqa.selenium.remote.ElementLocation$ElementFinder$1.findElement(ElementLocation.java:136)
at org.openqa.selenium.remote.ElementLocation.findElement(ElementLocation.java:80)
at org.openqa.selenium.remote.RemoteWebDriver.findElement(RemoteWebDriver.java:352)
at org.openqa.selenium.remote.RemoteWebDriver.findElement(RemoteWebDriver.java:344)
at io.appium.java_client.pagefactory.bys.ContentMappedBy.findElement(ContentMappedBy.java:50)
at org.openqa.selenium.remote.ElementLocation$ElementFinder$1.findElement(ElementLocation.java:136)
at org.openqa.selenium.remote.ElementLocation.findElement(ElementLocation.java:80)
at org.openqa.selenium.remote.RemoteWebDriver.findElement(RemoteWebDriver.java:352)
at org.openqa.selenium.remote.RemoteWebDriver.findElement(RemoteWebDriver.java:344)
at io.appium.java_client.pagefactory.AppiumElementLocator.lambda$findElement$0(AppiumElementLocator.java:119)
at io.appium.java_client.pagefactory.AppiumElementLocator$WaitingFunction.apply(AppiumElementLocator.java:171)
at io.appium.java_client.pagefactory.AppiumElementLocator$WaitingFunction.apply(AppiumElementLocator.java:164)
at org.openqa.selenium.support.ui.FluentWait.until(FluentWait.java:208)
at io.appium.java_client.pagefactory.AppiumElementLocator.waitFor(AppiumElementLocator.java:98)
at io.appium.java_client.pagefactory.AppiumElementLocator.findElement(AppiumElementLocator.java:118)
at io.appium.java_client.pagefactory.interceptors.InterceptorOfASingleElement.intercept(InterceptorOfASingleElement.java:59)
at org.openqa.selenium.remote.RemoteWebElement$$EnhancerByCGLIB$$d27c0df4.getAttribute()
at org.openqa.selenium.support.ui.ExpectedConditions.getAttributeOrCssValue(ExpectedConditions.java:1182)
at org.openqa.selenium.support.ui.ExpectedConditions.access$100(ExpectedConditions.java:40)
at org.openqa.selenium.support.ui.ExpectedConditions$40.apply(ExpectedConditions.java:1130)
at org.openqa.selenium.support.ui.ExpectedConditions$40.apply(ExpectedConditions.java:1127)
at org.openqa.selenium.support.ui.FluentWait.until(FluentWait.java:208)
at pages.BasePage.waitForVisibility(BasePage.java:131)
at pages.BasePage.isDisplayed(BasePage.java:199)
at pages.ActivationPage.verifyGetStartedBtn(ActivationPage.java:207)
at stepdef.ActivationStepDef.userIsInLandingPage(ActivationStepDef.java:21)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:64)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:564)
at io.cucumber.java.Invoker.doInvoke(Invoker.java:66)
at io.cucumber.java.Invoker.invoke(Invoker.java:24)
at io.cucumber.java.AbstractGlueDefinition.invokeMethod(AbstractGlueDefinition.java:47)
at io.cucumber.java.JavaStepDefinition.execute(JavaStepDefinition.java:29)
at io.cucumber.core.runner.CoreStepDefinition.execute(CoreStepDefinition.java:66)
at io.cucumber.core.runner.PickleStepDefinitionMatch.runStep(PickleStepDefinitionMatch.java:63)
at io.cucumber.core.runner.ExecutionMode$1.execute(ExecutionMode.java:10)
at io.cucumber.core.runner.TestStep.executeStep(TestStep.java:86)
at io.cucumber.core.runner.TestStep.run(TestStep.java:57)
at io.cucumber.core.runner.PickleStepTestStep.run(PickleStepTestStep.java:51)
at io.cucumber.core.runner.TestCase.run(TestCase.java:95)
at io.cucumber.core.runner.Runner.runPickle(Runner.java:75)
at io.cucumber.testng.TestNGCucumberRunner.lambda$runScenario$1(TestNGCucumberRunner.java:132)
at io.cucumber.core.runtime.CucumberExecutionContext.lambda$runTestCase$3(CucumberExecutionContext.java:110)
at io.cucumber.core.runtime.RethrowingThrowableCollector.executeAndThrow(RethrowingThrowableCollector.java:23)
at io.cucumber.core.runtime.CucumberExecutionContext.runTestCase(CucumberExecutionContext.java:110)
at io.cucumber.testng.TestNGCucumberRunner.runScenario(TestNGCucumberRunner.java:129)
at runners.MyTestNGRunnerTest.scenario(MyTestNGRunnerTest.java:60)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:64)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:564)
at org.testng.internal.invokers.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:139)
at org.testng.internal.invokers.TestInvoker.invokeMethod(TestInvoker.java:677)
at org.testng.internal.invokers.TestInvoker.invokeTestMethod(TestInvoker.java:221)
at org.testng.internal.invokers.MethodRunner.runInSequence(MethodRunner.java:50)
at org.testng.internal.invokers.TestInvoker$MethodInvocationAgent.invoke(TestInvoker.java:969)
at org.testng.internal.invokers.TestInvoker.invokeTestMethods(TestInvoker.java:194)
at org.testng.internal.invokers.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:148)
at org.testng.internal.invokers.TestMethodWorker.run(TestMethodWorker.java:128)
at java.base/java.util.ArrayList.forEach(ArrayList.java:1511)
at org.testng.TestRunner.privateRun(TestRunner.java:829)
at org.testng.TestRunner.run(TestRunner.java:602)
at org.testng.SuiteRunner.runTest(SuiteRunner.java:437)
at org.testng.SuiteRunner$SuiteWorker.run(SuiteRunner.java:475)
at org.testng.internal.thread.ThreadUtil.lambda$execute$0(ThreadUtil.java:58)
at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:630)
at java.base/java.lang.Thread.run(Thread.java:832)

`
I am not able to avail the plugin feature with apple device. Will you please suggest a solution or the cause of the problem, if I am doing some thing wrong ?

What if the WebElement I am using was not assigned with an Id ?

@saikrishna321
Hello Sai;
Let us say I want to do swiping of a WebElement, which was not assigned by Id attribute ?
It is possible since we are testing a Flutter based app, which offers a little less freedom to Developers and some times(rather mostly) does not assign 'id' attribute when you check the WebElement in the AppiumInspector. At the most it would offer accessibilityId, and almost all the time, the 'type' of the WebElement or so called 'tag' of the mark up.

RemoteWebElement slider = (RemoteWebElement) driver.findElement(AppiumBy.accessibilityId("listview"));
driver.executeScript("gesture: swipe", ImmutableMap.of("elementId", slider.getId(), "percentage", 50, "direction", "up"));

Will we be able to use the above code for swiping action ???
Thanks a lot,

Installing the appium-gesture-plugin does have any other side effects ?

I am running appium ver 2.0.0-beta66 and java-client ver8.5,Node ver18.15.0 JDK 15 on Mac Ventura ver 13.3.1a.

I have a legacy gestures code using TouchAction classes which works sporadically on Android. iOS is little bit more consistent. I have culled together code for all the swipe/scroll, tap, long press methods using the W3cAction classes like Sequence etc.,.Also collected code for all the above methods using gesture plugin too.

Before jumping the gun by running the command
appium plugin update gestures --unsafe
to install the gesture plugin, I am thinking about the features I may lose by installing the gestures plugin.

  • Could I be able to run the code with legacy code with 'TouchAction' class, until it's support is fully removed ?
  • Can I use the code I collected for swipe/scroll/tap methods using W3cAction classes from org.openqa.selenium.interactions package ?

Appium 2.0 - appium-gestures-plugin - support for .net core

Hi Team,

We have framework built on .net core with appium 2.0 and I would want to use the plugins available.

Currently we are using appium-wait-plugin and removed the explicit waits within the scripts.

eg:
wait-plugin] Element with name strategy for Passcode field selector found.
[wait-plugin] Check if element is displayed
[debug] [XCUITestDriver@1040 (d327d853)] Matched โ€˜/element/04000000-0000-0000-A747-010000000000/displayedโ€™ to command name โ€˜elementDisplayedโ€™
[debug] [XCUITestDriver@1040 (d327d853)] Proxying [GET /element/04000000-0000-0000-A747-010000000000/displayed] to [GET http://127.0.0.1:8100/session/14ACBB8C-5909-4297-89AE-0120E197DFA8/element/04000000-0000-0000-A747-010000000000/displayed] with no body
โ  Waiting to find element with name strategy for Passcode field selector[debug] [XCUITestDriver@1040 (d327d853)] Got response with status 200: {โ€œvalueโ€:true,โ€œsessionIdโ€:โ€œ14ACBB8C-5909-4297-89AE-0120E197DFA8โ€}
[wait-plugin] Element is displayed!
:heavy_tick: Waiting to find element with name strategy for Passcode field selector
[AppiumDriver@75c5] Executing default handling behavior for command โ€˜findElementโ€™

Screen Shot 2023-02-15 at 12 37 52 pm

My Questions, Would this be same for gestures, as I see a different implementation under

WDIO
driver.addCommand(
'dragAndDrop',
command('POST', '/session/:sessionId/plugin/actions/dragAndDrop', {
command: 'dragAndDrop',
parameters: [
{
name: 'sourceId',
type: 'string',
description: 'a valid parameter',
required: true,
},
{
name: 'destinationId',
type: 'string',
description: 'a valid parameter',
required: true,
},
],
})
);
await driver.dragAndDrop(sourceId, destinationId);

[Swipe] Can we make MAGIC_NUMBER a parameter?

Hi, I found a problem with using swipe gesture in the app I test. When I want to swipe-up the start point is located on the bottom button and minimise the app instead of swiping it. It is because the scrollable element has a full screen height, there is no smaller scrollable element on this page so I can't change it.
I found in the source code that there is a MAGIC_NUMBER which decides about the offset of the starting point from the element (in this case screen) edge. It is hardcoded to 49. If we could make it as a parameter, or at least decrease its value to 40, it would help me a lot. Do you think you could do this?

unknown command

Getting this error
[HTTP] {"args":[{"elementId":"sub_title","direction":"up","percentage":50}],"script":"gesture: swipe"} [AppiumDriver@ab76] Plugins which can handle cmd 'execute': gestures [AppiumDriver@ab76] Plugin gestures is now handling cmd 'execute' [AndroidUiautomator2Driver@78af (bb800c48)] Got response with status 404: {"sessionId":null,"value":{"error":"unknown command","message":"The requested resource could not be found, or a request was received using an HTTP method that is not supported by the mapped resource","stacktrace":"io.appium.uiautomator2.common.exceptions.UnknownCommandException: The requested resource could not be found, or a request was received using an HTTP method that is not supported by the mapped resource\n\tat io.appium.uiautomator2.http.ServerHandler.channelRead(ServerHandler.java:84)\n\tat io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:366)\n\tat io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:352)\n\tat io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:345)\n\tat io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:102)\n\tat io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandler... [AppiumDriver@ab76] Command 'execute' was *not* handled by the following behaviours or plugins, even though they were registered to handle it: ["default"]. The command *was* handled by these: ["gestures"]. [HTTP] <-- POST /session/bb800c48-3fd1-42c3-b495-13be2c39fc99/execute/sync 404 68 ms - 3530

appium-gestures-plugin version 4.0.1
Appium version 2.5.1
uiautomator2 version 3.0.5

swipe function throws error

org.openqa.selenium.InvalidArgumentException: Parameters were incorrect. We wanted {"required":["elementId","percentage"]} and you sent ["percentage","elementId","direction"]
Build info: version: '4.8.1', revision: '8ebccac989'
System info: os.name: 'Windows 10', os.arch: 'amd64', os.version: '10.0', java.version: '19.0.2'
Driver info: io.appium.java_client.android.AndroidDriver
Command: [d2ea2f84-ded3-4b0d-9dc4-06029ec16ebd, swipe {percentage=50, elementId=00000000-0000-0362-ffff-ffff00000047, direction=up}]
Capabilities {appium:appActivity: com.vfm.MainActivity, appium:appPackage: com.vfm.sit, appium:automationName: UiAutomator2, appium:databaseEnabled: false, appium:desired: {appActivity: com.vfm.MainActivity, appPackage: com.vfm.sit, automationName: UiAutomator2, deviceName: emulator-5554, platformName: android, uiautomator2ServerReadTimeout: 10000}, appium:deviceApiLevel: 33, appium:deviceManufacturer: Google, appium:deviceModel: sdk_gphone64_x86_64, appium:deviceName: emulator-5554, appium:deviceScreenDensity: 420, appium:deviceScreenSize: 1080x2400, appium:deviceUDID: emulator-5554, appium:javascriptEnabled: true, appium:locationContextEnabled: false, appium:networkConnectionEnabled: true, appium:pixelRatio: 2.625, appium:platformVersion: 13, appium:statBarHeight: 136, appium:takesScreenshot: true, appium:uiautomator2ServerReadTimeout: 10000, appium:viewportRect: {height: 2065, left: 0, top: 136, width: 1080}, appium:warnings: {}, appium:webStorageEnabled: false, platformName: ANDROID}
Session ID: d2ea2f84-ded3-4b0d-9dc4-06029ec16ebd

          at java.base/jdk.internal.reflect.DirectConstructorHandleAccessor.newInstance(DirectConstructorHandleAccessor.java:67)
          at java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:500)
          at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:484)
          at org.openqa.selenium.remote.codec.w3c.W3CHttpResponseCodec.createException(W3CHttpResponseCodec.java:200)
          at org.openqa.selenium.remote.codec.w3c.W3CHttpResponseCodec.decode(W3CHttpResponseCodec.java:133)
          at org.openqa.selenium.remote.codec.w3c.W3CHttpResponseCodec.decode(W3CHttpResponseCodec.java:53)
          at org.openqa.selenium.remote.HttpCommandExecutor.execute(HttpCommandExecutor.java:184)
          at io.appium.java_client.remote.AppiumCommandExecutor.execute(AppiumCommandExecutor.java:262)
          at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:543)
          at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:598)
          at io.appium.java_client.AppiumDriver.execute(AppiumDriver.java:267)
          at org.tfa.appiumwrapper.MobileHelper.scroll(MobileHelper.java:84)
          at Screens.ProfileScreen.scrollToCommPreferences(ProfileScreen.java:63)
          at StepDefinitions.MyProfile.scrollToMyCommsPreferences(MyProfile.java:37)
          at โœฝ.Scroll to my comms preferences(file:///C:/Users/djagadeb/Repos/qe-automation-java-senchuri/VFM/src/test/resources/TestFeatures/LoginAndViewProfileDetails.feature:12)

[Feature Request] Support for more gestures

This plugin has really done a great job in easing the usage of gestures. It would be nice to see an upcoming release with the added support for common gestures such as:

  • Pinch/Spread (Zoom in and Zoom out)

  • Multi Finger Swipe

  • Rotate

  • Double Tap -> Implemented in v3.0.0

This would enable the users to solely rely on gestures-plugin for all the common gestures. I believe these addition will make the plugin even more better.

Support for Appium Flutter Driver

Hi,

Will this plugin work with appium flutter driver as the object identification and the operations are a little different when we use appium flutter driver.

Thanks,

Query : How to use single tap

Double tap can be used with below method, But how to use single tap?
RemoteWebElement doubleTapMe = (RemoteWebElement) driver.findElement(AppiumBy.accessibilityId("doubleTapMe"));
driver.executeScript("gesture: doubleTap", Map.of("elementId", doubleTapMe.getId()));

Install or update appium-gestures-plugin required for W3c Actions/Gestures implementation when using Appium 2.0

I am using Appium2.0.0-beta66 version. Since TouchAction class being used for the gesture/actions is being deprecated, I am supposed to install appium-gestures-plugin (from ) and use it.

When I try to run the command

$appium plugin install --source=npm appium-gestures-plugin
as was suggested, I am getting the message

โœ” Installing 'appium-gestures-plugin'
Error: โœ– A plugin named "gestures" is already installed. Did you mean to update?
I tried to check the installed plugins

$appium plugin list --installed
โœ” Listing installed plugins

Then ran this command:
$appium plugin update appium-gestures-plugin
I got back this message:
Error: โœ– The plugin "appium-gestures-plugin" was not installed, so can't be updated
How to update the existing '[email protected]' to [email protected] ?

scrollElementIntoView throws UnsupportedCommandException

Hi,
I am using appium-gestures-plugin to try out different gestures provided by it. I am able to successfully execute the gestures from this plugin like swipe, long press, and drag and drop but scrollElementIntoView is not working.
I have the following system configuration and libraries versions:
JDK 11.0.2
Appium 2.0.0-beta.71
appium-java-client 8.5.1
appium-gestures-plugin v2.0.0
selenium-java 4.9.1
Node v18.16.0
NPM 9.6.7
macOS Ventura 13.4

I am starting the server from commandline as appium --use-drivers=uiautomator2,xcuitest --use-plugins=gestures

Client Code Example:

//This code is for WDIO Native Android Demo APP 
WebElement swipeMenuBtn = waitForElementToBeVisible(getDriver(), AppiumBy.accessibilityId("Swipe"), 5000);
swipeMenuBtn.click();

RemoteWebElement scrollView = (RemoteWebElement) waitForElementToBePresent(getDriver(), AppiumBy.accessibilityId("Swipe-screen"), 5000);

        getDriver().executeScript("gesture: scrollElementIntoView", Map.of("scrollableView", scrollView.getId(),
                "strategy", "accessibility id",
                "selector", "WebdriverIO logo",
                "percentage", 50,
                "direction", "up",
                "maxCount", 3));

I have tested on both Android (with wdio native demo app)and iOS (built-in contacts app) but the scrollElementIntoView is not working, which throws following exception at the executeScript() statement.

org.openqa.selenium.UnsupportedCommandException: {"value":{"error":"unknown method","message":"Method is not implemented","stacktrace":"NotImplementedError: Method is not implemented\n    at AndroidUiautomator2Driver.execute (/Users/xxxx/.appium/node_modules/appium-uiautomator2-driver/node_modules/appium-android-driver/lib/commands/execute.js:13:11)\n    at commandExecutor (/Users/xxxx/.nvm/versions/node/v18.16.0/lib/node_modules/appium/node_modules/@appium/base-driver/lib/basedriver/driver.ts:106:18)\n    at /Users/xxxx/.nvm/versions/node/v18.16.0/lib/node_modules/appium/node_modules/async-lock/lib/index.js:171:12\n    at AsyncLock._promiseTry (/Users/xxxx/.nvm/versions/node/v18.16.0/lib/node_modules/appium/node_modules/async-lock/lib/index.js:304:31)\n    at exec (/Users/xxxx/.nvm/versions/node/v18.16.0/lib/node_modules/appium/node_modules/async-lock/lib/index.js:170:9)\n    at AsyncLock.acquire (/Users/xxxx/.nvm/versions/node/v18.16.0/lib/node_modules/appium/node_modules/async-lock/lib/index.js:187:3)\n    at AndroidUiautomator2Driver.executeCommand (/Users/xxxx/.nvm/versions/node/v18.16.0/lib/node_modules/appium/node_modules/@appium/base-driver/lib/basedriver/driver.ts:122:39)\n    at processTicksAndRejections (node:internal/process/task_queues:95:5)\n    at defaultBehavior (/Users/xxxx/.nvm/versions/node/v18.16.0/lib/node_modules/appium/lib/appium.js:684:14)\n    at GesturesPlugin.executeMethod (/Users/xxxx/.nvm/versions/node/v18.16.0/lib/node_modules/appium/node_modules/@appium/base-plugin/lib/plugin.js:73:14)\n    at GesturesPlugin.execute (/Users/xxxx/.appium/node_modules/appium-gestures-plugin/src/plugin.js:34:12)\n    at /Users/xxxx/.nvm/versions/node/v18.16.0/lib/node_modules/appium/lib/appium.js:734:18\n    at AppiumDriver.executeWrappedCommand (/Users/xxxx/.nvm/versions/node/v18.16.0/lib/node_modules/appium/lib/appium.js:774:16)\n    at AppiumDriver.executeCommand (/Users/xxxx/.nvm/versions/node/v18.16.0/lib/node_modules/appium/lib/appium.js:696:17)\n    at asyncHandler (/Users/xxxx/.nvm/versions/node/v18.16.0/lib/node_modules/appium/node_modules/@appium/base-driver/lib/protocol/protocol.js:393:19)"}}
Command duration or timeout: 65 milliseconds
Build info: version: '4.9.1', revision: 'eb2032df7f'
System info: os.name: 'Mac OS X', os.arch: 'x86_64', os.version: '10.16', java.version: '11.0.2'
Driver info: io.appium.java_client.android.AndroidDriver
Command: [e9fe4d33-4452-4307-af00-397dc3a3a2a0, executeScript {script=gesture: scrollElementIntoView, args=[{scrollableView=00000000-0000-0f10-ffff-ffff00000044, selector=WebdriverIO logo, strategy=accessibility id, maxCount=3, direction=up, percentage=50}]}]
Capabilities {appium:appActivity: com.wdiodemoapp.MainActivity, appium:appPackage: com.wdiodemoapp, appium:appUrl: /Users/xxxx/dev/appium/Appi..., appium:appWaitActivity: *, appium:autoGrantPermissions: true, appium:automationName: UIAutomator2, appium:databaseEnabled: false, appium:desired: {appActivity: com.wdiodemoapp.MainActivity, appPackage: com.wdiodemoapp, appUrl: /Users/xxxx/dev/appium/Appi..., appWaitActivity: *, autoGrantPermissions: true, automationName: UIAutomator2, newCommandTimeout: 180, platformName: ANDROID, udid: emulator-5554}, appium:deviceApiLevel: 33, appium:deviceManufacturer: Google, appium:deviceModel: sdk_gphone64_x86_64, appium:deviceName: emulator-5554, appium:deviceScreenDensity: 440, appium:deviceScreenSize: 1080x2340, appium:deviceUDID: emulator-5554, appium:javascriptEnabled: true, appium:locationContextEnabled: false, appium:networkConnectionEnabled: true, appium:newCommandTimeout: 180, appium:pixelRatio: 2.75, appium:platformVersion: 13, appium:statBarHeight: 145, appium:takesScreenshot: true, appium:udid: emulator-5554, appium:viewportRect: {height: 1993, left: 0, top: 145, width: 1080}, appium:warnings: {}, appium:webStorageEnabled: false, platformName: ANDROID}
Session ID: e9fe4d33-4452-4307-af00-397dc3a3a2a0

	at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
	at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
	at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
	at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:490)
	at org.openqa.selenium.remote.ErrorHandler.createThrowable(ErrorHandler.java:217)
	at org.openqa.selenium.remote.ErrorHandler.throwIfResponseFailed(ErrorHandler.java:169)
	at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:578)
	at org.openqa.selenium.remote.RemoteWebDriver.executeScript(RemoteWebDriver.java:480)
	at com.itkhanz.tests.GesturesPluginTest.test_android_scrollElementIntoView(GesturesPluginTest.java:132)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
	at org.testng.internal.invokers.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:139)
	at org.testng.internal.invokers.TestInvoker.invokeMethod(TestInvoker.java:664)
	at org.testng.internal.invokers.TestInvoker.invokeTestMethod(TestInvoker.java:227)
	at org.testng.internal.invokers.MethodRunner.runInSequence(MethodRunner.java:50)
	at org.testng.internal.invokers.TestInvoker$MethodInvocationAgent.invoke(TestInvoker.java:957)
	at org.testng.internal.invokers.TestInvoker.invokeTestMethods(TestInvoker.java:200)
	at org.testng.internal.invokers.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:148)
	at org.testng.internal.invokers.TestMethodWorker.run(TestMethodWorker.java:128)
	at java.base/java.util.ArrayList.forEach(ArrayList.java:1540)
	at org.testng.TestRunner.privateRun(TestRunner.java:848)
	at org.testng.TestRunner.run(TestRunner.java:621)
	at org.testng.SuiteRunner.runTest(SuiteRunner.java:443)
	at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:437)
	at org.testng.SuiteRunner.privateRun(SuiteRunner.java:397)
	at org.testng.SuiteRunner.run(SuiteRunner.java:336)
	at org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:52)
	at org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:95)
	at org.testng.TestNG.runSuitesSequentially(TestNG.java:1280)
	at org.testng.TestNG.runSuitesLocally(TestNG.java:1200)
	at org.testng.TestNG.runSuites(TestNG.java:1114)
	at org.testng.TestNG.run(TestNG.java:1082)
	at com.intellij.rt.testng.IDEARemoteTestNG.run(IDEARemoteTestNG.java:66)
	at com.intellij.rt.testng.RemoteTestNGStarter.main(RemoteTestNGStarter.java:105)

Below you will find Appium Server logs:

Last login: Thu Jun 15 11:47:21 on ttys005
xxxx@xxxxxxxxxxxxxx ~ % appium --use-drivers=uiautomator2,xcuitest --use-plugins=gestures
[Appium] Attempting to load plugin gestures...
[debug] [Appium] Requiring plugin at /Users/xxxx/.appium/node_modules/appium-gestures-plugin
[Appium] Welcome to Appium v2.0.0-beta.71 (REV 552db40622bb7a82d9c6d67d2d6bcf3694b47e30)
[Appium] Non-default server args:
[Appium] {
[Appium]   useDrivers: [
[Appium]     'uiautomator2',
[Appium]     'xcuitest'
[Appium]   ],
[Appium]   usePlugins: [
[Appium]     'gestures'
[Appium]   ]
[Appium] }
[Appium] Attempting to load driver uiautomator2...
[debug] [Appium] Requiring driver at /Users/xxxx/.appium/node_modules/appium-uiautomator2-driver
[Appium] Attempting to load driver xcuitest...
[debug] [Appium] Requiring driver at /Users/xxxx/.appium/node_modules/appium-xcuitest-driver
[Appium] Appium REST http interface listener started on 0.0.0.0:4723
[Appium] Available drivers:
[Appium]   - [email protected] (automationName 'UiAutomator2')
[Appium]   - [email protected] (automationName 'XCUITest')
[Appium]   - [email protected] (automationName 'Espresso')
[Appium]   - [email protected] (automationName 'Safari')
[Appium]   - [email protected] (automationName 'Gecko')
[Appium]   - [email protected] (automationName 'Chromium')
[Appium] Available plugins:
[Appium]   - [email protected]
[Appium]   - [email protected] (ACTIVE)
[debug] [HTTP] Request idempotency key: 96742ef4-b051-47c9-83dd-98c289feb64f
[HTTP] --> POST /session
[HTTP] {"capabilities":{"firstMatch":[{}],"alwaysMatch":{"appium:appActivity":"com.wdiodemoapp.MainActivity","appium:appPackage":"com.wdiodemoapp","appium:appUrl":"/Users/xxxx/dev/appium/Appium-qavbox/src/main/resources/apps/Android-NativeDemoApp-0.4.0.apk","appium:appWaitActivity":"*","appium:autoGrantPermissions":true,"appium:automationName":"UIAutomator2","appium:newCommandTimeout":180,"appium:udid":"emulator-5554","platformName":"ANDROID"}}}
[debug] [AppiumDriver@402e] Calling AppiumDriver.createSession() with args: [null,null,{"firstMatch":[{}],"alwaysMatch":{"appium:appActivity":"com.wdiodemoapp.MainActivity","appium:appPackage":"com.wdiodemoapp","appium:appUrl":"/Users/xxxx/dev/appium/Appium-qavbox/src/main/resources/apps/Android-NativeDemoApp-0.4.0.apk","appium:appWaitActivity":"*","appium:autoGrantPermissions":true,"appium:automationName":"UIAutomator2","appium:newCommandTimeout":180,"appium:udid":"emulator-5554","platformName":"ANDROID"}}]
[debug] [AppiumDriver@402e] Event 'newSessionRequested' logged at 1686822676012 (11:51:16 GMT+0200 (Central European Summer Time))
[Appium] Attempting to find matching driver for automationName 'UIAutomator2' and platformName 'ANDROID'
[Appium] The 'uiautomator2' driver was installed and matched caps.
[Appium] Will require it at /Users/xxxx/.appium/node_modules/appium-uiautomator2-driver
[debug] [Appium] Requiring driver at /Users/xxxx/.appium/node_modules/appium-uiautomator2-driver
[AppiumDriver@402e] Appium v2.0.0-beta.71 creating new AndroidUiautomator2Driver (v2.25.2) session
[AppiumDriver@402e] Checking BaseDriver versions for Appium and AndroidUiautomator2Driver
[AppiumDriver@402e] Appium's BaseDriver version is 9.3.10
[AppiumDriver@402e] AndroidUiautomator2Driver's BaseDriver version is 9.3.10
[debug] [AndroidUiautomator2Driver@7c3b] Creating session with W3C capabilities: {
[debug] [AndroidUiautomator2Driver@7c3b]   "alwaysMatch": {
[debug] [AndroidUiautomator2Driver@7c3b]     "platformName": "ANDROID",
[debug] [AndroidUiautomator2Driver@7c3b]     "appium:appActivity": "com.wdiodemoapp.MainActivity",
[debug] [AndroidUiautomator2Driver@7c3b]     "appium:appPackage": "com.wdiodemoapp",
[debug] [AndroidUiautomator2Driver@7c3b]     "appium:appUrl": "/Users/xxxx/dev/appium/Appium-qavbox/src/main/resources/apps/Android-NativeDemoApp-0.4.0.apk",
[debug] [AndroidUiautomator2Driver@7c3b]     "appium:appWaitActivity": "*",
[debug] [AndroidUiautomator2Driver@7c3b]     "appium:autoGrantPermissions": true,
[debug] [AndroidUiautomator2Driver@7c3b]     "appium:automationName": "UIAutomator2",
[debug] [AndroidUiautomator2Driver@7c3b]     "appium:newCommandTimeout": 180,
[debug] [AndroidUiautomator2Driver@7c3b]     "appium:udid": "emulator-5554"
[debug] [AndroidUiautomator2Driver@7c3b]   },
[debug] [AndroidUiautomator2Driver@7c3b]   "firstMatch": [
[debug] [AndroidUiautomator2Driver@7c3b]     {}
[debug] [AndroidUiautomator2Driver@7c3b]   ]
[debug] [AndroidUiautomator2Driver@7c3b] }
[AndroidUiautomator2Driver@7c3b] The following capabilities were provided, but are not recognized by Appium:
[AndroidUiautomator2Driver@7c3b]   appUrl
[AndroidUiautomator2Driver@7c3b (7f6c418c)] Session created with session id: 7f6c418c-a38c-42b8-88db-7551832c4de3
[AndroidUiautomator2Driver@7c3b (7f6c418c)] Starting 'com.wdiodemoapp' directly on the device
[ADB] Found 2 'build-tools' folders under '/Users/xxxx/Library/Android/sdk' (newest first):
[ADB]     /Users/xxxx/Library/Android/sdk/build-tools/34.0.0-rc4
[ADB]     /Users/xxxx/Library/Android/sdk/build-tools/33.0.2
[ADB] Using 'adb' from '/Users/xxxx/Library/Android/sdk/platform-tools/adb'
[debug] [ADB] Running '/Users/xxxx/Library/Android/sdk/platform-tools/adb -P 5037 start-server'
[AndroidDriver] Retrieving device list
[debug] [ADB] Trying to find a connected android device
[debug] [ADB] Getting connected devices
[debug] [ADB] Connected devices: [{"udid":"emulator-5554","state":"device"}]
[AndroidDriver] Using device: emulator-5554
[ADB] Using 'adb' from '/Users/xxxx/Library/Android/sdk/platform-tools/adb'
[debug] [ADB] Running '/Users/xxxx/Library/Android/sdk/platform-tools/adb -P 5037 start-server'
[debug] [ADB] Setting device id to emulator-5554
[debug] [ADB] Running '/Users/xxxx/Library/Android/sdk/platform-tools/adb -P 5037 -s emulator-5554 shell getprop ro.build.version.sdk'
[debug] [ADB] Current device property 'ro.build.version.sdk': 33
[ADB] Getting device platform version
[debug] [ADB] Running '/Users/xxxx/Library/Android/sdk/platform-tools/adb -P 5037 -s emulator-5554 shell getprop ro.build.version.release'
[debug] [ADB] Current device property 'ro.build.version.release': 13
[debug] [ADB] Device API level: 33
[AndroidUiautomator2Driver@7c3b (7f6c418c)] Relaxing hidden api policy
[debug] [ADB] Running '/Users/xxxx/Library/Android/sdk/platform-tools/adb -P 5037 -s emulator-5554 shell 'settings put global hidden_api_policy_pre_p_apps 1;settings put global hidden_api_policy_p_apps 1;settings put global hidden_api_policy 1''
[AndroidDriver] No app sent in, not parsing package/activity
[debug] [ADB] Running '/Users/xxxx/Library/Android/sdk/platform-tools/adb -P 5037 -s emulator-5554 wait-for-device'
[debug] [ADB] Running '/Users/xxxx/Library/Android/sdk/platform-tools/adb -P 5037 -s emulator-5554 shell echo ping'
[debug] [AndroidDriver] Pushing settings apk to device...
[debug] [ADB] Getting install status for io.appium.settings
[debug] [ADB] Running '/Users/xxxx/Library/Android/sdk/platform-tools/adb -P 5037 -s emulator-5554 shell dumpsys package io.appium.settings'
[debug] [ADB] 'io.appium.settings' is installed
[debug] [ADB] Getting package info for 'io.appium.settings'
[debug] [ADB] Running '/Users/xxxx/Library/Android/sdk/platform-tools/adb -P 5037 -s emulator-5554 shell dumpsys package io.appium.settings'
[debug] [ADB] The version name of the installed 'io.appium.settings' is greater or equal to the application version name ('5.0.3' >= '5.0.3')
[debug] [ADB] There is no need to install/upgrade '/Users/xxxx/.appium/node_modules/appium-uiautomator2-driver/node_modules/io.appium.settings/apks/settings_apk-debug.apk'
[debug] [ADB] Getting IDs of all 'io.appium.settings' processes
[debug] [ADB] Running '/Users/xxxx/Library/Android/sdk/platform-tools/adb -P 5037 -s emulator-5554 shell 'pgrep --help; echo $?''
[debug] [ADB] Running '/Users/xxxx/Library/Android/sdk/platform-tools/adb -P 5037 -s emulator-5554 shell pgrep -f \(\[\[:blank:\]\]\|\^\)io\.appium\.settings\(\[\[:blank:\]\]\|\$\)'
[debug] [AndroidDriver] io.appium.settings is already running. There is no need to reset its permissions.
[debug] [Logcat] Starting logs capture with command: /Users/xxxx/Library/Android/sdk/platform-tools/adb -P 5037 -s emulator-5554 logcat -v threadtime
[debug] [AndroidUiautomator2Driver@7c3b (7f6c418c)] Forwarding UiAutomator2 Server port 6790 to local port 8208
[debug] [ADB] Forwarding system: 8208 to device: 6790
[debug] [ADB] Running '/Users/xxxx/Library/Android/sdk/platform-tools/adb -P 5037 -s emulator-5554 forward tcp:8208 tcp:6790'
[debug] [ADB] Getting install status for io.appium.uiautomator2.server
[debug] [ADB] Running '/Users/xxxx/Library/Android/sdk/platform-tools/adb -P 5037 -s emulator-5554 shell dumpsys package io.appium.uiautomator2.server'
[debug] [ADB] 'io.appium.uiautomator2.server' is installed
[debug] [ADB] Getting package info for 'io.appium.uiautomator2.server'
[debug] [ADB] Running '/Users/xxxx/Library/Android/sdk/platform-tools/adb -P 5037 -s emulator-5554 shell dumpsys package io.appium.uiautomator2.server'
[debug] [ADB] The version name of the installed 'io.appium.uiautomator2.server' is greater or equal to the application version name ('5.10.0' >= '5.10.0')
[debug] [AndroidUiautomator2Driver@7c3b (7f6c418c)] io.appium.uiautomator2.server installation state: sameVersionInstalled
[debug] [ADB] Checking app cert for /Users/xxxx/.appium/node_modules/appium-uiautomator2-driver/node_modules/appium-uiautomator2-server/apks/appium-uiautomator2-server-v5.10.0.apk
[ADB] Using 'apksigner.jar' from '/Users/xxxx/Library/Android/sdk/build-tools/34.0.0-rc4/lib/apksigner.jar'
[debug] [ADB] Starting apksigner: /Library/Java/JavaVirtualMachines/jdk-11.0.2.jdk/Contents/Home/bin/java -Xmx1024M -Xss1m -jar /Users/xxxx/Library/Android/sdk/build-tools/34.0.0-rc4/lib/apksigner.jar verify --print-certs /Users/xxxx/.appium/node_modules/appium-uiautomator2-driver/node_modules/appium-uiautomator2-server/apks/appium-uiautomator2-server-v5.10.0.apk
[debug] [ADB] apksigner stdout: Signer #1 certificate DN: [email protected], CN=Android, OU=Android, O=Android, L=Mountain View, ST=California, C=US
[debug] [ADB] Signer #1 certificate SHA-256 digest: a40da80a59d170caa950cf15c18c454d47a39b26989d8b640ecd745ba71bf5dc
[debug] [ADB] Signer #1 certificate SHA-1 digest: 61ed377e85d386a8dfee6b864bd85b0bfaa5af81
[debug] [ADB] Signer #1 certificate MD5 digest: e89b158e4bcf988ebd09eb83f5378e87
[debug] [ADB] 
[debug] [ADB] sha256 hash did match for 'appium-uiautomator2-server-v5.10.0.apk'
[ADB] '/Users/xxxx/.appium/node_modules/appium-uiautomator2-driver/node_modules/appium-uiautomator2-server/apks/appium-uiautomator2-server-v5.10.0.apk' is signed with the default certificate
[debug] [ADB] Getting install status for io.appium.uiautomator2.server.test
[debug] [ADB] Running '/Users/xxxx/Library/Android/sdk/platform-tools/adb -P 5037 -s emulator-5554 shell dumpsys package io.appium.uiautomator2.server.test'
[debug] [ADB] 'io.appium.uiautomator2.server.test' is installed
[debug] [ADB] Checking app cert for /Users/xxxx/.appium/node_modules/appium-uiautomator2-driver/node_modules/appium-uiautomator2-server/apks/appium-uiautomator2-server-debug-androidTest.apk
[debug] [ADB] Starting apksigner: /Library/Java/JavaVirtualMachines/jdk-11.0.2.jdk/Contents/Home/bin/java -Xmx1024M -Xss1m -jar /Users/xxxx/Library/Android/sdk/build-tools/34.0.0-rc4/lib/apksigner.jar verify --print-certs /Users/xxxx/.appium/node_modules/appium-uiautomator2-driver/node_modules/appium-uiautomator2-server/apks/appium-uiautomator2-server-debug-androidTest.apk
[debug] [ADB] apksigner stdout: Signer #1 certificate DN: [email protected], CN=Android, OU=Android, O=Android, L=Mountain View, ST=California, C=US
[debug] [ADB] Signer #1 certificate SHA-256 digest: a40da80a59d170caa950cf15c18c454d47a39b26989d8b640ecd745ba71bf5dc
[debug] [ADB] Signer #1 certificate SHA-1 digest: 61ed377e85d386a8dfee6b864bd85b0bfaa5af81
[debug] [ADB] Signer #1 certificate MD5 digest: e89b158e4bcf988ebd09eb83f5378e87
[debug] [ADB] 
[debug] [ADB] sha256 hash did match for 'appium-uiautomator2-server-debug-androidTest.apk'
[ADB] '/Users/xxxx/.appium/node_modules/appium-uiautomator2-driver/node_modules/appium-uiautomator2-server/apks/appium-uiautomator2-server-debug-androidTest.apk' is signed with the default certificate
[AndroidUiautomator2Driver@7c3b (7f6c418c)] Server packages are not going to be (re)installed
[debug] [AndroidUiautomator2Driver@7c3b (7f6c418c)] Waiting up to 30000ms for services to be available
[debug] [ADB] Running '/Users/xxxx/Library/Android/sdk/platform-tools/adb -P 5037 -s emulator-5554 shell pm list instrumentation'
[debug] [AndroidUiautomator2Driver@7c3b (7f6c418c)] Instrumentation target 'io.appium.uiautomator2.server.test/androidx.test.runner.AndroidJUnitRunner' is available
[ADB] Adding packages ["io.appium.settings","io.appium.uiautomator2.server","io.appium.uiautomator2.server.test"] to Doze whitelist
[debug] [ADB] Got the following command chunks to execute: [["dumpsys","deviceidle","whitelist","+io.appium.settings",";","dumpsys","deviceidle","whitelist","+io.appium.uiautomator2.server",";","dumpsys","deviceidle","whitelist","+io.appium.uiautomator2.server.test",";"]]
[debug] [ADB] Running '/Users/xxxx/Library/Android/sdk/platform-tools/adb -P 5037 -s emulator-5554 shell dumpsys deviceidle whitelist +io.appium.settings ; dumpsys deviceidle whitelist +io.appium.uiautomator2.server ; dumpsys deviceidle whitelist +io.appium.uiautomator2.server.test ;'
[debug] [AndroidUiautomator2Driver@7c3b (7f6c418c)] No app capability. Assuming it is already on the device
[debug] [ADB] Getting install status for com.wdiodemoapp
[debug] [ADB] Running '/Users/xxxx/Library/Android/sdk/platform-tools/adb -P 5037 -s emulator-5554 shell dumpsys package com.wdiodemoapp'
[debug] [ADB] 'com.wdiodemoapp' is installed
[debug] [ADB] Running '/Users/xxxx/Library/Android/sdk/platform-tools/adb -P 5037 -s emulator-5554 shell am force-stop com.wdiodemoapp'
[debug] [ADB] Running '/Users/xxxx/Library/Android/sdk/platform-tools/adb -P 5037 -s emulator-5554 shell pm clear com.wdiodemoapp'
[debug] [ADB] Running '/Users/xxxx/Library/Android/sdk/platform-tools/adb -P 5037 -s emulator-5554 shell dumpsys package com.wdiodemoapp'
[debug] [ADB] Retrieving requested permissions
[debug] [ADB] Retrieved 4 permissions from requested group
[debug] [ADB] Retrieving granted permissions
[debug] [ADB] Retrieved 3 permissions from install,runtime groups
[debug] [ADB] Granting permissions ["android.permission.POST_NOTIFICATIONS"] to 'com.wdiodemoapp'
[debug] [ADB] Got the following command chunks to execute: [["pm","grant","com.wdiodemoapp","android.permission.POST_NOTIFICATIONS",";"]]
[debug] [ADB] Running '/Users/xxxx/Library/Android/sdk/platform-tools/adb -P 5037 -s emulator-5554 shell pm grant com.wdiodemoapp android.permission.POST_NOTIFICATIONS ;'
[debug] [AndroidDriver] Performed fast reset on the installed 'com.wdiodemoapp' application (stop and clear)
[debug] [AndroidUiautomator2Driver@7c3b (7f6c418c)] Performing shallow cleanup of automation leftovers
[debug] [AndroidUiautomator2Driver@7c3b (7f6c418c)] No obsolete sessions have been detected (socket hang up)
[debug] [ADB] Running '/Users/xxxx/Library/Android/sdk/platform-tools/adb -P 5037 -s emulator-5554 shell am force-stop io.appium.uiautomator2.server.test'
[AndroidUiautomator2Driver@7c3b (7f6c418c)] Starting UIAutomator2 server 5.10.0
[AndroidUiautomator2Driver@7c3b (7f6c418c)] Using UIAutomator2 server from '/Users/xxxx/.appium/node_modules/appium-uiautomator2-driver/node_modules/appium-uiautomator2-server/apks/appium-uiautomator2-server-v5.10.0.apk' and test from '/Users/xxxx/.appium/node_modules/appium-uiautomator2-driver/node_modules/appium-uiautomator2-server/apks/appium-uiautomator2-server-debug-androidTest.apk'
[AndroidUiautomator2Driver@7c3b (7f6c418c)] Waiting up to 30000ms for UiAutomator2 to be online...
[debug] [ADB] Creating ADB subprocess with args: ["-P",5037,"-s","emulator-5554","shell","am","instrument","-w","-e","disableAnalytics",true,"io.appium.uiautomator2.server.test/androidx.test.runner.AndroidJUnitRunner"]
[debug] [AndroidUiautomator2Driver@7c3b (7f6c418c)] Matched '/status' to command name 'getStatus'
[debug] [AndroidUiautomator2Driver@7c3b (7f6c418c)] Proxying [GET /status] to [GET http://127.0.0.1:8208/status] with no body
[AndroidUiautomator2Driver@7c3b (7f6c418c)] socket hang up
[debug] [AndroidUiautomator2Driver@7c3b (7f6c418c)] Matched '/status' to command name 'getStatus'
[debug] [AndroidUiautomator2Driver@7c3b (7f6c418c)] Proxying [GET /status] to [GET http://127.0.0.1:8208/status] with no body
[AndroidUiautomator2Driver@7c3b (7f6c418c)] socket hang up
[debug] [Instrumentation] io.appium.uiautomator2.server.test.AppiumUiAutomator2Server:
[debug] [AndroidUiautomator2Driver@7c3b (7f6c418c)] Matched '/status' to command name 'getStatus'
[debug] [AndroidUiautomator2Driver@7c3b (7f6c418c)] Proxying [GET /status] to [GET http://127.0.0.1:8208/status] with no body
[AndroidUiautomator2Driver@7c3b (7f6c418c)] socket hang up
[debug] [AndroidUiautomator2Driver@7c3b (7f6c418c)] Matched '/status' to command name 'getStatus'
[debug] [AndroidUiautomator2Driver@7c3b (7f6c418c)] Proxying [GET /status] to [GET http://127.0.0.1:8208/status] with no body
[debug] [AndroidUiautomator2Driver@7c3b (7f6c418c)] Got response with status 200: {"sessionId":"None","value":{"message":"UiAutomator2 Server is ready to accept commands","ready":true}}
[debug] [AndroidUiautomator2Driver@7c3b (7f6c418c)] The initialization of the instrumentation process took 3085ms
[debug] [AndroidUiautomator2Driver@7c3b (7f6c418c)] Matched '/session' to command name 'createSession'
[debug] [AndroidUiautomator2Driver@7c3b (7f6c418c)] Proxying [POST /session] to [POST http://127.0.0.1:8208/session] with body: {"capabilities":{"firstMatch":[{"platform":"LINUX","webStorageEnabled":false,"takesScreenshot":true,"javascriptEnabled":true,"databaseEnabled":false,"networkConnectionEnabled":true,"locationContextEnabled":false,"warnings":{},"desired":{"platformName":"ANDROID","appActivity":"com.wdiodemoapp.MainActivity","appPackage":"com.wdiodemoapp","appUrl":"/Users/xxxx/dev/appium/Appium-qavbox/src/main/resources/apps/Android-NativeDemoApp-0.4.0.apk","appWaitActivity":"*","autoGrantPermissions":true,"automationName":"UIAutomator2","newCommandTimeout":180,"udid":"emulator-5554"},"platformName":"ANDROID","appActivity":"com.wdiodemoapp.MainActivity","appPackage":"com.wdiodemoapp","appUrl":"/Users/xxxx/dev/appium/Appium-qavbox/src/main/resources/apps/Android-NativeDemoApp-0.4.0.apk","appWaitActivity":"*","autoGrantPermissions":true,"automationName":"UIAutomator2","newCommandTimeout":180,"udid":"emulator-5554","deviceName":"emulator-5554","deviceUDID":"emulator-5554"}],"alwaysMatch":{}}}
[debug] [AndroidUiautomator2Driver@7c3b (7f6c418c)] Got response with status 200: {"sessionId":"677f1a57-d24a-4b69-95e1-9a469b48f372","value":{"capabilities":{"firstMatch":[{"platform":"LINUX","webStorageEnabled":false,"takesScreenshot":true,"javascriptEnabled":true,"databaseEnabled":false,"networkConnectionEnabled":true,"locationContextEnabled":false,"warnings":{},"desired":{"platformName":"ANDROID","appActivity":"com.wdiodemoapp.MainActivity","appPackage":"com.wdiodemoapp","appUrl":"/Users/xxxx/dev/appium/Appium-qavbox/src/main/resources/apps/Android-NativeDemoApp-0.4.0.apk","appWaitActivity":"*","autoGrantPermissions":true,"automationName":"UIAutomator2","newCommandTimeout":180,"udid":"emulator-5554"},"platformName":"ANDROID","appActivity":"com.wdiodemoapp.MainActivity","appPackage":"com.wdiodemoapp","appUrl":"/Users/xxxx/dev/appium/Appium-qavbox/src/main/resources/apps/Android-NativeDemoApp-0.4.0.apk","appWaitActivity":"*","autoGrantPermissions":true,"automationName":"UIAutomator2","newCommandTimeout":180,"udid":"emulator-5554","deviceName":"emulator-5554","deviceUDID":"emulator-555...
[AndroidUiautomator2Driver@7c3b (7f6c418c)] Determined the downstream protocol as 'W3C'
[debug] [AndroidUiautomator2Driver@7c3b (7f6c418c)] Proxying [GET /appium/device/info] to [GET http://127.0.0.1:8208/session/677f1a57-d24a-4b69-95e1-9a469b48f372/appium/device/info] with no body
[debug] [AndroidUiautomator2Driver@7c3b (7f6c418c)] Got response with status 200: {"sessionId":"677f1a57-d24a-4b69-95e1-9a469b48f372","value":{"androidId":"0ec863697b5e4073","apiVersion":"33","bluetooth":{"state":"OFF"},"brand":"google","carrierName":"T-Mobile","displayDensity":440,"locale":"en_US","manufacturer":"Google","model":"sdk_gphone64_x86_64","networks":[{"capabilities":{"SSID":null,"linkDownBandwidthKbps":4300,"linkUpstreamBandwidthKbps":1800,"networkCapabilities":"NET_CAPABILITY_MMS,NET_CAPABILITY_SUPL,NET_CAPABILITY_DUN,NET_CAPABILITY_FOTA,NET_CAPABILITY_IMS,NET_CAPABILITY_CBS,NET_CAPABILITY_INTERNET,NET_CAPABILITY_NOT_RESTRICTED,NET_CAPABILITY_TRUSTED,NET_CAPABILITY_NOT_VPN,NET_CAPABILITY_VALIDATED,NET_CAPABILITY_NOT_ROAMING,NET_CAPABILITY_NOT_CONGESTED,NET_CAPABILITY_NOT_SUSPENDED","signalStrength":-2147483648,"transportTypes":"TRANSPORT_CELLULAR"},"detailedState":"CONNECTED","extraInfo":"epc.tmobile.com","isAvailable":true,"isConnected":true,"isFailover":false,"isRoaming":false,"state":"CONNECTED","subtype":10,"subtypeName":"HSPA","type":0,"typeName":"MOBILE"},{"capabilit...
[debug] [ADB] Running '/Users/xxxx/Library/Android/sdk/platform-tools/adb -P 5037 -s emulator-5554 shell dumpsys window'
[AndroidDriver] Screen already unlocked, doing nothing
[AndroidUiautomator2Driver@7c3b (7f6c418c)] Starting 'com.wdiodemoapp/com.wdiodemoapp.MainActivity and waiting for 'com.wdiodemoapp/*'
[debug] [ADB] Running '/Users/xxxx/Library/Android/sdk/platform-tools/adb -P 5037 -s emulator-5554 shell am start -W -n com.wdiodemoapp/com.wdiodemoapp.MainActivity -S -a android.intent.action.MAIN -c android.intent.category.LAUNCHER -f 0x10200000'
[debug] [ADB] Waiting up to 20000ms for activity matching pkg: 'com.wdiodemoapp' and activity: '*' to be focused
[debug] [ADB] Possible activities, to be checked: '*', 'com.wdiodemoapp.*'
[debug] [ADB] Getting focused package and activity
[debug] [ADB] Running '/Users/xxxx/Library/Android/sdk/platform-tools/adb -P 5037 -s emulator-5554 shell dumpsys window displays'
[debug] [ADB] Found package: 'com.wdiodemoapp' and fully qualified activity name : 'com.wdiodemoapp.MainActivity'
[debug] [AndroidUiautomator2Driver@7c3b (7f6c418c)] Proxying [GET /appium/device/pixel_ratio] to [GET http://127.0.0.1:8208/session/677f1a57-d24a-4b69-95e1-9a469b48f372/appium/device/pixel_ratio] with no body
[debug] [AndroidUiautomator2Driver@7c3b (7f6c418c)] Got response with status 200: {"sessionId":"677f1a57-d24a-4b69-95e1-9a469b48f372","value":2.75}
[debug] [AndroidUiautomator2Driver@7c3b (7f6c418c)] Matched '/appium/device/system_bars' to command name 'getSystemBars'
[debug] [AndroidUiautomator2Driver@7c3b (7f6c418c)] Proxying [GET /appium/device/system_bars] to [GET http://127.0.0.1:8208/session/677f1a57-d24a-4b69-95e1-9a469b48f372/appium/device/system_bars] with no body
[debug] [AndroidUiautomator2Driver@7c3b (7f6c418c)] Got response with status 200: {"sessionId":"677f1a57-d24a-4b69-95e1-9a469b48f372","value":{"statusBar":145}}
[debug] [AndroidUiautomator2Driver@7c3b (7f6c418c)] Matched '/window/current/size' to command name 'getWindowSize'
[debug] [AndroidUiautomator2Driver@7c3b (7f6c418c)] Proxying [GET /window/current/size] to [GET http://127.0.0.1:8208/session/677f1a57-d24a-4b69-95e1-9a469b48f372/window/current/size] with no body
[debug] [AndroidUiautomator2Driver@7c3b (7f6c418c)] Got response with status 200: {"sessionId":"677f1a57-d24a-4b69-95e1-9a469b48f372","value":{"height":2138,"width":1080}}
[AppiumDriver@402e] New AndroidUiautomator2Driver session created successfully, session 7f6c418c-a38c-42b8-88db-7551832c4de3 added to master session list
[debug] [AppiumDriver@402e] Event 'newSessionStarted' logged at 1686822687333 (11:51:27 GMT+0200 (Central European Summer Time))
[AppiumDriver@402e] Promoting 1 sessionless plugins to be attached to session ID 7f6c418c-a38c-42b8-88db-7551832c4de3
[debug] [AndroidUiautomator2Driver@7c3b (7f6c418c)] Cached the protocol value 'W3C' for the new session 7f6c418c-a38c-42b8-88db-7551832c4de3
[debug] [AndroidUiautomator2Driver@7c3b (7f6c418c)] Responding to client with driver.createSession() result: {"capabilities":{"platform":"LINUX","webStorageEnabled":false,"takesScreenshot":true,"javascriptEnabled":true,"databaseEnabled":false,"networkConnectionEnabled":true,"locationContextEnabled":false,"warnings":{},"desired":{"platformName":"ANDROID","appActivity":"com.wdiodemoapp.MainActivity","appPackage":"com.wdiodemoapp","appUrl":"/Users/xxxx/dev/appium/Appium-qavbox/src/main/resources/apps/Android-NativeDemoApp-0.4.0.apk","appWaitActivity":"*","autoGrantPermissions":true,"automationName":"UIAutomator2","newCommandTimeout":180,"udid":"emulator-5554"},"platformName":"ANDROID","appActivity":"com.wdiodemoapp.MainActivity","appPackage":"com.wdiodemoapp","appUrl":"/Users/xxxx/dev/appium/Appium-qavbox/src/main/resources/apps/Android-NativeDemoApp-0.4.0.apk","appWaitActivity":"*","autoGrantPermissions":true,"automationName":"UIAutomator2","newCommandTimeout":180,"udid":"emulator-5554","deviceName":"emulator-5554","deviceUDID":"emulator-5554","deviceApiLevel":33,"platformVersion":"13","deviceScreenSize":"1080x2340...
[HTTP] <-- POST /session 200 11328 ms - 1278
[HTTP] 
[HTTP] --> POST /session/7f6c418c-a38c-42b8-88db-7551832c4de3/element
[HTTP] {"using":"accessibility id","value":"Swipe"}
[debug] [AndroidUiautomator2Driver@7c3b (7f6c418c)] Calling AppiumDriver.findElement() with args: ["accessibility id","Swipe","7f6c418c-a38c-42b8-88db-7551832c4de3"]
[debug] [AndroidUiautomator2Driver@7c3b (7f6c418c)] Valid locator strategies for this request: xpath, id, class name, accessibility id, css selector, -android uiautomator
[debug] [AndroidUiautomator2Driver@7c3b (7f6c418c)] Waiting up to 0 ms for condition
[debug] [AndroidUiautomator2Driver@7c3b (7f6c418c)] Matched '/element' to command name 'findElement'
[debug] [AndroidUiautomator2Driver@7c3b (7f6c418c)] Proxying [POST /element] to [POST http://127.0.0.1:8208/session/677f1a57-d24a-4b69-95e1-9a469b48f372/element] with body: {"strategy":"accessibility id","selector":"Swipe","context":"","multiple":false}
[AndroidUiautomator2Driver@7c3b (7f6c418c)] Got response with status 404: {"sessionId":"677f1a57-d24a-4b69-95e1-9a469b48f372","value":{"error":"no such element","message":"An element could not be located on the page using the given search parameters","stacktrace":"io.appium.uiautomator2.common.exceptions.ElementNotFoundException: An element could not be located on the page using the given search parameters\n\tat io.appium.uiautomator2.handler.FindElement.safeHandle(FindElement.java:70)\n\tat io.appium.uiautomator2.handler.request.SafeRequestHandler.handle(SafeRequestHandler.java:59)\n\tat io.appium.uiautomator2.server.AppiumServlet.handleRequest(AppiumServlet.java:270)\n\tat io.appium.uiautomator2.server.AppiumServlet.handleHttpRequest(AppiumServlet.java:264)\n\tat io.appium.uiautomator2.http.ServerHandler.channelRead(ServerHandler.java:68)\n\tat io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:366)\n\tat io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:352)\n\tat io.netty.chann...
[debug] [W3C] Matched W3C error code 'no such element' to NoSuchElementError
[debug] [AndroidUiautomator2Driver@7c3b (7f6c418c)] Encountered internal error running command: NoSuchElementError: An element could not be located on the page using the given search parameters.
[debug] [AndroidUiautomator2Driver@7c3b (7f6c418c)]     at AndroidUiautomator2Driver.findElOrEls (/Users/xxxx/.appium/node_modules/appium-uiautomator2-driver/node_modules/appium-android-driver/lib/commands/find.js:75:11)
[debug] [AndroidUiautomator2Driver@7c3b (7f6c418c)]     at processTicksAndRejections (node:internal/process/task_queues:95:5)
[debug] [AndroidUiautomator2Driver@7c3b (7f6c418c)]     at AndroidUiautomator2Driver.findElOrElsWithProcessing (/Users/xxxx/.nvm/versions/node/v18.16.0/lib/node_modules/appium/node_modules/@appium/base-driver/lib/basedriver/commands/find.ts:66:14)
[debug] [AndroidUiautomator2Driver@7c3b (7f6c418c)]     at AndroidUiautomator2Driver.findElement (/Users/xxxx/.nvm/versions/node/v18.16.0/lib/node_modules/appium/node_modules/@appium/base-driver/lib/basedriver/commands/find.ts:13:12)
[HTTP] <-- POST /session/7f6c418c-a38c-42b8-88db-7551832c4de3/element 404 88 ms - 867
[HTTP] 
[HTTP] --> POST /session/7f6c418c-a38c-42b8-88db-7551832c4de3/element
[HTTP] {"using":"accessibility id","value":"Swipe"}
[debug] [AndroidUiautomator2Driver@7c3b (7f6c418c)] Calling AppiumDriver.findElement() with args: ["accessibility id","Swipe","7f6c418c-a38c-42b8-88db-7551832c4de3"]
[debug] [AndroidUiautomator2Driver@7c3b (7f6c418c)] Valid locator strategies for this request: xpath, id, class name, accessibility id, css selector, -android uiautomator
[debug] [AndroidUiautomator2Driver@7c3b (7f6c418c)] Waiting up to 0 ms for condition
[debug] [AndroidUiautomator2Driver@7c3b (7f6c418c)] Matched '/element' to command name 'findElement'
[debug] [AndroidUiautomator2Driver@7c3b (7f6c418c)] Proxying [POST /element] to [POST http://127.0.0.1:8208/session/677f1a57-d24a-4b69-95e1-9a469b48f372/element] with body: {"strategy":"accessibility id","selector":"Swipe","context":"","multiple":false}
[debug] [AndroidUiautomator2Driver@7c3b (7f6c418c)] Got response with status 200: {"sessionId":"677f1a57-d24a-4b69-95e1-9a469b48f372","value":{"ELEMENT":"00000000-0000-0f2c-ffff-ffff00000029","element-6066-11e4-a52e-4f735466cecf":"00000000-0000-0f2c-ffff-ffff00000029"}}
[debug] [AndroidUiautomator2Driver@7c3b (7f6c418c)] Responding to client with driver.findElement() result: {"element-6066-11e4-a52e-4f735466cecf":"00000000-0000-0f2c-ffff-ffff00000029","ELEMENT":"00000000-0000-0f2c-ffff-ffff00000029"}
[HTTP] <-- POST /session/7f6c418c-a38c-42b8-88db-7551832c4de3/element 200 458 ms - 137
[HTTP] 
[HTTP] --> GET /session/7f6c418c-a38c-42b8-88db-7551832c4de3/element/00000000-0000-0f2c-ffff-ffff00000029/displayed
[HTTP] {}
[debug] [AndroidUiautomator2Driver@7c3b (7f6c418c)] Calling AppiumDriver.elementDisplayed() with args: ["00000000-0000-0f2c-ffff-ffff00000029","7f6c418c-a38c-42b8-88db-7551832c4de3"]
[debug] [AndroidUiautomator2Driver@7c3b (7f6c418c)] Matched '/element/00000000-0000-0f2c-ffff-ffff00000029/attribute/displayed' to command name 'getAttribute'
[debug] [AndroidUiautomator2Driver@7c3b (7f6c418c)] Proxying [GET /element/00000000-0000-0f2c-ffff-ffff00000029/attribute/displayed] to [GET http://127.0.0.1:8208/session/677f1a57-d24a-4b69-95e1-9a469b48f372/element/00000000-0000-0f2c-ffff-ffff00000029/attribute/displayed] with no body
[debug] [AndroidUiautomator2Driver@7c3b (7f6c418c)] Got response with status 200: {"sessionId":"677f1a57-d24a-4b69-95e1-9a469b48f372","value":"true"}
[debug] [AndroidUiautomator2Driver@7c3b (7f6c418c)] Responding to client with driver.elementDisplayed() result: true
[HTTP] <-- GET /session/7f6c418c-a38c-42b8-88db-7551832c4de3/element/00000000-0000-0f2c-ffff-ffff00000029/displayed 200 17 ms - 14
[HTTP] 
[HTTP] --> POST /session/7f6c418c-a38c-42b8-88db-7551832c4de3/element/00000000-0000-0f2c-ffff-ffff00000029/click
[HTTP] {"id":"00000000-0000-0f2c-ffff-ffff00000029"}
[debug] [AndroidUiautomator2Driver@7c3b (7f6c418c)] Calling AppiumDriver.click() with args: ["00000000-0000-0f2c-ffff-ffff00000029","7f6c418c-a38c-42b8-88db-7551832c4de3"]
[debug] [AndroidUiautomator2Driver@7c3b (7f6c418c)] Matched '/element/00000000-0000-0f2c-ffff-ffff00000029/click' to command name 'click'
[debug] [AndroidUiautomator2Driver@7c3b (7f6c418c)] Proxying [POST /element/00000000-0000-0f2c-ffff-ffff00000029/click] to [POST http://127.0.0.1:8208/session/677f1a57-d24a-4b69-95e1-9a469b48f372/element/00000000-0000-0f2c-ffff-ffff00000029/click] with body: {"element":"00000000-0000-0f2c-ffff-ffff00000029"}
[debug] [AndroidUiautomator2Driver@7c3b (7f6c418c)] Got response with status 200: {"sessionId":"677f1a57-d24a-4b69-95e1-9a469b48f372","value":null}
[debug] [AndroidUiautomator2Driver@7c3b (7f6c418c)] Responding to client with driver.click() result: null
[HTTP] <-- POST /session/7f6c418c-a38c-42b8-88db-7551832c4de3/element/00000000-0000-0f2c-ffff-ffff00000029/click 200 52 ms - 14
[HTTP] 
[HTTP] --> POST /session/7f6c418c-a38c-42b8-88db-7551832c4de3/element
[HTTP] {"using":"accessibility id","value":"Swipe-screen"}
[debug] [AndroidUiautomator2Driver@7c3b (7f6c418c)] Calling AppiumDriver.findElement() with args: ["accessibility id","Swipe-screen","7f6c418c-a38c-42b8-88db-7551832c4de3"]
[debug] [AndroidUiautomator2Driver@7c3b (7f6c418c)] Valid locator strategies for this request: xpath, id, class name, accessibility id, css selector, -android uiautomator
[debug] [AndroidUiautomator2Driver@7c3b (7f6c418c)] Waiting up to 0 ms for condition
[debug] [AndroidUiautomator2Driver@7c3b (7f6c418c)] Matched '/element' to command name 'findElement'
[debug] [AndroidUiautomator2Driver@7c3b (7f6c418c)] Proxying [POST /element] to [POST http://127.0.0.1:8208/session/677f1a57-d24a-4b69-95e1-9a469b48f372/element] with body: {"strategy":"accessibility id","selector":"Swipe-screen","context":"","multiple":false}
[AndroidUiautomator2Driver@7c3b (7f6c418c)] Got response with status 404: {"sessionId":"677f1a57-d24a-4b69-95e1-9a469b48f372","value":{"error":"no such element","message":"An element could not be located on the page using the given search parameters","stacktrace":"io.appium.uiautomator2.common.exceptions.ElementNotFoundException: An element could not be located on the page using the given search parameters\n\tat io.appium.uiautomator2.handler.FindElement.safeHandle(FindElement.java:70)\n\tat io.appium.uiautomator2.handler.request.SafeRequestHandler.handle(SafeRequestHandler.java:59)\n\tat io.appium.uiautomator2.server.AppiumServlet.handleRequest(AppiumServlet.java:270)\n\tat io.appium.uiautomator2.server.AppiumServlet.handleHttpRequest(AppiumServlet.java:264)\n\tat io.appium.uiautomator2.http.ServerHandler.channelRead(ServerHandler.java:68)\n\tat io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:366)\n\tat io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:352)\n\tat io.netty.chann...
[debug] [W3C] Matched W3C error code 'no such element' to NoSuchElementError
[debug] [AndroidUiautomator2Driver@7c3b (7f6c418c)] Encountered internal error running command: NoSuchElementError: An element could not be located on the page using the given search parameters.
[debug] [AndroidUiautomator2Driver@7c3b (7f6c418c)]     at AndroidUiautomator2Driver.findElOrEls (/Users/xxxx/.appium/node_modules/appium-uiautomator2-driver/node_modules/appium-android-driver/lib/commands/find.js:75:11)
[debug] [AndroidUiautomator2Driver@7c3b (7f6c418c)]     at processTicksAndRejections (node:internal/process/task_queues:95:5)
[debug] [AndroidUiautomator2Driver@7c3b (7f6c418c)]     at AndroidUiautomator2Driver.findElOrElsWithProcessing (/Users/xxxx/.nvm/versions/node/v18.16.0/lib/node_modules/appium/node_modules/@appium/base-driver/lib/basedriver/commands/find.ts:66:14)
[debug] [AndroidUiautomator2Driver@7c3b (7f6c418c)]     at AndroidUiautomator2Driver.findElement (/Users/xxxx/.nvm/versions/node/v18.16.0/lib/node_modules/appium/node_modules/@appium/base-driver/lib/basedriver/commands/find.ts:13:12)
[HTTP] <-- POST /session/7f6c418c-a38c-42b8-88db-7551832c4de3/element 404 40 ms - 867
[HTTP] 
[HTTP] --> POST /session/7f6c418c-a38c-42b8-88db-7551832c4de3/element
[HTTP] {"using":"accessibility id","value":"Swipe-screen"}
[debug] [AndroidUiautomator2Driver@7c3b (7f6c418c)] Calling AppiumDriver.findElement() with args: ["accessibility id","Swipe-screen","7f6c418c-a38c-42b8-88db-7551832c4de3"]
[debug] [AndroidUiautomator2Driver@7c3b (7f6c418c)] Valid locator strategies for this request: xpath, id, class name, accessibility id, css selector, -android uiautomator
[debug] [AndroidUiautomator2Driver@7c3b (7f6c418c)] Waiting up to 0 ms for condition
[debug] [AndroidUiautomator2Driver@7c3b (7f6c418c)] Matched '/element' to command name 'findElement'
[debug] [AndroidUiautomator2Driver@7c3b (7f6c418c)] Proxying [POST /element] to [POST http://127.0.0.1:8208/session/677f1a57-d24a-4b69-95e1-9a469b48f372/element] with body: {"strategy":"accessibility id","selector":"Swipe-screen","context":"","multiple":false}
[debug] [AndroidUiautomator2Driver@7c3b (7f6c418c)] Got response with status 200: {"sessionId":"677f1a57-d24a-4b69-95e1-9a469b48f372","value":{"ELEMENT":"00000000-0000-0f2c-ffff-ffff00000044","element-6066-11e4-a52e-4f735466cecf":"00000000-0000-0f2c-ffff-ffff00000044"}}
[debug] [AndroidUiautomator2Driver@7c3b (7f6c418c)] Responding to client with driver.findElement() result: {"element-6066-11e4-a52e-4f735466cecf":"00000000-0000-0f2c-ffff-ffff00000044","ELEMENT":"00000000-0000-0f2c-ffff-ffff00000044"}
[HTTP] <-- POST /session/7f6c418c-a38c-42b8-88db-7551832c4de3/element 200 1496 ms - 137
[HTTP] 
[HTTP] --> POST /session/7f6c418c-a38c-42b8-88db-7551832c4de3/execute/sync
[HTTP] {"script":"gesture: scrollElementIntoView","args":[{"scrollableView":"00000000-0000-0f2c-ffff-ffff00000044","selector":"WebdriverIO logo","strategy":"accessibility id","maxCount":3,"direction":"up","percentage":50}]}
[debug] [AndroidUiautomator2Driver@7c3b (7f6c418c)] Calling AppiumDriver.execute() with args: ["gesture: scrollElementIntoView",[{"scrollableView":"00000000-0000-0f2c-ffff-ffff00000044","selector":"WebdriverIO logo","strategy":"accessibility id","maxCount":3,"direction":"up","percentage":50}],"7f6c418c-a38c-42b8-88db-7551832c4de3"]
[AppiumDriver@402e] Plugins which can handle cmd 'execute': gestures
[AppiumDriver@402e] Plugin gestures is now handling cmd 'execute'
[Plugin [gestures]] Plugin did not know how to handle method 'gesture: scrollElementIntoView'. Passing control to next
[AppiumDriver@402e] Executing default handling behavior for command 'execute'
[debug] [AndroidUiautomator2Driver@7c3b (7f6c418c)] Encountered internal error running command: NotImplementedError: Method is not implemented
[debug] [AndroidUiautomator2Driver@7c3b (7f6c418c)]     at AndroidUiautomator2Driver.execute (/Users/xxxx/.appium/node_modules/appium-uiautomator2-driver/node_modules/appium-android-driver/lib/commands/execute.js:13:11)
[debug] [AndroidUiautomator2Driver@7c3b (7f6c418c)]     at commandExecutor (/Users/xxxx/.nvm/versions/node/v18.16.0/lib/node_modules/appium/node_modules/@appium/base-driver/lib/basedriver/driver.ts:106:18)
[debug] [AndroidUiautomator2Driver@7c3b (7f6c418c)]     at /Users/xxxx/.nvm/versions/node/v18.16.0/lib/node_modules/appium/node_modules/async-lock/lib/index.js:171:12
[debug] [AndroidUiautomator2Driver@7c3b (7f6c418c)]     at AsyncLock._promiseTry (/Users/xxxx/.nvm/versions/node/v18.16.0/lib/node_modules/appium/node_modules/async-lock/lib/index.js:304:31)
[debug] [AndroidUiautomator2Driver@7c3b (7f6c418c)]     at exec (/Users/xxxx/.nvm/versions/node/v18.16.0/lib/node_modules/appium/node_modules/async-lock/lib/index.js:170:9)
[debug] [AndroidUiautomator2Driver@7c3b (7f6c418c)]     at AsyncLock.acquire (/Users/xxxx/.nvm/versions/node/v18.16.0/lib/node_modules/appium/node_modules/async-lock/lib/index.js:187:3)
[debug] [AndroidUiautomator2Driver@7c3b (7f6c418c)]     at AndroidUiautomator2Driver.executeCommand (/Users/xxxx/.nvm/versions/node/v18.16.0/lib/node_modules/appium/node_modules/@appium/base-driver/lib/basedriver/driver.ts:122:39)
[debug] [AndroidUiautomator2Driver@7c3b (7f6c418c)]     at processTicksAndRejections (node:internal/process/task_queues:95:5)
[debug] [AndroidUiautomator2Driver@7c3b (7f6c418c)]     at defaultBehavior (/Users/xxxx/.nvm/versions/node/v18.16.0/lib/node_modules/appium/lib/appium.js:684:14)
[debug] [AndroidUiautomator2Driver@7c3b (7f6c418c)]     at GesturesPlugin.executeMethod (/Users/xxxx/.nvm/versions/node/v18.16.0/lib/node_modules/appium/node_modules/@appium/base-plugin/lib/plugin.js:73:14)
[debug] [AndroidUiautomator2Driver@7c3b (7f6c418c)]     at GesturesPlugin.execute (/Users/xxxx/.appium/node_modules/appium-gestures-plugin/src/plugin.js:34:12)
[debug] [AndroidUiautomator2Driver@7c3b (7f6c418c)]     at /Users/xxxx/.nvm/versions/node/v18.16.0/lib/node_modules/appium/lib/appium.js:734:18
[debug] [AndroidUiautomator2Driver@7c3b (7f6c418c)]     at AppiumDriver.executeWrappedCommand (/Users/xxxx/.nvm/versions/node/v18.16.0/lib/node_modules/appium/lib/appium.js:774:16)
[debug] [AndroidUiautomator2Driver@7c3b (7f6c418c)]     at AppiumDriver.executeCommand (/Users/xxxx/.nvm/versions/node/v18.16.0/lib/node_modules/appium/lib/appium.js:696:17)
[debug] [AndroidUiautomator2Driver@7c3b (7f6c418c)]     at asyncHandler (/Users/xxxx/.nvm/versions/node/v18.16.0/lib/node_modules/appium/node_modules/@appium/base-driver/lib/protocol/protocol.js:393:19)
[HTTP] <-- POST /session/7f6c418c-a38c-42b8-88db-7551832c4de3/execute/sync 405 30 ms - 2102
[HTTP] 
[HTTP] --> DELETE /session/7f6c418c-a38c-42b8-88db-7551832c4de3
[HTTP] {}
[debug] [AndroidUiautomator2Driver@7c3b (7f6c418c)] Calling AppiumDriver.deleteSession() with args: ["7f6c418c-a38c-42b8-88db-7551832c4de3"]
[debug] [AppiumDriver@402e] Event 'quitSessionRequested' logged at 1686822690833 (11:51:30 GMT+0200 (Central European Summer Time))
[AppiumDriver@402e] Removing session 7f6c418c-a38c-42b8-88db-7551832c4de3 from our master session list
[debug] [AndroidUiautomator2Driver@7c3b (7f6c418c)] Deleting UiAutomator2 session
[debug] [AndroidUiautomator2Driver@7c3b (7f6c418c)] Deleting UiAutomator2 server session
[debug] [AndroidUiautomator2Driver@7c3b (7f6c418c)] Matched '/' to command name 'deleteSession'
[debug] [AndroidUiautomator2Driver@7c3b (7f6c418c)] Proxying [DELETE /] to [DELETE http://127.0.0.1:8208/session/677f1a57-d24a-4b69-95e1-9a469b48f372] with no body
[debug] [AndroidUiautomator2Driver@7c3b (7f6c418c)] Got response with status 200: {"sessionId":"677f1a57-d24a-4b69-95e1-9a469b48f372","value":null}
[debug] [ADB] Running '/Users/xxxx/Library/Android/sdk/platform-tools/adb -P 5037 -s emulator-5554 shell dumpsys activity services io.appium.settings/.recorder.RecorderService'
[debug] [ADB] Running '/Users/xxxx/Library/Android/sdk/platform-tools/adb -P 5037 -s emulator-5554 shell am force-stop com.wdiodemoapp'
[debug] [Logcat] Stopping logcat capture
[debug] [ADB] Removing forwarded port socket connection: 8208 
[debug] [ADB] Running '/Users/xxxx/Library/Android/sdk/platform-tools/adb -P 5037 -s emulator-5554 forward --remove tcp:8208'
[AndroidUiautomator2Driver@7c3b (7f6c418c)] Restoring hidden api policy to the device default configuration
[debug] [ADB] Running '/Users/xxxx/Library/Android/sdk/platform-tools/adb -P 5037 -s emulator-5554 shell 'settings delete global hidden_api_policy_pre_p_apps;settings delete global hidden_api_policy_p_apps;settings delete global hidden_api_policy''
[debug] [Instrumentation] .
[debug] [Instrumentation] Time: 7.04
[debug] [Instrumentation] 
[debug] [Instrumentation] OK (1 test)
[debug] [Instrumentation] The process has exited with code 0
[debug] [AppiumDriver@402e] Event 'quitSessionFinished' logged at 1686822691270 (11:51:31 GMT+0200 (Central European Summer Time))
[debug] [AppiumDriver@402e] Received response: null
[debug] [AppiumDriver@402e] But deleting session, so not returning
[debug] [AppiumDriver@402e] Responding to client with driver.deleteSession() result: null
[HTTP] <-- DELETE /session/7f6c418c-a38c-42b8-88db-7551832c4de3 200 438 ms - 14
[HTTP]

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.