Hacktoberfest 2026:メンテナが10月に向けて印を付けた、オープンで初心者向けの issue。 Hacktoberfest の issue を見る

Method is not implemented at XCUITestDriver.closeWindow

オープン
#1,692 コメント 2 件 リアクション 0 件 担当者 0 名 GitHub で見る

メンテナーはふだん 5 日以内に返信

まだ誰も着手していません。

評価

難易度
4/5
見積もり時間
3〜5日
初心者へのやさしさ
25/100
issue の種類
バグ
明瞭さ
説明が足りない
活発さ
停滞
技術スタック
ios, java
領域
mobile, testing-qa

調査の方向性

報告された LocalAppiumDriver.resetApp() の呼び出しから始め、Selenium の RemoteWebDriver.close の動作と、appium-xcuitest-driver/lib/commands/navigation.js にある XCUITestDriver.closeWindow の動作を比較します。提供された Java セットアップを使用して iOS 14.5 で close コマンドを再現し、その後、セッションを維持したままアプリを閉じる際に期待される動作を判断します。

索引モデルが issue の本文から書いたものです。

説明

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)
主要言語
Java
スター
1.3k
フォーク
755
平均マージ
5日 14時間
マージ済み PR(30日)
8

環境構築

  • Dockerfile・Docker Compose ファイルなし
  • プルリクエストのテンプレートあり
  • コントリビューションガイドなし

はじめの一歩

  1. issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
  2. 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
  3. リポジトリをフォークし、ブランチを切って変更します。
  4. issue 番号を参照したプルリクエストを送ります。

appium/java-client のほかの issue

appium/java-client の issue をすべて見る

似ている issue

Java の issue をもっと見る

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。