要开启多台
Server进行UWP测试,那么首先要了解下Appium的
工作原理:
一.Appium框架组成
Appium框架组成是
java自动化脚本即client端(通过Java编写的代码,也可以通过其他语言编写),Appium指令服务器,sdk通信环境(
Android模拟器)或移动端设备(这里是测试
Windows平台的设备,)。
二.Appium通信原理:
Appium通信原理:Client端发送自动化指令给Appium server,Appium Server接收到client发送的指令后,转换为移动端能够识别的指令,然后发送给移动端设备,并对移动端设备进行操作。
如下图,Android设备的appium自动化原理。
2.1 Client端:
一般来说就是运行代码的机器,即我们是用Java语言编写的代码,也可以用其他
Selenium支持
Python,ruby,C#等语言来编写,Appium提供的Appium-client API是Appium通过扩展Selenium的Webdriver协议而来的,我们编写代码的时只要实现Webdriver标准协议即可。
2.2 Appium Server:
Appium Server功能是监ting接口,接收client端发送的command,然后将command转为移动端能够识别的command,然后发送给移动设备进行操作,再等待移动设备返回来的操作结果,将操作结果发送给client端。 Appium server是可以放在client端,也可以放在云端。 Appium server 默认的端口号是4723,用于Appium server监ting client端的发送来的请求。
2.3 移动设备:
Appium最早是支持Android和
IOS移动设备app自动化
测试,后来开始对Windows设备平台的支持,支持windows平台的UWP软件
自动化测试。
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的自动化。
在Android设备的工作过程:
1.Appium server将监ting 到的4723端口的指令,转发给中间件Bootstrap.jar。Bootstrap.jar是用Java编写的,安装在Android手机上;
2.Bootstrap监ting 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进行监ting。
在IOS设备的工作过程:
1.Appium Server将监ting 到的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移动协议标准的服务,主要用于监ting Json协议的HTTP请求。Winappdriver默认的监ting地址是127.0.0.1:4723,可以修改这个地址来监ting不同的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)
那么重点来了,自己编写的脚本,如何在远程server上跑起来呢?
三.开启UWP多台远程server测试
不像Appium测试Android和IOS app那样设置远程server,UWP的远程测试是需要在Windows设备上设置并开启对应端口的,具体操作如下:
1. 首先在要测试的Windows设备上开启入站规则,主要是端口设置
1)在Windows 10设备上,进入System and security->Windows firewall->Windows firewall with advanced security即高级安全Windows防火墙
2)新建一个inbound rule入站规则
3)Rule Type选择Port;
4)选择TCP
5)输入一个特定的本地端口号(一般WinAppDriver的标准端口是4723)
6)操作选择允许连接
7)配置文件选择所有项
8)输入规则名称,如WinAPPdriver远程
2.其次再脚本机上ping下Windows10 设备的IP 地址,检查网络连接是否正常。
3.然后在Windows10设备上安装WinAppDriver.exe
4.运行 WinAppDriver.exe 10.31.4.100 4723.
5.最后将脚本中的capability连接的URL地址改为要测试的机器的地址,即10.31.4.100。就可以开始跑脚本了。