appium自动化测试视频教程,appium+python自动化测试教程
app ium automation1. Appium组件Appium Server的工作原理
Appium是一个C/S结构,包括服务器和客户端。Appium Server是Appium的服务器端,由Node.js实现为Web接口服务。
Appium Desktop
App Server的图形界面可以设置为启动或停止服务器,查看日志,使用inspect查看应用程序元素。
Appium Client
Appium客户端作为客户端,将向服务器Appium Server发送请求会话,以执行自动化任务。使用浏览器访问网页,可以使用不同的客户端浏览器(IE/Firefox/Chrome.)访问同一网站,并向服务器发送请求以获取数据。
2.操作原理Appium是在移动操作系统自带的测试框架的基础上实现的。Android和iOS系统上使用的工具如下:
Android(4.3版):UIAutomator,Android 4.3之后系统自带的UI自动测试工具。
Android(版本 4.3):Selendroid,基于Android Instrumentation框架的自动化测试工具。
IOS:UI Automation(Instruments框架中的一个模板),IOS系统自带的UI自动化测试工具。
操作原理如下:
(1)客户端运行脚本时,调用任何一个appiumAPI都会向Appium服务器发布一个HTTP请求,请求的内容是一个符合webdriver wire协议的JSON格式数据;
当appium服务器开启时,监控端口开启。Appium服务器收到请求后,解析JSON数据并发送到手机。
手机上已经被bootstrap . jar(iOS版为BootStrip.js)打开的socket服务器监听对应的端口。每次会话appium第一次访问手机时会自动安装Bootstrap.jar
手机收到相应的请求后,通过BootStrap.jar将其翻译成UIAutomator可以执行的命令,然后通过UIAutomator对APP进行处理和操作,完成测试。
3.Appium中的几个重要概念
客户端:实际上是发起命令的一端。狭义上可以理解为用python、java等编写的代码。
appserver:专门用于监控和接收来自客户端的请求,转发请求并控制移动设备执行测试。默认情况下,4723接口处于开启和监控状态。
会话:会话是一个会话。在appium中,所有工作都可以在会话开始后完成。要启动一个会话,您需要传递所需的功能来获得一个全局惟一的会话id,它指定了您的浏览器或移动设备。
所需功能:是发送到Appium服务器的键-值对(如map或hash)的集合,它告诉服务器我们想要启动哪种类型的自动化会话。
它告诉appium server类似这样的内容:
这个测试是启动浏览器还是移动设备?
要启动Andorid还是iOS?
启动Android时,App的包是什么?
启动Android时,App的活跃度如何?
引导程序:
首先,bootstrap是uiautomator的测试脚本,其入口类bootstrap继承自uiautomatorTestCase,所以uiautomator可以正常运行,也可以正常使用Uiautomator的方法,这是appium命令可以转换成Uiautomator的关键;
其次,bootstrap是socket服务器,从4724端口监听appium的连接和命令数据,将appium命令转换成uiautomator命令,供uiautomator处理;
最后,bootstrap处理从PC发送的命令。
如图,APP的架构原理由客户端和服务器组成,客户端和服务器通过JSON进行通信。
转载:
一、钋装载流程图
app的加载过程
1)调用Android adb完成基本系统操作。
2)将bootstrap.jar部署到Android
3)Bootstrap.jar转发Android端口到PC机
4)Pc上的监控端口使用webdriver协议接收请求。
5)解析命令,通过转发端口发送到bootstrap.jar。
6)Bootstrap.jar接收请求并将命令发送给uiautomator。
7)Uiautomator执行命令
二、初步了解appium的工作流程
1.appium是c/s模式。
2.appium是基于webdriver协议的移动设备自动化api的扩展,因此具有与webdriver相同的特性,比如多语言支持。
3.webdriver基于http协议。第一个连接会建立一个session会话,通过post发送一个json通知服务器相关的测试信息。
4.对于android来说,4.2以后是基于uiautomator框架来查找注入事件,4.2以前是基于instrumentation框架,封装成一个叫Selendroid的服务。
5.客户端只需要发送http请求就可以实现通信,也就是说客户端是多语言的。
6.appium server是node.js写的,所以不管安装哪个平台都要先安装node,然后npm install -g appium (FQ墙)
三。自举简介
1)自举功能:
Bootstrap是Appium在Android目标测试机上运行的一个UiAutomator测试脚本。这个脚本唯一做的事情就是在目标机器上打开一个socket服务器,将Appium在会话中从PC发送的命令发送到UiAutomator进行处理。
它将侦听端口4724以获取命令,然后将它们传递给UiAutomator进行处理。
2)Bootstrap在appium激动人心的一天:
首先,bootstrap是uiautomator的测试脚本,它的入口类Bootstrap继承自uiautomatorTestCase,所以Uiautomator可以正常运行,也可以正常使用Uiautomator的方法。这是appium命令可以转换成uiautomator命令的关键;
其次,bootstrap是socket服务器,从4724端口监听appium的连接和命令数据,将appium命令转换成uiautomator命令,供uiautomator处理;
最后,bootstrap处理来自pc的命令,而不是文件。
四。使用的技术
Android使用两套技术,instrumentation和uiautomator。
使用iOS自动化
它还支持firefox,并可以扩展到其他平台。
打开默认端口4723以接受webdriver请求。4723是appium服务,处理脚本。
默认打开4724与Android设备通信。
动词(verb的缩写)能力
Capabilities是一组由客户端发送到Appium服务器的键值对,用来告诉服务器我们想要启动哪个会话。还有一些键-值对用于在自动化过程中修改服务器的行为。
六、自我理解的工作原则
Appium启动时会创建一个http: 127.0.0.1: 4723/wd/hub服务器(相当于中转站)。脚本会告诉服务器我要做什么,然后服务器会处理设备。服务器完成脚本交给他的任务后,
服务器如何与设备通信?
如果服务器默认使用端口4724与设备通信,底层调用uiautomator工具。在测试过程中,服务器将向设备抛出一个jar包appiumbootstrap.jar,并启动这个包。启动后会在手机上创建一个socket服务,暴露4724的端口;与socket服务相比,appium server是客户端;
服务器上的4724可以修改,设备上不行;服务器收到脚本的命令后,通过计算机上的4724端口将命令发送到设备的4724端口。appiumbootstrap.jar收到命令后返回点击,滑动其他操作,然后通过服务给服务器一个相应的服务。服务器收到之后,转到相应的脚本
服务器如何与脚本通信?
通过接口访问意味着服务器和脚本可以分离,只要访问地址127.0.0.1:4723即可。
个人理解
大概,脚本就是客户端,向appium server发送请求,服务器会提前在手机上推送一个应用,这个应用会建立一个服务。appium此时通过adb forward将脚本请求转发到手机上的服务器。手机上的服务器收到请求后,驱动手机执行自动动作。基本上,脚本就是客户端。请求被发送到appium server,它是服务器和客户端。将预先在移动电话上建立一个服务来接收转发的请求。手机收到后,会进行自动操作。
旧版和新版的区别在于部署到手机上的服务器不一样。从之前的socket服务器变成了netty服务器,端口也不一样了。其他的基本都一样。
webview页面使用chromdriver与手机上的webview系统进行通信。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。