Reputation: 81
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);
}
}
Upvotes: 4
Views: 14319
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
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
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
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
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