Appium介绍及运行原理一、Appium介绍1. Appium概念
Appium是一个开源测试自动化框架,可用于原生、混合和移动Web应用程序测试。它使用WebDriver协议驱动iOS、Android和Windows应用程序。
2. Appium特点
- 开源:Appium是开源的移动端自动化测试框架。
- 多平台支持:可以测试原生的、混合的、以及移动端的web项目;支持IOS和Android应用。
- 跨平台:可以在osx、windows以及linux桌面系统上运行。
- 多语言支持:支持Ruby、Python、Java、JavaScript、Objective C、php等多种语言。
3. Appium理念
Appium旨在满足移动端自动化需求的理念,概述为以下四个原则:
- 不应该为了自动化而重新编译应用或以任何方式修改它。
- 不应该被限制在特定的语言或框架上来编写运行测试。
- 移动端自动化框架不应该在自动化接口方面重造轮子。
- 移动端自动化框架应该开源,在精神、实践以及名义上都该如此。
4. Appium组件
- Appium Server:Appium的服务端,作为一个Web接口服务,使用Node.js实现。
- Appium Desktop:Appium Server的图像界面,可设置启动或停止服务器、查看日志,可使用inspect查看应用程序的元素。
- Appium GUI:Appium Desktop的前身,也是把Appium Server封装成一个图像界面,但目前已停止更新,建议使用Appium Desktop。
- Appium Client:作为客户端,会给服务端Appium Server发送请求会话来执行自动化任务。
二、Appium运行原理Appium是在手机操作系统自带的测试框架基础上实现的,Android和iOS系统上使用的工具分别如下:
- Android(版本>4.3):UIAutomator,Android 4.3之后系统自带的UI自动化测试工具。
- Android(版本≤4.3):Selendroid,基于Android Instrumentation框架实现的自动化测试工具。
- iOS:UIAutomation(instruments框架里面的一个模板),iOS系统自带的UI自动化测试工具。
运行原理如下:
- 客户端请求:客户端运行脚本时,调用Appium API会向Appium Server端发送一条HTTP请求,请求内容是根据WebDriver wire protocol协议规定的JSON格式数据。
- 服务器接收并解析:开启Appium服务器的同时开启监听端口,Appium Server端接收到请求后,解析出JSON数据并发送到手机端。
- 手机端处理:手机端由BootStrap.jar(iOS为BootStrip.js)开启的socket服务器监听相应端口,BootStrap.jar在Appium每个session第一次访问手机端时会自动安装。手机端接收到请求后,通过BootStrap翻译成UIAutomator能执行的命令,然后通过UIAutomator处理并操作APP完成测试。
三、Appium中的几个重要概念1. Client
狭义上可以理解为python、java等编写的代码,是发起command的一端。
2. Appium Server
专门用来监听并接收来自client端的请求,转发请求并控制移动设备执行测试,默认开启并监听4723端口。
3. Session
Session就是一个会话,在Appium中,所有工作永远都是在session start后才可以进行的。启动一个session需要传入Desired Capabilities获取一个全局唯一的session id,这个id指定了你的浏览器或者移动设备。
4. Desired Capabilities
是一些发送给Appium服务器的键值对集合(比如map或hash),它告诉服务器我们想要启动什么类型的自动化会话。例如:
- 本次测试是启动浏览器还是启动移动设备?
- 是启动Android还是启动iOS?
- 启动Android时,App的package是什么?
- 启动Android时,App的Activity是什么?
5. Bootstrap
- Bootstrap是UIAutomator的测试脚本,其入口类bootstrap继承于UiautomatorTestCase,因此Uiautomator可以正常运行它,它也可以正常使用uiautomator的方法,这是Appium的命令可以转换成uiautomator的关键。
- Bootstrap是一个socket服务器,专门监听4724端口过来的Appium的连接和命令数据,并把Appium的命令转换成uiautomator的命令来让uiautomator进行处理。
- Bootstrap处理的是从PC端传过来的命令。
通过上述介绍,我们可以清晰地了解Appium的基本概念、特点、运行原理以及其中的重要概念,这对于理解和使用Appium进行移动应用自动化测试至关重要。