What is the difference between "AppiumDriver<WebElement>" and AppiumDriver<MobileElement>?

Class declaration : Both Appium and Android Driver are generic classes for example you can correlate it to different collections classes/interface like ArrayList,List,LinkedList,Maps,HashMaps,Set,HasSet,TreeSet etc

using ‘[’ for less then sign and ‘]’ for greater then sign

public abstract class
AppiumDriver[RequiredElementType extends WebElement]
extends DefaultGenericMobileDriver[RequiredElementType] { }

public class
AndroidDriver[RequiredElementType extends WebElement]
extends AppiumDriver[RequiredElementType]
implements AndroidDeviceActionShortcuts, HasNetworkConnection, PushesFiles,
StartsActivity, FindsByAndroidUIAutomator[RequiredElementType] { }

Difference(s)

  1. AppiumDriver is an abstract class where as AndroidDriver is concrete class which extends AppiumDriver class
  2. AppiumDriver class does not implement any interface where as AndroidDriver class implements generic and nongeneric interfaces as seen in declaration
  3. AppiumDriver is parent class and AndroidDriver is child class
  4. AppiumDriver contains abstract,nonabstract methods where as AndroidDriver being concrete class does not contains abstract methods, it just override methods of AppiumDriver class,AndroidDriver class does not add any new method to this class
  5. Partially we can say AppiumDriver is an abstract design pattern and AndroidDriver class is its design implementation class
2 Likes