Appium简介

前言

主要介绍Appium的原理

一、Appium简介

1.Appium框架概况

Appium是一个开源的、跨平台的自动化测试框架,该框架适用于Native Application、Mobile Web Application或Hybrid Application的自动化测试。Native Application指的是基于智能手机本地操作系统如iOS和Android并使用原生编程语言(如Android上使用Java)编写并运行的第三方应用程序。Mobile Web Application指的是基于Web的系统和应用。Hybrid Application指的是在手机原生应用程序中嵌入了Webview,通过Webview可以访问网页的内容。

2.Appium架构原理

Appium是在手机操作系统自带的测试框架基础上实现的,Android和iOS的系统上使用的工具分别如下:

Android(版本>4.2):UIAutomator, Android 4.2之后系统自带的UI自动化测试工具。

iOS:UIAutomation, iOS系统自带的UI自动化测试工具。

Appium的架构原理如图所示,由客户端(Appium Client)和服务器(Appium Server)两部分组成,客户端与服务器端通过JSON Wire Protocol进行通信。
在这里插入图片描述

Appium服务器:Appium服务器是Appium框架的核心。它是一个基于Node.js实现的HTTP服务器。Appium服务器的主要功能是接受从Appium客户端发起的连接,监听从客户端发送来的命令,将命令发送给bootstrap.jar(iOS手机为bootstrap.js)执行,并将命令的执行结果通过HTTP应答反馈给Appium客户端。

Bootstrap.jar:Bootstrap.jar是在Android手机上运行的一个应用程序,它在手机上扮演TCP服务器的角色。当Appium服务器需要运行命令时,Appium服务器会与Bootstrap. jar建立TCP通信,并把命令发送给Bootstrap.jar; Bootstrap.jar负责运行测试命令。

Appium客户端:它主要是指实现了Appium功能的WebDriver协议的客户端Library,它负责与Appium服务器建立连接,并将测试脚本的指令发送到Appium服务器。现有的客户端Library有多种语言的实现,包括Ruby、Python、Java、JavaScript(Node. js)、Object C、PHP和C#。Appium的测试是在这些Library的基础上进行开发的。

Session:Appium的客户端和服务端之间进行通信都必须在一个Session的上下文中进行。客户端在发起通信的时候首先会发送一个叫作“Desired Capabilities”的JSON对象给服务器。服务器收到该数据后,会创建一个session并将session的ID返回到客户端。之后客户端可以用该session的ID发送后续的命令。

Desired Capabilities:Desired Capabilities是一组设置的键值对的集合,其中键对应设置的名称,而值对应设置的值。Desired Capabilities主要用于通知Appium服务器建立需要的Session,其中一些设置可以在Appium运行过程中改变Appium服务器的运行行为。

Appium在Android上基于UIAutomator实现了测试的代理程序(Bootstrap.jar),在iOS上基于UIAutomation实现了测试的代理程序(Bootstrap.js)。当测试脚本运行时,每行WebDriver的脚本都将转换成Appium的指令发送给Appium服务器,而Appium服务器将测试指令交给代理程序,将由代理程序负责执行测试。比如脚本上的一个点击操作,在Appium服务器上都是touch指令,当指令发送到Android系统上时,Android系统上的Bootstrap.jar将调用UIAutomator的方法实现点击操作;而当指令发送到iOS系统上时,iOS的Bootstrap.js将调用UIAutomation的方法实现点击操作。由于Appium有了这样的能力,同样的测试脚本可以实现跨平台运行。

总结

简单来说就是:
Selenium2 将浏览器原生的API封装成WebDriver API ,webdriver 是基于 http协议的;
appium是基于 webdriver 协议添加对移动设备自动化api扩展而成的,基于tcp/ip协议(使用了socket接口)
appium-IOS 和安卓都差不多,有细小差别,分PC和手机两块讲:
1、首先是PC端, 测试人员执行测试脚本(java,python等脚本)通过appium client 转换为json格式传递给appium server
2、 appiumserver 启动了一个监听端口例如4724, 同时向手机端adb push 一个bootstrap.jar/bootstrap.js 的脚本,手机端通过该脚本同时监听端口4724
3、PC和手机端就通过这个端口实现了通信和交互,基于socket通信(一个封装了TCP/IP协议的接口)
4、手机端通过该端口传输的命令执行APP, bootstrap里面封装了安卓和苹果的自动化测试框架UIautomator(低版本的安卓是instrumentation ) 执行相应的命令
5、执行完操作后通过端口返回给PC端,PC端根据返回结果 json 做校验,同时也知道了操作是否执行成功

  • 1
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值