appium优点:
跨架构,native hybrid webview
跨设备,android iosfirefoxos
跨语言,java python ruby nodejsphp
跨app, 可以在多个app之间交互
不依赖源代码
不限制测试框架和平台
执行思路分析:
首先得启动模拟器(或者真机) 然后启动appium-deskstop 服务。
然后使用脚本语言连接appium和python(借助appium-python-client) 将命令发给appium服务器,服务器接收指令传送命令给指定的模拟器(或真机),执行命令操作。
Tip:指定机器,就必须包含capabilities所需要的必要字段信息。
appium工作原理分析:
appium是基于webdriver协议添加对移动设备自动化api扩展而成的,所以具有和webdriver一样特性
webdriver是基于HTTP协议,第一链接会建立session会话,并通过post发送一个json告知服务器相关测试信息
5
剖析:
Bootstrap是Appium运行在安卓目标测试机器上的一个UiAutomator测试脚本,该脚本的唯一一个所做的事情是在目标机器开启一个socket服务器来把一个session中Appium从PC端过来的命令发送给UiAutomator来执行处理。
它会监听4724端口获得命令然后pass给UiAutomator来做处理。
Bootstrap在appium中扮演的角色:
首先,Bootstrap是uiautomator的测试脚本,它的入口类bootstrap继承于UiautomatorTestCase,所以Uiautomator可以正常运行它,它也可以正常使用uiautomator的方法,这个就是appium的命令可以转换成uiautomator命令的关键;
其次,bootstrap是一个socket服务器,专门监听4724端口过来的appium的连接和命令数据,并把appium的命令转换成uiautomator的命令来让uiautomator进行处理;
最后,bootstrap处理的是从pc端过来的命令
uiautomator 会将Bootstrap.jar导入在移动设备中,这个jar包含了各种自动化命令解析。
Capabilities
Capabilities是由客户端发送给Appium服务器端的用来告诉服务器去启动哪种我们想要的会话的一套键值对集合。当中也有一些键值对是用来在自动化的过程中修改服务器端的行为方式。
Android端,appium基于WebDriver协议,利用Bootstrap.jar,最后通过调⽤用UiAutomator的命令,实现App的自动化测试UiAutomator测试框架是Android SDK自带的App UI自动化测试Java库。另外由于UiAutomator对H5的支持有限,appium引入了chromedriver以及safaridriver等来实现基于H5的自动化。
服务端和设备如何通讯?
服务端和设备默认使用4724端口进行通讯的,底层调用uiautomator工具,在测试的时候服务端会给设备扔一个jar包就是appiumbootstrap.jar,会启动这个包,启动之后会在手机上创建一个socket服务,暴露的就是4724的端口;相对于socket服务来说,appium服务端又是一个客户端;
服务端的4724可以修改,设备上的不可以;服务端收到脚本传递过来的命令之后,通过电脑上的4724端口,想设备上的4724端口发送指令,appiumbootstrap.jar收到指令后回去完成点击,滑动其他的操作,完成之后再通过服务给服务端一个相应。服务端收到之后再去相应脚本