Search code examples
androidseleniumautomationappium

Appium and Virtual Android Device desired capabilities: SessionNotCreatedException error


So I am trying to write an automation test script for an android app running inside an Android Emulator (avd) but I am getting the error below in Appium logs:

[debug] [MJSONWP] Bad parameters: BadParametersError: Parameters were incorrect.
 We wanted {"required":["desiredCapabilities"],"optional":["requiredCapabilities
","capabilities","sessionId","id","sessionId","id"]} and you sent ["desiredCapab
ilities","requiredCapabilities","capabilities","alwaysMatch","firstMatch"]

My setup is:

  1. Android Studio 162 (w/ sdk, note that this latest version does not include the 'android' command anymore, the creation of the android virtual device is done through Tools > Android > AVD Manager)
  2. IntelliJ 2016.3.5 (for writing the automation test script)
  3. selenium-java 3.3.0 (required jar)
  4. appium java client 4.1.2 (required jar)
  5. appium server 1.6.3 (executed in nodejs cli by running 'appium')
  6. Android Virtual Device version 5.1 Lollipop

Running 'adb devices' command in cmd gives me

List of devices attached
emulator-5554   device

Desired capabilities setting is

@BeforeClass
public void setUp() throws MalformedURLException{
    DesiredCapabilities capabilities = new DesiredCapabilities();

    capabilities.setCapability("platformName","Android");
    capabilities.setCapability("platformVersion","5.1");
    capabilities.setCapability("deviceName","emulator-5554");
    capabilities.setCapability("app", path_to_apk);
    driver =  new AndroidDriver(new URL("http://127.0.0.1:4723/wd/hub"), capabilities);

}

IDE error output when running the test:

org.openqa.selenium.SessionNotCreatedException: Unable to create new remote session. desired capabilities = Capabilities [{app=src//main//resources//test.apk, platformVersion=5.1, platformName=Android, deviceName=emulator-5554}], required capabilities = Capabilities [{}]
Build info: version: '3.3.0', revision: 'b526bd5b41', time: '2017-03-07 19:26:04 +0000'

I am stuck at this point and don't know what to do.


Solution

  • I mentioned in my comment that I ultimately used an older version of Selenium in order for the desired capabilities to match what is expected by Appium 1.6.3. In my case it's Selenium Java Client 3.0.1 + Appium 1.6.3.