athrun的InstrumentDriver源码阅读笔记

athrun的InstrumentDriver源码阅读笔记


重要文件说明
1.InstrumentDriver
MySocket
:pc端的Socket服务,建立监听并响应UIAutomation脚本发过来的socket请求。是pc和UIAutomation测试脚本通信的基础,所有元素的操作都会翻译成js脚本,通过Socket连接传送给UIAutomation。
UIAElement:除了UIATarget、UIApplication以外所有控件元素的基类,封装了findElement、printElementsTree、images、buttons等各种控件的属性和方法,大多数的函数都是通过拼接js脚本然后调用MySocket执行。

InstrumentDriverTestCase 所有测试类的基类,封装pc端用例执行的一系列流程,写用例时只需要继承InstrumentDriverTestCase类,然后直接写testcase就行了。
@BeforeClass:环境准备,把JSLib文件部署到工作目录,设置工作目录权限
@Before:a.清理instruments进程,删除临时文件。b.启动serverSocket监听。c.启动instrucments。
@执行用例
@After:a.给客户端发送停止命令。b.服务端停止监听。c.停止instrucments进程


2.JSLib
common.js
:UIAutomation脚本,简单封装了脚本运行框架。它初始化了taiget,app,win,host等常用对象,并定义了元素查找、打印等常用方法,是CSRunner.js运行的基础。
CSRunner.js:UIAutomation脚本主体,循环的向serverSocket获取命令,根据命令的类型执行命令,然后返回结果。
runTests.sh:通过脚本调用instruments,执行UIAutomation脚本,应该在serverSocket监听启动之后执行
TcpSocket.sh:shell命令实现的socket客户端,主要功能就是一次客户端的socket的请求,在js中通过host.perfoemTaskWithPathArgumentsTimeout(脚本名,参数数组,超时时间)函数调用。

3.辅助类:
Config
:从配置文件中读取参数
DriverUtil:从配置文件中读取参数
ResourceManager:用于部署运行环境

开始举例子了:
一个用例的执行过程(跟上变重复了)
:
1.环境准备,把JSLib文件部署到工作目录,初始化Instruments的工作目录。这个过程只在第一次用例执行前执行一次
2.初始化MySocket的监听,并启动instrucments,用例准备过程结束
3.开始执行用例,每一条函数的运行过程后边细说
4.a.MySocket给客户端发送停止命令。b.服务端停止监听。c.停止instrucments进程
下一个用例执行时只需要重复2、3、4的过程了

一条命令的执行过程
以win.findElementByText("input”,0,UIATextField.class) .sendKeys("dfdfd") 为例
1.findElementByText方法拼接js脚本:script = findElements('')~~~并传递给MySocket.getText()方法
2.MySocket从连接队列中取出一条连接,发送脚本信息
3.TcpSocket.sh获取脚本数据,调用common.js中定义的findElements方法,并通过json的方式把数据返回给TcpSocket
4.findElementByText函数把获取的json函数转换为java对象返回来。
5.sendKeys("dfdfd”)是另一个命令了,重复执行1-4的过程。


你可能感兴趣的:(athrun的InstrumentDriver源码阅读笔记)