java-client icon indicating copy to clipboard operation
java-client copied to clipboard

Method is not implemented at XCUITestDriver.closeWindow

Open JonathanOrtegon-L opened this issue 3 years ago • 2 comments

Description

I'm doing a migration from Appium 7.3 to 8.0, but I have problems with closing the app without terminating the driver session with driver.close(), but the error occurs on execution

{"value":{"error":"unknown method","message":"Method is not implemented","stacktrace":"NotImplementedError: Method is not implemented\n at XCUITestDriver.closeWindow (/Applications/Appium.app/Contents/Resources/app/node_modules/appium/node_modules/appium-xcuitest-driver/lib/commands/navigation.js:49:11)\n at commandExecutor (/Applications/Appium.app/Contents/Resources/app/node_modules/appium/node_modules/appium-base-driver/lib/basedriver/driver.js:335:9)\n at /Applications/Appium.app/Contents/Resources/app/node_modules/appium/node_modules/async-lock/lib/index.js:137:12\n at AsyncLock._promiseTry (/Applications/Appium.app/Contents/Resources/app/node_modules/appium/node_modules/async-lock/lib/index.js:261:31)\n at exec (/Applications/Appium.app/Contents/Resources/app/node_modules/appium/node_modules/async-lock/lib/index.js:136:9)\n at AsyncLock.acquire (/Applications/Appium.app/Contents/Resources/app/node_modules/appium/node_modules/async-lock/lib/index.js:152:3)\n at XCUITestDriver.executeCommand (/Applications/Appium.app/Contents/Resources/app/node_modules/appium/node_modules/appium-base-driver/lib/basedriver/driver.js:348:39)\n at XCUITestDriver.executeCommand (/Applications/Appium.app/Contents/Resources/app/node_modules/appium/node_modules/appium-xcuitest-driver/lib/driver.js:731:24)\n at AppiumDriver.executeCommand (/Applications/Appium.app/Contents/Resources/app/node_modules/appium/lib/appium.js:563:36)\n at runMicrotasks (<anonymous>)\n at processTicksAndRejections (internal/process/task_queues.js:85:5)\n at asyncHandler (/Applications/Appium.app/Contents/Resources/app/node_modules/appium/node_modules/appium-base-driver/lib/protocol/protocol.js:297:21)"}}

Environment

  • Serenity 3.2.4
  • Java 11 Correto
  • Appium 8.0.0:
  • Desktop MacOS BigSur
  • Mobile platformt ios 14.5 on iPhone 12 Pro Max:
  • Emulator:

Code To Reproduce Issue [ Good To Have ]

package lulobank.automation.frontend.utils.drivers;

import io.appium.java_client.AppiumDriver; import net.thucydides.core.util.EnvironmentVariables; import net.thucydides.core.util.SystemEnvironmentVariables; import org.openqa.selenium.remote.DesiredCapabilities; import org.slf4j.Logger; import org.slf4j.LoggerFactory;

import java.io.IOException; import java.net.MalformedURLException; import java.net.URL; import java.util.Objects;

import static org.apache.commons.lang3.StringUtils.stripAccents;

public final class LocalAppiumDriver {

    private static final Logger logger = LoggerFactory.getLogger(LocalAppiumDriver.class);
    private AppiumDriver driver;
    private static LocalAppiumDriver currentDriver;

    private static String nameScenario;

    public static AppiumDriver mobile() throws IOException {

        DesiredCapabilities capabilities = new DesiredCapabilities();
        currentDriver = new LocalAppiumDriver();

        TargetExecution targetExecution = TargetExecution.getTargetExecution();
        String appiumUrl = targetExecution.getAppiumUrl();
        setCapabilities(targetExecution, capabilities);

        try {
            currentDriver.driver = new AppiumDriver(new URL(appiumUrl), capabilities);
        } catch (MalformedURLException e) {
            logger.error("MalformedURLException ", e);
        }

        return currentDriver.driver;
    }

    private static DesiredCapabilities setCapabilities(TargetExecution targetExecution, DesiredCapabilities capabilities) {
        targetExecution.capabilities.forEach(capabilities::setCapability);
        capabilities.setCapability("name", getScenarioName());
        return capabilities;
    }

    private static String getScenarioName() {
        return nameScenario;
    }

    public static void setScenarioName(String scenarioName) {
        nameScenario = stripAccents(scenarioName);
    }

