Santosh Kumar
Santosh Kumar

Reputation: 81

Appium - Unable to instantiate AndroidDriver

When I am trying to instantiate AndroidDriver class it is giving an error. Please help.

Code

import io.appium.java_client.android.AndroidDriver;

public class Testing {
    @Test
    public void testMethod() {
        AndroidDriver driver;
        DesiredCapabilities cap = new DesiredCapabilities();
        cap.setCapability("deviceName", "samsung-sm_g530h-5554c610");
        cap.setCapability("platformVersion", "4.4.4");
        cap.setCapability("platformName", "Android");
        cap.setCapability(CapabilityType.BROWSER_NAME, "");
        cap.setCapability("appPackage", "com.whatsapp");
        cap.setCapability("appActivity", "com.whatsapp.HomeActivity");
        driver = new AndroidDriver(new URL("127.0.0.1:4723"), cap);
    }
}

// Here is the error enter image description here

Upvotes: 4

Views: 14319

Answers (5)

Suraj Jogdand
Suraj Jogdand

Reputation: 306

Following is the correct way to initialize Androidriver:

public class AppiumController{
    public static void main(String[] args) throws MalformedURLException{
        AppiumDriver<?> driver;
        final String URL_STRING = "http://127.0.0.1:4723/wd/hub";
        URL url = new URL(URL_STRING);

        File appDirAndroid = new File("src/main/resources/app/");
        File appAndroid = new File(appDirAndroid, "in.amazon.mShop.android.shopping_2018-02-22.apk");

        DesiredCapabilities androidCapabilities = new DesiredCapabilities();
        androidCapabilities.setCapability(MobileCapabilityType.PLATFORM_NAME, "Android");
        androidCapabilities.setCapability(MobileCapabilityType.AUTOMATION_NAME, "UiAutomator2");
        androidCapabilities.setCapability(MobileCapabilityType.DEVICE_NAME, "emulator-5554");
        androidCapabilities.setCapability("appPackage", "in.amazon.mShop.android.shopping");
        androidCapabilities.setCapability("appActivity", "com.amazon.mShop.home.HomeActivity");
        androidCapabilities.setCapability(MobileCapabilityType.APP, appAndroid.getAbsolutePath());

        driver = new AndroidDriver<MobileElement>(url, androidCapabilities);
        driver.closeApp();
    }
}

The above piece of code will successfully launch the amazon app on emulator.

Upvotes: 0

Gaurav Sharma
Gaurav Sharma

Reputation: 11

Try replacing:

driver = new AndroidDriver(new URL("127.0.0.1:4723"), cap);

With:

driver = new AndroidDriver(new URL("http://127.0.0.1:4723/wd/hub"), cap);

Upvotes: 1

Rye
Rye

Reputation: 21

I also met this problem before, but I now have solved, and the reasons for this problem is because Java - client-(version number). jar is not compatible,So I will Java - client-(version number). jar replacement into Java - the client - 3.1.0. Jar.Hope to be able to help you!

Upvotes: 1

Smriti
Smriti

Reputation: 1592

You are getting this error as AppiumDriver is now Generic, so it can be set to return elements of class MobileElement or IOSElement or AndroidElement without casting.

This change is introduced in Java client version 3.0 and above. Details can be found here

Also, app package, app activity and device name is sufficient enough to run tests. So, you can modify your code as:

import io.appium.java_client.MobileElement;
import io.appium.java_client.android.AndroidDriver;

public class Testing {
  AndroidDriver<MobileElement> driver;

 @Test
 public void testMethod() { 
    DesiredCapabilities caps = new DesiredCapabilities() ;
    caps.setCapability(MobileCapabilityType.DEVICE_NAME,"samsung-sm_g530h-5554c610");
    caps.setCapability(MobileCapabilityType.APP_PACKAGE, "com.whatsapp");
    caps.setCapability(MobileCapabilityType.APP_ACTIVITY, "com.whatsapp.HomeActivity");
    driver = new AndroidDriver<MobileElement>(new URL ("http://127.0.0.1:4723/wd/hub"),caps);
 }
}

Upvotes: 0

MKay
MKay

Reputation: 836

It is giving an error: AndroidDriver is Raw type. You can initialize driver as below:

import io.appium.java_client.AppiumDriver;
import io.appium.java_client.android.AndroidDriver;
...
public class Testing()
{
  public  AppiumDriver driver;
  ...
  @BeforeTest
  public void testMethod()
   {
     driver = new AndroidDriver(new URL(Node), capabilities);
     ...
   }
}

Upvotes: 1

Related Questions