java-client
java-client copied to clipboard
Method is not implemented at XCUITestDriver.closeWindow
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)
Do you want to use terminateApp?