Appium 是一个用于移动端自动化测试的工具,支持 Android 和 iOS 平台,并且具有很好的平台兼容性。用户可以使用 Appium 进行自动化测试,提高测试效率和质量。在 Appium 的基础上进行二次开发,可以针对具体需求进行定制化开发,深入了解 Appium 的运行原理,则可以更好地优化自动化测试脚本,提高测试效率和可靠性。
Appium 的运行原理可以简单概括为:
Appium是一个开源的测试自动化框架,可用于原生、混合和移动web应用程序。它使用Webdriver协议驱动IOS、Android和Windows应用程序。
(1)Appium的优势
可以跨平台同时支持Android和IOS
可以支持多种语言,Java、Python、php、ruby等等
(2)Appium框架组成
Appium由两部分组成,Appiumclient、Appium sever,如果说整个自动化测试环境的话,还有移动设备端三个部分完成。
Appium Client
一般来说就是运行代码的部分,即我们用Python语言编写的代码(或其他支持的语言)。Appium提供的Appium client API是Appium通过拓展selenium的Webdriver协议而来的,我们编写的代码只要实现Webdriver标准协议即可。
Appium Sever
Appium Sever功能是监听接口,接收client端发送的command,然后将command转化为移动端能够识别的command,然后发送给移动设备进行操作,在等移动设备返回操作结果,将操作结果发送给client端。Appium Sever可以放在client端,也可以放在云端。Appium Sever默认的端口号是4723,用于Appium Sever监听client端的发送请求。
移动端:
Appium是在手机操作系统自带的测试框架基础上实现的,Android和IOS的系统上使用的工具不同,分别如下:
- Android: 4.3版本以上采用的是UIAutomator,系统自带的UI自动化测试工具。4.2及以下采用的是基于Android lnstrumentation框架实现的自动化测试工具。
IOS:采用的是IOS系统自带的UI自动化测试工具UIAutomation。
Appium运行原理
client端也就是我们 test script是我们的webdriver测试脚本。
- 中间是起的Appium的服务,Appium在服务端起了一个Server(4723端口),跟selenium Webdriver测试框架类似,Appium⽀持标准的WebDriver JSONWireProtocol。在这里提供它提供了一套REST的接口,Appium Server接收web driver client标准rest请求,解析请求内容,调⽤用对应的框架响应操作。
- appium server会把请求转发给中间件Bootstrap.jar ,它是用java写的,安装在手机上.Bootstrap监听4724端口并接收appium 的命令,最终通过调⽤用UiAutomator的命令来实现。
- 最后Bootstrap将执行的结果返回给appium server。
- appium server再将结果返回给 appium client。
Appium二次开发和Appium运行原理的关系
Appium 的二次开发和运行原理是紧密相连的。深入了解 Appium 的运行原理,可以帮助我们更好地理解它的工作原理和实现细节,从而更好地开发和优化自动化测试脚本。另一方面,进行 Appium 的二次开发则需要对 Appium 的运行原理有深入的了解,这样才能充分利用 Appium 提供的 API,实现针对特定需求的自定义功能。
例如,在 Appium 二次开发中,如果我们想要添加一个针对移动端应用中某个特定界面的某个特定元素的定制操作,我们就需要深入了解 Appium 的定位机制,以便更好地实现我们的功能。如果我们想要对 Appium 进行定制化开发,并且能够更好地理解 Appium 实现定位机制的原理,我们可以更好地利用 Appium 提供的各种功能和 API,实现我们的应用场景。
此外,通过深入了解 Appium 的运行原理和实现细节,我们还可以更好地优化自动化测试脚本。在编写自动化测试脚本时,如果我们能深入了解 Appium 的 UI 定位机制,就会有更优化版本的自动化测试脚本生成。