zebrunner / mcloud

Mobile farm ecosystem for Android and iOS devices
125 stars 21 forks source link

investigate possibility to use locked devices #77

Open vdelendik opened 3 years ago

vdelendik commented 3 years ago

issue with unlocking iOS device is fixed: https://github.com/zebrunner/stf/issues/145

in scope of this ticket let's do a research if we can organize device farm for manual and automation usage with locked screens. benefits: not used devices sleep and lock display, i.e. no battery use

When we occupy device via STF we have to wake it up. Also investigate how can we unlock via pin automatically by appium

vdelendik commented 2 years ago

tested such appium caps combination with valid unlockKey: unlockType=pattern

16:08:40  For documentation on this error, please visit: https://www.seleniumhq.org/exceptions/no_such_element.html
16:08:40  Build info: version: '3.141.59', revision: 'e82be7d358', time: '2018-11-14T08:17:03'
16:08:40  System info: host: 'c34e77c396fa', ip: '172.18.0.9', os.name: 'Linux', os.arch: 'amd64', os.version: '4.15.0-142-generic', java.version: '11.0.12'
16:08:40  Driver info: driver.version: AndroidDriver
16:08:40  remote stacktrace: NoSuchElementError: [[[DEBUG info: An element could not be located on the page using the given search parameters. --udid R28M1384YQY --name Samsung_Galaxy_S10]]]
16:08:40      at AndroidUiautomator2Driver.findElOrEls (/opt/mcloud/appium/node_modules/appium/node_modules/appium-android-driver/lib/commands/find.js:75:11)
16:08:40      at process._tickCallback (internal/process/next_tick.js:68:7)
16:08:40  org.openqa.selenium.WebDriverException: org.openqa.selenium.NoSuchElementException: [[[DEBUG info: An element could not be located on the page using the given search parameters. --udid R28M1384YQY --name Samsung_Galaxy_S10]]]
16:08:40  For documentation on this error, please visit: https://www.seleniumhq.org/exceptions/no_such_element.html
16:08:40  Build info: version: '3.141.59', revision: 'e82be7d358', time: '2018-11-14T08:17:03'
16:08:40  System info: host: 'c34e77c396fa', ip: '172.18.0.9', os.name: 'Linux', os.arch: 'amd64', os.version: '4.15.0-142-generic', java.version: '11.0.12'
16:08:40  Driver info: driver.version: AndroidDriver
16:08:40  remote stacktrace: NoSuchElementError: [[[DEBUG info: An element could not be located on the page using the given search parameters. --udid R28M1384YQY --name Samsung_Galaxy_S10]]]
16:08:40      at AndroidUiautomator2Driver.findElOrEls (/opt/mcloud/appium/node_modules/appium/node_modules/appium-android-driver/lib/commands/find.js:75:11)
16:08:40      at process._tickCallback (internal/process/next_tick.js:68:7)
16:08:40    at com.qaprosoft.carina.core.foundation.webdriver.listener.EventFiringAppiumCommandExecutor.execute(EventFiringAppiumCommandExecutor.java:182)
16:08:40    at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:552)
16:08:40    at io.appium.java_client.DefaultGenericMobileDriver.execute(DefaultGenericMobileDriver.java:41)
16:08:40    at io.appium.java_client.AppiumDriver.execute(AppiumDriver.java:1)
16:08:40    at io.appium.java_client.android.AndroidDriver.execute(AndroidDriver.java:1)
16:08:40    at org.openqa.selenium.remote.RemoteWebDriver.startSession$original$lxZhXgAE(RemoteWebDriver.java:213)
16:08:40    at org.openqa.selenium.remote.RemoteWebDriver.startSession$original$lxZhXgAE$accessor$L24JgASi(RemoteWebDriver.java)
16:08:40    at org.openqa.selenium.remote.RemoteWebDriver$auxiliary$IeNxuUVI.run(Unknown Source)
16:08:40    at com.zebrunner.agent.core.webdriver.StartSessionInterceptor.onSessionStart(StartSessionInterceptor.java:35)
16:08:40    at org.openqa.selenium.remote.RemoteWebDriver.startSession(RemoteWebDriver.java)
16:08:40    at io.appium.java_client.AppiumDriver.startSession(AppiumDriver.java:338)
16:08:40    at org.openqa.selenium.remote.RemoteWebDriver.<init>(RemoteWebDriver.java:131)
16:08:40    at io.appium.java_client.DefaultGenericMobileDriver.<init>(DefaultGenericMobileDriver.java:37)
16:08:40    at io.appium.java_client.AppiumDriver.<init>(AppiumDriver.java:89)
16:08:40    at io.appium.java_client.android.AndroidDriver.<init>(AndroidDriver.java:86)
16:08:40    at com.qaprosoft.carina.core.foundation.webdriver.core.factory.impl.MobileFactory.create(MobileFactory.java:89)
16:08:40    at com.qaprosoft.carina.core.foundation.webdriver.core.factory.DriverFactory.create(DriverFactory.java:69)
16:08:40    at com.qaprosoft.carina.core.foundation.webdriver.IDriverPool.createDriver(IDriverPool.java:387)
16:08:40    at com.qaprosoft.carina.core.foundation.webdriver.IDriverPool.getDriver(IDriverPool.java:129)
16:08:40    at com.qaprosoft.carina.core.foundation.webdriver.IDriverPool.getDriver(IDriverPool.java:85)
16:08:40    at com.qaprosoft.carina.core.foundation.webdriver.IDriverPool.getDriver(IDriverPool.java:72)
16:08:40    at com.qaprosoft.carina.demo.MobileSampleTest.testLoginUser(MobileSampleTest.java:45)
16:08:40    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
16:08:40    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
16:08:40    at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
16:08:40    at java.base/java.lang.reflect.Method.invoke(Method.java:566)
16:08:40    at org.testng.internal.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:133)
16:08:40    at org.testng.internal.TestInvoker.invokeMethod(TestInvoker.java:598)
16:08:40    at org.testng.internal.TestInvoker.invokeTestMethod(TestInvoker.java:173)
16:08:40    at org.testng.internal.MethodRunner.runInSequence(MethodRunner.java:46)
16:08:40    at org.testng.internal.TestInvoker$MethodInvocationAgent.invoke(TestInvoker.java:824)
16:08:40    at org.testng.internal.TestInvoker.invokeTestMethods(TestInvoker.java:146)
16:08:40    at org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:146)
16:08:40    at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:128)
16:08:40    at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
16:08:40    at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
16:08:40    at java.base/java.lang.Thread.run(Thread.java:829)
16:08:40  Caused by: org.openqa.selenium.NoSuchElementException: [[[DEBUG info: An element could not be located on the page using the given search parameters. --udid R28M1384YQY --name Samsung_Galaxy_S10]]]
16:08:40  For documentation on this error, please visit: https://www.seleniumhq.org/exceptions/no_such_element.html
16:08:40  Build info: version: '3.141.59', revision: 'e82be7d358', time: '2018-11-14T08:17:03'
16:08:40  System info: host: 'c34e77c396fa', ip: '172.18.0.9', os.name: 'Linux', os.arch: 'amd64', os.version: '4.15.0-142-generic', java.version: '11.0.12'
16:08:40  Driver info: driver.version: AndroidDriver
16:08:40  remote stacktrace: NoSuchElementError: [[[DEBUG info: An element could not be located on the page using the given search parameters. --udid R28M1384YQY --name Samsung_Galaxy_S10]]]
16:08:40      at AndroidUiautomator2Driver.findElOrEls (/opt/mcloud/appium/node_modules/appium/node_modules/appium-android-driver/lib/commands/find.js:75:11)
16:08:40      at process._tickCallback (internal/process/next_tick.js:68:7)
16:08:40    at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
16:08:40    at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
16:08:40    at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
16:08:40    at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:490)
16:08:40    at org.openqa.selenium.remote.W3CHandshakeResponse.lambda$errorHandler$0(W3CHandshakeResponse.java:62)
16:08:40    at org.openqa.selenium.remote.HandshakeResponse.lambda$getResponseFunction$0(HandshakeResponse.java:30)
16:08:40    at org.openqa.selenium.remote.ProtocolHandshake.lambda$createSession$0(ProtocolHandshake.java:126)
16:08:40    at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:195)
16:08:40    at java.base/java.util.Spliterators$ArraySpliterator.tryAdvance(Spliterators.java:958)
16:08:40    at java.base/java.util.stream.ReferencePipeline.forEachWithCancel(ReferencePipeline.java:127)
16:08:40    at java.base/java.util.stream.AbstractPipeline.copyIntoWithCancel(AbstractPipeline.java:502)
16:08:40    at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:488)
16:08:40    at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:474)
16:08:40    at java.base/java.util.stream.FindOps$FindOp.evaluateSequential(FindOps.java:150)
16:08:40    at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
16:08:40    at java.base/java.util.stream.ReferencePipeline.findFirst(ReferencePipeline.java:543)
16:08:40    at org.openqa.selenium.remote.ProtocolHandshake.createSession(ProtocolHandshake.java:128)
16:08:40    at org.openqa.selenium.remote.ProtocolHandshake.createSession(ProtocolHandshake.java:74)
16:08:40    at org.openqa.selenium.remote.HttpCommandExecutor.execute(HttpCommandExecutor.java:136)
16:08:40    at com.qaprosoft.carina.core.foundation.webdriver.listener.EventFiringAppiumCommandExecutor.execute(EventFiringAppiumCommandExecutor.java:156)
16:08:40    ... 36 more

