appium / java-client

Java language binding for writing Appium Tests, conforms to W3C WebDriver Protocol
Apache License 2.0
1.19k stars 755 forks source link

Could not start a new session. Response code 400. Message: Bad capabilities. appium 8.3.0 #2089

Open Luka7711 opened 6 months ago

Luka7711 commented 6 months ago

Description

Starting winapp driver session fails after we upgraded Selenium to 4.8.1 and appium to 8.3.0. I am trying to launch windows desktop application. I followed documentation: appium migrate 7 -> 8

public void winAppInitialization() {
    if (winAppSession != null && winAppSession.getSessionId() != null) {
        return;
    }
    try {
        BaseOptions capabilities = new BaseOptions();
        capabilities.setCapability("app", appLocation);

        AppiumServiceBuilder serviceBuilder = new AppiumServiceBuilder();
        serviceBuilder.withCapabilities(capabilities).usingAnyFreePort().withTimeout(Duration.ofSeconds(10));
        AppiumDriverLocalService appiumDriverLocalService = AppiumDriverLocalService.buildService(serviceBuilder);

        appiumDriverLocalService.start();

        WindowsDriver driver = new WindowsDriver(new URL("http://localhost:" + appiumDriverLocalService.getUrl().getPort() + "/wd/hub"), capabilities);
        driver.manage().timeouts().implicitlyWait(Duration.ofSeconds(10));

    } catch (Exception e) {
        throw new InitializationException("Error at initializing win app driver, win driver location: "
                + winDriverURL + " and app location: " + appLocation);
    }
}

Error

org.openqa.selenium.SessionNotCreatedException: Could not start a new session. Response code 400. Message: Bad capabilities. Specify either app or appTopLevelWindow to create a session Build info: version: '4.8.1', revision: '8ebccac989' System info: os.name: 'Windows 10', os.arch: 'amd64', os.version: '10.0', java.version: '1.8.0_391' Driver info: io.appium.java_client.windows.WindowsDriver Command: [null, newSession {capabilities=[{platformName=WINDOWS, appium:deviceName=WindowsPC, appium:automationName=Windows, appium:app=C:\Program Files (x86)\Trizetto\Facets\System\Bin\ceraexe0.exe}], desiredCapabilities=Capabilities {appium:app: C:\Program Files (x86)\Triz..., appium:automationName: Windows, appium:deviceName: WindowsPC, platformName: WINDOWS}}] Capabilities {appium:app: C:\Program Files (x86)\Triz..., appium:automationName: Windows, appium:deviceName: WindowsPC, platformName: WINDOWS}

mykola-mokhnach commented 6 months ago

Please provide the full Appium server log

Luka7711 commented 6 months ago

@mykola-mokhnach I've updated Initilaization class where I start appium server first and then starting winapp driver. Here's logs:

io.appium.java_client.service.local.AppiumServerHasNotBeenStartedLocallyException: The local appium server has not been started. The given Node.js executable: C:\Program Files\nodejs\node.exe Arguments: [C:\Users\0029031\AppData\Roaming\npm\node_modules\appium\build\lib\main.js, --port, 8490, --address, 0.0.0.0, --default-capabilities, {"appium:app":"C:\Program Files (x86)\Trizetto\Facets\System\Bin\ceraexe0.exe"}] Process output: usage: main.js server [-h] [--address ADDRESS] [--allow-cors] [--allow-insecure ALLOW_INSECURE] [--base-path BASE_PATH] [--callback-address CALLBACK_ADDRESS] [--callback-port CALLBACK_PORT] [--debug-log-spacing] [--default-capabilities DEFAULT_CAPABILITIES] [--deny-insecure DENY_INSECURE] [--keep-alive-timeout KEEP_ALIVE_TIMEOUT] [--local-timezone] [--log LOG] [--log-filters LOG_FILTERS] [--log-level LOG_LEVEL] [--log-no-colors] [--log-timestamp] [--plugins-import-chunk-size PLUGINS_IMPORT_CHUNK_SIZE] [--drivers-import-chunk-size DRIVERS_IMPORT_CHUNK_SIZE] [--long-stacktrace] [--no-perms-check] [--nodeconfig NODECONFIG] [--port PORT] [--relaxed-security] [--session-override] [--strict-caps] [--tmp TMP] [--trace-dir TRACE_DIR] [--use-drivers USE_DRIVERS] [--use-plugins USE_PLUGINS] [--webhook WEBHOOK] [--ssl-cert-path SSL_CERT_PATH] [--ssl-key-path SSL_KEY_PATH] [--shell] [--show-build-info] [--show-config] [--config CONFIGFILE]

main.js server: error: argument --default-capabilities/-dc: invalid json value: '{appium:app:C:\\Program'

mykola-mokhnach commented 6 months ago

Unfortunately I cannot help without the full server log

Luka7711 commented 6 months ago

How about this, it's not helpful either?

io.appium.java_client.service.local.AppiumServerHasNotBeenStartedLocallyException: The local appium server has not been started. The given Node.js executable: C:\Program Files\nodejs\node.exe Arguments: [C:\Users\0029031\AppData\Roaming\npm\node_modules\appium\build\lib\main.js, --port, 8490, --address, 0.0.0.0, --default-capabilities, {"appium:app":"C:\Program Files (x86)\Trizetto\Facets\System\Bin\ceraexe0.exe"}] Process output: usage: main.js server [-h] [--address ADDRESS] [--allow-cors] [--allow-insecure ALLOW_INSECURE] [--base-path BASE_PATH] [--callback-address CALLBACK_ADDRESS] [--callback-port CALLBACK_PORT] [--debug-log-spacing] [--default-capabilities DEFAULT_CAPABILITIES] [--deny-insecure DENY_INSECURE] [--keep-alive-timeout KEEP_ALIVE_TIMEOUT] [--local-timezone] [--log LOG] [--log-filters LOG_FILTERS] [--log-level LOG_LEVEL] [--log-no-colors] [--log-timestamp] [--plugins-import-chunk-size PLUGINS_IMPORT_CHUNK_SIZE] [--drivers-import-chunk-size DRIVERS_IMPORT_CHUNK_SIZE] [--long-stacktrace] [--no-perms-check] [--nodeconfig NODECONFIG] [--port PORT] [--relaxed-security] [--session-override] [--strict-caps] [--tmp TMP] [--trace-dir TRACE_DIR] [--use-drivers USE_DRIVERS] [--use-plugins USE_PLUGINS] [--webhook WEBHOOK] [--ssl-cert-path SSL_CERT_PATH] [--ssl-key-path SSL_KEY_PATH] [--shell] [--show-build-info] [--show-config] [--config CONFIGFILE]

main.js server: error: argument --default-capabilities/-dc: invalid json value: '{appium:app:C:\Program'

mykola-mokhnach commented 6 months ago

This looks like an error from an older client version. Consider using the most recent one as we don't backport fixes to older releases.