Appium基础学习之 | Appium-Desktop与UiAutomator2

本文详细介绍了Appium-Desktop作为Appium1.4.16后的集成工具,不仅包含AppiumServer,还提供录制功能及更便捷的使用体验。同时深入解析UiAutomator2.0相较于1.0的变化,如支持Junit4、基于Instrumentation运行等,以及新增的UiObject2、Until、By等类提升定位效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、Appium-Desktop

在Appium1.4.16版本之后,Appium重新发布了新的集成工具Appium-Desktop,可以把Appium-Desktop当作是Appium1.4.16版本之后的替代品,Appium-Desktop同样提供了Appium Server端服务于客服端,也同样提供了像UI Automator Viewer获取设备页面的元素,除了这些它还提供了新手梦寐以求的录制功能(不建议使用),但Appium-Desktop并不是Appium,应该说它包含了Appium Server,但不仅仅是Appium Server这么简单。

为什么Appium之后冒出一个Appium-Desktop呢?一部分原因是对Appium的一次升级,增加更多功能让用户使用更简单方便,另一方面当然就是因为Appium基于的UiAutomator同样也升级了,就是现在主流App测试框架UiAutomator2.0。相对UiAutomator1.0来说,UiAutomator2.0底层内部实现逻辑改动,所以Appium Server也要相对的做出改变。

Appium-Desktop的安装、使用就不多说了,在网上百度一大堆,就不造轮子了。(安装Appium-Desktop必须要有JDK、android SDK环境)。

二、UiAutomator2.0

Google在2015年发布UiAutomator2.0,相对于UiAutomator1.0来说,UiAutomator2.0到底有什么变化,先回顾一下UiAutomator1.0的特点。

1.UiAutomator1.0

在使用UiAutomator1.0中,是在Eclipse中写好脚本,脚本需要继承UiAutomatorTestCase,每个测试方法名都是Junit3的风格需要以test开头,通过ant打包成jar推送到手机设备端执行;然后通过源码分析知道执行测试是通过继承Junit的TestCase来完成的;再然后到了UiAutomation连接AccessibilityServer来完成元素定位操作,总结后得到:

(1)支持Junit3,通过Junit执行测试

(2)java项目(打包成jar包执行)推送到设备

(3)通过UiAutomation子命令runtest运行执行测试

2.UiAutomator2.0

到了2.0版本,如果要用到UiAutomator2.0完成移动端测试,则变成创建Android项目来编写代码了,脚本不需要继承任何父类,并支持了Junit4使用注解的方式来表示一个测试,测试方法名可任意命名合法的java方法名字。相同的是2.0通过依赖与Junit来执行测试,同样的通过UiAutomation连接AccessibilityServer来完成元素定位操作。最大的区别是在于2.0基于Instrumentation,什么是Instrumentation后面再说。

(1)支持Jnuit4,以注解的方式表示测试

(2)android项目,UiAutomator2.0是基于Instrumentation来运行的,而Instrumentation是android内部API,必须与应用APK处于同一进程中运行才能使用。通过Gradle构建打包成Apk应用推送到设备端

(3)通过am子命令instrument运行执行测试

(4)UiAutomator2.0保留了原来UiAutomator的所有逻辑,并新增了UiObject2、Until、By、BySelector等类,让定位效率更高。

### UIAutomator2 Appium 的区别关系 UIAutomator2Appium 是两款用于 Android 应用自动化测试的工具,它们在功能和使用场景上有一定的区别,同时也存在紧密的关系。 #### 区别 1. **开发语言接口** UIAutomator2 是 Google 提供的一个基于 Java 的框架,主要用于 Android 原生应用的 UI 自动化测试。它封装了原生的 UiAutomator 框架,并提供了 Python 接口,使得开发者可以更方便地编写测试脚本 [^4]。而 Appium 是一个跨平台的自动化测试框架,支持多种编程语言(如 Java、Python、Ruby 等),并且不仅支持 Android 平台,还支持 iOS 平台的应用测试 [^4]。 2. **安装配置** UIAutomator2 的安装相对简单,只需要通过 pip 安装即可: ```bash pip install uiautomator2 ``` 然后通过 ADB 连接设备并初始化: ```bash adb connect Your_Android_ip python -m uiautomator2 init ``` 而 Appium 的安装和配置较为复杂,需要依赖 Node.js,并且通常会结合 Appium Desktop 使用以简化配置过程 [^1]。 3. **功能灵活性** UIAutomator2 主要专注于 Android 原生应用的测试,支持黑盒测试和跨应用测试,但它不支持 WebView 测试 [^4]。Appium 则更为灵活,除了支持 Android 和 iOS 的原生应用外,还支持混合应用(Hybrid Apps)和 WebView 测试 [^4]。 4. **底层实现机制** UIAutomator2 在底层使用了 Netty 通信框架来监听来自 PC 端的请求,并将这些请求转发给底层的 UiAutomator2 框架 [^3]。而 Appium 则通过调用不同的驱动程序(如 `appium-uiautomator2-driver`)来设备上的 UiAutomator2 Server 进行交互 [^2]。 5. **签名问题中文输入** UIAutomator2 不涉及签名一致的问题,但需要处理中文输入问题;而 Appium 同样需要解决中文输入问题,但在某些情况下可能不需要关心签名一致性问题 [^4]。 #### 关系 尽管 UIAutomator2Appium 在很多方面有所不同,但它们之间也存在密切的关系: 1. **依赖关系** AppiumAndroid 平台上进行自动化测试时,实际上是依赖于 UiAutomator2 的。当用户在 Appium 中设置 `automationName` 为 `UiAutomator2` 时,Appium Server 会调用 `appium-uiautomator2-driver`,并将 UiAutomator2 Server 的两个 APK 安装到测试设备上 [^2]。 2. **工作原理** Appium 通过 UiAutomator2 来执行具体的 UI 操作。具体来说,Appium Server 会启动 UiAutomator2 驱动模块,该模块负责创建会话并安装 UiAutomator2 Server 的 APK 到设备上。随后,UiAutomator2 Server 会监听来自 Appium 的请求,并将这些请求转发给底层的 UiAutomator2 框架 [^3]。 3. **互补性** 尽管两者都可以用于 Android 应用的自动化测试,但它们各有侧重。UIAutomator2 更适合于简单的 Android 原生应用测试,而 Appium 则更适合于复杂的跨平台或多类型应用测试。此外,Appium 提供了更多的插件和扩展功能,能够更好地满足企业级自动化测试的需求 [^4]。 ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值