Search code examples
javaandroidappiumappium-android

Not able to instantiate android driver appium 1.8.1


I am using appium latest version 1.8.1,selenium 3.14.0 java client, appium 6.1.0 java client. below is my code to get android driver instance:

public AndroidDriver<?> driver;
DesiredCapabilities capabilities = new DesiredCapabilities();
capabilities.setCapability(MobileCapabilityType.APPIUM_VERSION, “1.8.1”);
capabilities.setCapability(MobileCapabilityType.DEVICE_NAME, “K9 Viraat”);
capabilities.setCapability(MobileCapabilityType.PLATFORM_VERSION, “6.0”);
capabilities.setCapability(MobileCapabilityType.PLATFORM, “Android”);
capabilities.setCapability(MobileCapabilityType.APP, app.getAbsolutePath());
capabilities.setCapability(MobileCapabilityType.AUTOMATION_NAME, 
    "UiAutomator2");
driver = new AndroidDriver<>(new URL(“https://0.0.0.0:4723/wd/hub”),
    capabilities);

I had earlier appium 1.4 and corresponding java client. But after updation to 1.8.1 version I am getting error :

“java.lang.NoClassDefFoundError: 

org/openqa/selenium/remote/internal/OkHttpClient$Factory”

I also updated selenium java client to 3.14.0 but it’s not working. If anyone has experienced this, kindly provide steps to resolve this.


Solution

  • You have problem with the jar files you are using. I suggest you to create a maven project as it is easy to manage dependency files. Include following dependency in your pom.xml files:

    <!-- https://mvnrepository.com/artifact/io.appium/java-client -->
    <dependency>
       <groupId>io.appium</groupId>
       <artifactId>java-client</artifactId>
       <version>6.1.0</version>
    </dependency>
    
    <!-- https://mvnrepository.com/artifact/org.seleniumhq.selenium/selenium-java -->
    <dependency>
       <groupId>org.seleniumhq.selenium</groupId>
       <artifactId>selenium-java</artifactId>
       <version>3.14.0</version>
    </dependency>
    

    Define your desiredCapabilites as follow. You need to provide appPackage and appActivity in your desiredCapabilities.

    AppiumDriver<MobileElement> driver;
    DesiredCapabilities caps = new DesiredCapabilities();
    caps.setCapability("deviceName", "Android phone");
    caps.setCapability("udid", "your device's udid");
    caps.setCapability("platformName", "Android");
    caps.setCapability("platformVersion", "your device's platform version");
    caps.setCapability("appPackage", "your app's appPackage name");
    caps.setCapability("appActivity", "your app's main appActivity name");
    driver = new AndroidDriver<MobileElement>(new URL("http://0.0.0.0:4723/wd/hub"), caps);
    

    Make your you have started your appium server.