appium 是基于 nodejs 来打包、发布的,也用它来管理各个 driver,如下图所示,它的结构图如下:
从上图就可以看到:android 的自动化比 iOS 的要难多了!
appium 主程序,依赖各个 driver 程序,其中,安卓的自动化有 3 个 driver,分别是:
列个表对比一下:
功能\Driver | appium-android-driver | appium-uiautomator2-driver | appium-espresso-driver |
---|---|---|---|
用途 | 驱动 UIAutomator1 | 驱动 UIAutomator2 | 驱动 espresso |
automationName | UiAutomator1 | UiAutomator2 | Espresso |
包形式 | AppiumBootstrap.jar | appium-uiautomator2-server-v${version}.apk | TODO 待研究 |
包依赖地址 | bootstrap/bin/ | appium-uiautomator2-server/apks/ | TODO |
优点 | jar 包形式,免安装,一个命令直接启动,权限级别是 shell 级别 | 官方推荐使用 2,对高版本兼容性好 | 控件识别能力强 |
缺点 | 对高版本兼容性差,容易无法识别控件 | apk 形式,需要安装 | apk 形式,需求安装,并且是侵入式的,可能带来风险 |
Server 模块 | 在相同工程中,Bootstrap 目录,maven 工程,主要目标是在 bin 目录下输出 AppiumBootstrap.jar | 不同工程,单独的另外一个 Nodejs 工程:appium-uiautomator2-server | 相同 Nodejs 工程,espress-server 目录,gradle 工程 |
附:AppiumBootstrap.jar 的打包过程:https://zhuanlan.zhihu.com/p/61213093