2.1 Client端:
一般来说就是运行代码的机器,即我们是用Java语言编写的代码,也可以用其他
Selenium支持
Python,ruby,C#等语言来编写,Appium提供的Appium-client API是Appium通过扩展Selenium的Webdriver协议而来的,我们编写代码的时只要实现Webdriver标准协议即可。
Appium Server功能是监听接口,接收client端发送的command,然后将command转为移动端能够识别的command,然后发送给移动设备进行操作,再等待移动设备返回来的操作结果,将操作结果发送给client端。 Appium server是可以放在client端,也可以放在云端。 Appium server 默认的端口号是4723,用于Appium server监听client端的发送来的请求。
2.3 移动设备:
2.3.1 Android设备
Android端,Appium基于Webdriver协议,利用Bootstrap.jar,最后通过调用UIautomatior命令,实现APP的自动化测试(Android4.2以前的版本是用Instrumentation框架,通过绑定另外一个独立的selendroid项目来实现),Android4.2以后的版本是用UIautomator)。UIAutomator测试框架是Android SDK自带的APP UI自动化测试Java库,另外UIAutomator对H5支持有限,Appium引入了Chromedriver以及Safaridriver来实现H5的自动化。
1.Appium server将监听到的4723端口的指令,转发给中间件Bootstrap.jar。Bootstrap.jar是用Java编写的,安装在Android手机上;
2.Bootstrap监听4724端口并接收Appium server的指令;
3.Bootstrap再通过调用UIautomator的命令来实现具体的command操作。
4.最后Bootstrap将执行的结果返回给Appium server。
2.3.2 IOS设备
IOS设备底层是用的uiautomation接口。Appium ios封装的是apple的instruments框架,主要用了Instrument里的Automation(APPle的自动化测试框架),然后在设备注入Bootstrap.js进行监听。
在IOS设备的工作过程:
1.Appium Server将监听到的4723端口的指令,调用instruments.js启动一个socket server,同时分出一个子进程instrument.app,将Bootstrap.js注入到设备,然后
2.instruments.j启动一个socket server,同时分出一个子进程instrument.app,将Bootstrap.js注入到IOS设备,进行具体的指令操作。
3.最后command执行完成后,Bootstrap.js将执行的结果返回给Appium server。
Android和IOS区别在于Appium server将请求转发到Bootstrap.js和Bootstrap.jar,然后由Bootstrap驱动UIAutomation和UiAutomator去device上完成具体的操作动作。
2.3.3 Windows设备
Appium对Windows设备的支持和操作要比Android和IOS设备简单许多,但需要Windows application Driver.exe支持,Winappdriver是一个符合Json移动协议标准的服务,主要用于监听Json协议的HTTP请求。Winappdriver默认的监听地址是127.0.0.1:4723,可以修改这个地址来监听不同的IP地址和端口,实现远程自动化测试但需要使用管理员权限来启动WinappDriver,
语法: WinAppDriver.exe IPaddress Port
操作:1.安装好winAppDriver后,以管理员权限运行cmd;
2.定位到WinAPPDriver安装路径下;
3.运行 WinAppDriver.exe 10.31.4.100 4723 (也可以修改为WinAppDriver.exe 10.31.4.100 4880/wd/hub)