上篇文章中,讲解 Appium 运行原理、Web-Selenium 的运行原理的时候,图片放重复了,导致讲解不是很清晰。本篇文章更新一下此处的讲解,多有疏忽,请见谅!
1.Web-Selenium 运行原理:
图片来自网络
通过 Http 通信,没有改变浏览器访问系统的属性,只要访问就可以了。Appium 做自动化也是如此。
2.Appium 运行原理:
图片来自网络
安卓和 Ios 都有自己自带的自动化测试框架。因为 Ios 和安卓是不同的语言编写的,所以用 Appium(Appium 是跨平台跨语言)。
版本不一样,用的自动化框架也不一样。自动化框架不一样,API 接口也不一样。
图片来自网络
Appium server
去跟移动端的东西通信,首先确实是 Ios 还是安卓。即使确认了是安卓,也得确认下是 UiAutomator
的 Api 还是 Instrumentation
的 Api。
一般只支持主流版本,其它版本需要用户自己支持了。
启动一个模拟器或者真机就有一套自带的自动化框架。
图片来自网络
Appium 发送命令到手机,手机上有个 Bootstrap 接收命令。Bootstrap 是一个服务:Ip 地址和端口做的一个监听。
Appium server 启动后得到代码发送的命令后,不会直接发给手机。
比如你在安卓 8 的设备上做个什么操作,打开一个 APP,Appium server 检查下目前设备上有没有安卓 8 的。如果有,它就把这个命令发送给手机端。
Bootstrap 得到命令后,在本系统中调用 UIAutomator 提供的 API 去做一些实际的操作。就实现了通过 Python 代码去驱动移动端做一堆的事情。
Bootstrap.jar
就是利用了 UIAutomator
一个测试类在这个当中写了 Ip 地址和端口,启动这个服务就结束了。当然也会传达命令,调用 UIAutomator 等。
Appium server 是个服务,移动终端上面也放了一个服务。作为服务主要接收别人向我们发送的命令,实际上就是通信。
Appium server 这个中间件支持 Ios、安卓。
移动端不仅有 Web 网页的操作,还有自己特性的操作。移动端的特点:手指触屏操作、多点触控、混合应用。移动端特有的操作,把命令加进来,做一个扩充就好了。
装了 Appium 没有装 Selenium 是肯定会报错的。因为 Appium 是基于 Selenium 的,Appium 做了些拓展。
很多东西和 Web 自动化,包括从概念上都是一样的。虽然说,它做了拓展,它也是基于现在的基础。现在通信原理的基础上增加了一些原理,增加了一些操作,核心是没有变的。原因很简单:大家都是界面操作。本质上是差不多的,就是在不同的平台上来做这些事情。
很多方面基本上都是这种思想来做的。现在开源的东西越来越多,很多实现思想就是这种分层、独立、兼容很多语言,可以不限定客户端是谁的。
Appium 本来就是开源的,是 Js 实现的。
以上是 Appium 客户端的介绍。