0
votes

I have below snippet of code in my framework to lock the device

public void lockScreen() {
        try {
            if (Driver instanceof AndroidDriver) {
                ((AndroidDriver) Driver).lockDevice();
            } else {
                int time = this.getInt(Data, 5);
                ((IOSDriver) Driver).lockDevice(Duration.ofSeconds(time));
            }
            System.out.println("Screen locked");
        } catch (Exception ex) {
            Logger.getLogger(Basic.class.getName()).log(Level.SEVERE, null, ex);
        }
    }

I am using Java client 7.0.0, through Appium server trying to lock the IOS device (iPad). Getting an error from selenium. The method is not implemented , but the same is working fine for an Android device. Please suggest workaround or solution to resolve the issue.

Below are the exception stack trace

org.openqa.selenium.WebDriverException: Method has not yet been implemented (WARNING: The server did not provide any stacktrace information)
Command duration or timeout: 0 milliseconds
Build info: version: '3.141.59', revision: 'e82be7d358', time: '2018-11-14T08:17:03'
System info: host: 'AMP00006', ip: '192.168.43.71', os.name: 'Mac OS X', os.arch: 'x86_64', os.version: '10.12.6', java.version: '9.0.4'
Driver info: io.appium.java_client.ios.IOSDriver
Capabilities {automationName: XCUITest, browserName: , bundleId: com.apple.mobilecal, databaseEnabled: false, derivedDataPath: /Users/spritz/PreBuiltWDA, deviceName: Spritz's iPad, javascriptEnabled: true, locationContextEnabled: false, networkConnectionEnabled: false, noReset: true, platform: ANY, platformName: iOS, takesScreenshot: true, udid: e9f0b277fbecf1bca7cda4b8e3d..., usePrebuiltWDA: true, webStorageEnabled: false}
Session ID: 0769d1ee-f9d9-471f-a6d5-cb3642c86867
    at jdk.internal.reflect.GeneratedConstructorAccessor32.newInstance(Unknown Source)
    at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
    at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:488)
    at org.openqa.selenium.remote.ErrorHandler.createThrowable(ErrorHandler.java:214)
    at org.openqa.selenium.remote.ErrorHandler.throwIfResponseFailed(ErrorHandler.java:166)
    at org.openqa.selenium.remote.http.JsonHttpResponseCodec.reconstructValue(JsonHttpResponseCodec.java:40)
    at org.openqa.selenium.remote.http.AbstractHttpResponseCodec.decode(AbstractHttpResponseCodec.java:80)
    at org.openqa.selenium.remote.http.AbstractHttpResponseCodec.decode(AbstractHttpResponseCodec.java:44)
    at org.openqa.selenium.remote.HttpCommandExecutor.execute(HttpCommandExecutor.java:158)

Thanks

1

1 Answers

2
votes

It is clearly mentioned in the Appium documentation that this feature is not supported for iOS or Mac platforms.

lock device feature is not supported for iOS or Mac platforms by Appium

Reference link:
http://appium.io/docs/en/commands/device/interactions/lock/

Support thread (Appium):
https://discuss.appium.io/t/how-to-lock-and-unlock-iphone-real-device-using-appium/15632/4