    public static AppiumDriver getDriver() {
        return currentDriver.driver;
    }

    public static boolean isThePlatformIOS() {
        return Objects.requireNonNull(getDriver().getCapabilities().getPlatformName().name()).equalsIgnoreCase("ios");
    }

    public static boolean isTheAppiumConfigGRID() {
        EnvironmentVariables variables = SystemEnvironmentVariables.createEnvironmentVariables();
        String appiumConfig = variables.getProperty("appiumconfig");
        return appiumConfig.equalsIgnoreCase("grid");
    }

    public static void resetApp() {
        currentDriver.driver.close();
    }

}

Exception Stacktraces

org.openqa.selenium.UnsupportedCommandException: {"value":{"error":"unknown method","message":"Method is not implemented","stacktrace":"NotImplementedError: Method is not implemented\n    at XCUITestDriver.closeWindow (/Applications/Appium.app/Contents/Resources/app/node_modules/appium/node_modules/appium-xcuitest-driver/lib/commands/navigation.js:49:11)\n    at commandExecutor (/Applications/Appium.app/Contents/Resources/app/node_modules/appium/node_modules/appium-base-driver/lib/basedriver/driver.js:335:9)\n    at /Applications/Appium.app/Contents/Resources/app/node_modules/appium/node_modules/async-lock/lib/index.js:137:12\n    at AsyncLock._promiseTry (/Applications/Appium.app/Contents/Resources/app/node_modules/appium/node_modules/async-lock/lib/index.js:261:31)\n    at exec (/Applications/Appium.app/Contents/Resources/app/node_modules/appium/node_modules/async-lock/lib/index.js:136:9)\n    at AsyncLock.acquire (/Applications/Appium.app/Contents/Resources/app/node_modules/appium/node_modules/async-lock/lib/index.js:152:3)\n    at XCUITestDriver.executeCommand (/Applications/Appium.app/Contents/Resources/app/node_modules/appium/node_modules/appium-base-driver/lib/basedriver/driver.js:348:39)\n    at XCUITestDriver.executeCommand (/Applications/Appium.app/Contents/Resources/app/node_modules/appium/node_modules/appium-xcuitest-driver/lib/driver.js:731:24)\n    at AppiumDriver.executeCommand (/Applications/Appium.app/Contents/Resources/app/node_modules/appium/lib/appium.js:563:36)\n    at runMicrotasks (<anonymous>)\n    at processTicksAndRejections (internal/process/task_queues.js:85:5)\n    at asyncHandler (/Applications/Appium.app/Contents/Resources/app/node_modules/appium/node_modules/appium-base-driver/lib/protocol/protocol.js:297:21)"}}
Command duration or timeout: 4 milliseconds
Build info: version: '4.1.3', revision: '7b1ebf28ef'
System info: host: 'LULO-C02F22WBMD6M.local', ip: 'fe80:0:0:0:1060:b35e:6b46:1412%en0', os.name: 'Mac OS X', os.arch: 'x86_64', os.version: '11.6.4', java.version: '11.0.12'
Driver info: io.appium.java_client.AppiumDriver
Command: [ec885fd8-a0ae-45ad-9614-d8d34c868cde, close {}]
Capabilities {appium:app: Users/jortegon/Library/Deve..., appium:automationName: XCUITest, appium:databaseEnabled: false, appium:deviceId: , appium:deviceName: iPhone 12 Pro Max, appium:javascriptEnabled: true, appium:locationContextEnabled: false, appium:name: Onboarding desde PEP dilige..., appium:networkConnectionEnabled: false, appium:noReset: true, appium:platformVersion: 14.5, appium:shouldTerminateApp: true, appium:takesScreenshot: true, appium:udid: 59D95976-33E4-40DE-9C68-666..., appium:webStorageEnabled: false, platformName: ios}
Session ID: ec885fd8-a0ae-45ad-9614-d8d34c868cde

	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:602)
	at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:622)
	at io.appium.java_client.AppiumDriver.execute(AppiumDriver.java:268)
	at org.openqa.selenium.remote.RemoteWebDriver.close(RemoteWebDriver.java:452)
	at lulobank.automation.frontend.utils.drivers.LocalAppiumDriver.resetApp(LocalAppiumDriver.java:72)

JonathanOrtegon-L avatar Apr 28 '22 02:04 JonathanOrtegon-L

Do you want to use terminateApp?

KazuCocoa avatar May 01 '22 08:05 KazuCocoa