Appium Appium 中一些 API 要特定情况才会出现的,其实是个坑-AppiumDriver AndroidDriver 不同点

曾晖斌 · 2015年09月09日 · 最后由 陈恒捷 回复于 2015年09月10日 · 2816 次阅读

今天在查询 Appium 的一些 API 的时候,发现一些自己没有版本没有一些 API

sendKeyEvent
findElementByAndroidUIAutomator
getNetworkConnection()

我就随便写了几个,发现都没有,原来问题是这个

private AppiumDriver driver;

这么声明的 driver 是没有上面提到的 API 的,后来在一个叫稻梦的同学帮忙下解决这个问题

private AndroidDriver<AndroidElement> driver;

这个 driver 正确的声明是上面这样的,这么声明后,剩下的 API 就全正常了。
上面如果有错误麻烦指出,新手学习中。。。

正好看到一哥们写的原理,看下就明白上面的原因了
https://testerhome.com/topics/1206

public class AndroidDriver<RequiredElementType extends WebElement> extends AppiumDriver<RequiredElementType> implements
        AndroidDeviceActionShortcuts, HasNetworkConnection, PushesFiles,
        StartsActivity, FindsByAndroidUIAutomator<RequiredElementType>
public abstract class AppiumDriver<RequiredElementType extends WebElement> extends DefaultGenericMobileDriver<RequiredElementType>

查找源码的时候发现上面问题出现的原因,感觉是作者为了兼容以前版本还有使用 AndroidDriver 这个类,就直接继承了 AppiumDriver,在 AppiumDriver 基本上再封装一些基本功能。

共收到 4 条回复 时间 点赞

Java client 不要使用 AppiumDriver,要用 AndroidDriver 或者 IOSDriver 。印象中官方的 api 文档里有提到的。

给作者提议一下,合并吧

#1 楼 @chenhengjie123 嗯 ,之前用的是 github 上的例子,例子用的就是 AppiumDriver,所以才不知道这个问题

貌似本来是合并的,从某个版本开始作者把它分开了。
可以和作者说一下。如果作者还是需要分开,那就更新一下 sample-code 吧。

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册