unlockType=pin

16:01:48  2021-11-12 13:01:46 IDriverPool [TestNG-test=Mobile test-1-22] [ERROR] Driver initialization 'default' FAILED! Retry 1 of 1 time - org.openqa.selenium.WebDriverException: An unknown server-side error occurred while processing the command. Original error: [[[DEBUG info: Error finding unlock pin buttons! --udid R28M1384YQY --name Samsung_Galaxy_S10]]]
16:01:48  Build info: version: '3.141.59', revision: 'e82be7d358', time: '2018-11-14T08:17:03'
16:01:48  System info: host: 'c34e77c396fa', ip: '172.18.0.9', os.name: 'Linux', os.arch: 'amd64', os.version: '4.15.0-142-generic', java.version: '11.0.12'
16:01:48  Driver info: driver.version: AndroidDriver
16:01:48  remote stacktrace: UnknownError: An unknown server-side error occurred while processing the command. Original error: [[[DEBUG info: Error finding unlock pin buttons! --udid R28M1384YQY --name Samsung_Galaxy_S10]]]
16:01:48      at getResponseForW3CError (/opt/mcloud/appium/node_modules/appium/node_modules/appium-base-driver/lib/protocol/errors.js:804:9)
16:01:48      at asyncHandler (/opt/mcloud/appium/node_modules/appium/node_modules/appium-base-driver/lib/protocol/protocol.js:385:57)
16:01:48  org.openqa.selenium.WebDriverException: org.openqa.selenium.WebDriverException: An unknown server-side error occurred while processing the command. Original error: [[[DEBUG info: Error finding unlock pin buttons! --udid R28M1384YQY --name Samsung_Galaxy_S10]]]
16:01:48  Build info: version: '3.141.59', revision: 'e82be7d358', time: '2018-11-14T08:17:03'
16:01:48  System info: host: 'c34e77c396fa', ip: '172.18.0.9', os.name: 'Linux', os.arch: 'amd64', os.version: '4.15.0-142-generic', java.version: '11.0.12'
16:01:48  Driver info: driver.version: AndroidDriver
16:01:48  remote stacktrace: UnknownError: An unknown server-side error occurred while processing the command. Original error: [[[DEBUG info: Error finding unlock pin buttons! --udid R28M1384YQY --name Samsung_Galaxy_S10]]]
16:01:48      at getResponseForW3CError (/opt/mcloud/appium/node_modules/appium/node_modules/appium-base-driver/lib/protocol/errors.js:804:9)
16:01:48      at asyncHandler (/opt/mcloud/appium/node_modules/appium/node_modules/appium-base-driver/lib/protocol/protocol.js:385:57)
16:01:48    at com.qaprosoft.carina.core.foundation.webdriver.listener.EventFiringAppiumCommandExecutor.execute(EventFiringAppiumCommandExecutor.java:182)
16:01:48    at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:552)
16:01:48    at io.appium.java_client.DefaultGenericMobileDriver.execute(DefaultGenericMobileDriver.java:41)
16:01:48    at io.appium.java_client.AppiumDriver.execute(AppiumDriver.java:1)
16:01:48    at io.appium.java_client.android.AndroidDriver.execute(AndroidDriver.java:1)
16:01:48    at org.openqa.selenium.remote.RemoteWebDriver.startSession$original$cZpR0YQE(RemoteWebDriver.java:213)
16:01:48    at org.openqa.selenium.remote.RemoteWebDriver.startSession$original$cZpR0YQE$accessor$3ugqcRSN(RemoteWebDriver.java)
16:01:48    at org.openqa.selenium.remote.RemoteWebDriver$auxiliary$CNP6fFLk.run(Unknown Source)
16:01:48    at com.zebrunner.agent.core.webdriver.StartSessionInterceptor.onSessionStart(StartSessionInterceptor.java:35)
16:01:48    at org.openqa.selenium.remote.RemoteWebDriver.startSession(RemoteWebDriver.java)
16:01:48    at io.appium.java_client.AppiumDriver.startSession(AppiumDriver.java:338)
16:01:48    at org.openqa.selenium.remote.RemoteWebDriver.<init>(RemoteWebDriver.java:131)
16:01:48    at io.appium.java_client.DefaultGenericMobileDriver.<init>(DefaultGenericMobileDriver.java:37)
16:01:48    at io.appium.java_client.AppiumDriver.<init>(AppiumDriver.java:89)
16:01:48    at io.appium.java_client.android.AndroidDriver.<init>(AndroidDriver.java:86)
16:01:48    at com.qaprosoft.carina.core.foundation.webdriver.core.factory.impl.MobileFactory.create(MobileFactory.java:89)
16:01:48    at com.qaprosoft.carina.core.foundation.webdriver.core.factory.DriverFactory.create(DriverFactory.java:69)
16:01:48    at com.qaprosoft.carina.core.foundation.webdriver.IDriverPool.createDriver(IDriverPool.java:387)
16:01:48    at com.qaprosoft.carina.core.foundation.webdriver.IDriverPool.getDriver(IDriverPool.java:129)
16:01:48    at com.qaprosoft.carina.core.foundation.webdriver.IDriverPool.getDriver(IDriverPool.java:85)
16:01:48    at com.qaprosoft.carina.core.foundation.webdriver.IDriverPool.getDriver(IDriverPool.java:72)
16:01:48    at com.qaprosoft.carina.demo.MobileSampleTest.testLoginUser(MobileSampleTest.java:45)
16:01:48    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
16:01:48    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
16:01:48    at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
16:01:48    at java.base/java.lang.reflect.Method.invoke(Method.java:566)
16:01:48    at org.testng.internal.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:133)
16:01:48    at org.testng.internal.TestInvoker.invokeMethod(TestInvoker.java:598)
16:01:48    at org.testng.internal.TestInvoker.invokeTestMethod(TestInvoker.java:173)
16:01:48    at org.testng.internal.MethodRunner.runInSequence(MethodRunner.java:46)
16:01:48    at org.testng.internal.TestInvoker$MethodInvocationAgent.invoke(TestInvoker.java:824)
16:01:48    at org.testng.internal.TestInvoker.invokeTestMethods(TestInvoker.java:146)
16:01:48    at org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:146)
16:01:48    at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:128)
16:01:48    at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
16:01:48    at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
16:01:48    at java.base/java.lang.Thread.run(Thread.java:829)
16:01:48  Caused by: org.openqa.selenium.WebDriverException: An unknown server-side error occurred while processing the command. Original error: [[[DEBUG info: Error finding unlock pin buttons! --udid R28M1384YQY --name Samsung_Galaxy_S10]]]
16:01:48  Build info: version: '3.141.59', revision: 'e82be7d358', time: '2018-11-14T08:17:03'
16:01:48  System info: host: 'c34e77c396fa', ip: '172.18.0.9', os.name: 'Linux', os.arch: 'amd64', os.version: '4.15.0-142-generic', java.version: '11.0.12'
16:01:48  Driver info: driver.version: AndroidDriver
16:01:48  remote stacktrace: UnknownError: An unknown server-side error occurred while processing the command. Original error: [[[DEBUG info: Error finding unlock pin buttons! --udid R28M1384YQY --name Samsung_Galaxy_S10]]]
16:01:48      at getResponseForW3CError (/opt/mcloud/appium/node_modules/appium/node_modules/appium-base-driver/lib/protocol/errors.js:804:9)
16:01:48      at asyncHandler (/opt/mcloud/appium/node_modules/appium/node_modules/appium-base-driver/lib/protocol/protocol.js:385:57)
16:01:48    at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
16:01:48    at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
16:01:48    at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
16:01:48    at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:490)
16:01:48    at org.openqa.selenium.remote.W3CHandshakeResponse.lambda$errorHandler$0(W3CHandshakeResponse.java:62)
16:01:48    at org.openqa.selenium.remote.HandshakeResponse.lambda$getResponseFunction$0(HandshakeResponse.java:30)
16:01:48    at org.openqa.selenium.remote.ProtocolHandshake.lambda$createSession$0(ProtocolHandshake.java:126)
16:01:48    at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:195)
16:01:48    at java.base/java.util.Spliterators$ArraySpliterator.tryAdvance(Spliterators.java:958)
16:01:48    at java.base/java.util.stream.ReferencePipeline.forEachWithCancel(ReferencePipeline.java:127)
16:01:48    at java.base/java.util.stream.AbstractPipeline.copyIntoWithCancel(AbstractPipeline.java:502)
16:01:48    at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:488)
16:01:48    at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:474)
16:01:48    at java.base/java.util.stream.FindOps$FindOp.evaluateSequential(FindOps.java:150)
16:01:48    at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
16:01:48    at java.base/java.util.stream.ReferencePipeline.findFirst(ReferencePipeline.java:543)
16:01:48    at org.openqa.selenium.remote.ProtocolHandshake.createSession(ProtocolHandshake.java:128)
16:01:48    at org.openqa.selenium.remote.ProtocolHandshake.createSession(ProtocolHandshake.java:74)
16:01:48    at org.openqa.selenium.remote.HttpCommandExecutor.execute(HttpCommandExecutor.java:136)
16:01:48    at com.qaprosoft.carina.core.foundation.webdriver.listener.EventFiringAppiumCommandExecutor.execute(EventFiringAppiumCommandExecutor.java:156)
16:01:48    ... 36 more