标签:触控 开源 zhang ios平台 static android window 启动 参数
SkySeraph Jan. 26th 2017
Email:skyseraph00@163.com
更多精彩请直接访问SkySeraph个人站点:www.skyseraph.com
Appium 是一个自动化测试开源工具,支持 iOS 平台和 Android 平台上的原生应用,web 应用和混合应用。
这里有很关键一点,跨平台。更多了解Appuim多平台支持相关信息,参考官方platform-support
Session机制
Appuim的自动化测试是在一个 session 的上下文中运行,可以理解成Appuim会话。
每一次当Appium server成功启动后,客户端的测试库(client library)会要求与Server创建一个会话(session)。
会话的作用是为了确保能区别不同的客户端请求与不同的被测应用,每个特定的会话都有一个特定的sessionId参数。每次测试开始时,客户端将初始化一个session会话,虽然不同的语言初始化的方式不同,但是他们都要发送POST/session请求到服务器端,这些请求里面都会带有一个对象:desired capabilities ,这个时候服务器端会启动自动化session然后返回一个session ID,以后的命令都会用这个seesion ID去匹配。
Appuim服务端
包含众多语言库(Java, Ruby, Python, PHP, JavaScript,C#等),都实现了 Appium 对 WebDriver 协议的扩展。
JSON wire protocol
Appuim中非常重要的协议
Appuim基于Nodejs编写,基于HTTP协议,可以看成一个类似selenium webdriver的基于移动平台的webdriver,遵循RESTful设计风格web服务器,接受客户端的连接然后在手机设备上执行命令,最后通过HTTP的响应收集命令执行的结果。
如下为我整理的Appuim Android平台下架构原理图,iOS也类似,只是Bootstrap部分由Instruments替换,UiAutomator由UIAutomation替换。
如下两图参考testerhome PPT的Appuim Android和iOS平台下数据流程图。
其中,Android平台下,Android API 17+,底层调用android平台自带的UI测试框架Uiautomator;反之,调用的selendroid测试框架来完成。
如下所示,Appuim Bootstrap部分源码结构,分UiWatchers、Bootstrap和UIAutomator三部分,非常清晰。
Bootstrap入口类为Bootstrap.java,继承自UiAutomatorTestCase,然后开启Socket接收命令,时序如下。
类关系如下图所示,很简单。
Bootstrap整体分SocketServer部分,CommandHandler部分,Watchers部分和UiAutomator四部分。
1
|
try {
|
1
|
private static HashMap<String, CommandHandler> map = new HashMap<String, CommandHandler>();
|
具体映射通过AndroidCommandExecutor中的execute实现。
1
|
public AndroidCommandResult execute(final AndroidCommand command) {
|
1
|
public void registerAnrAndCrashWatchers() {
|
文章更新, 请移步个人站点查看.
========
By SkySeraph-2017
标签:触控 开源 zhang ios平台 static android window 启动 参数
原文地址:http://www.cnblogs.com/skyseraph/p/6443596.html