您的位置:首页 > 编程语言 > Python开发

python uiautomator 源码学习(三) josonRPCServer-DUT Side

2015-04-10 16:28 127 查看
python uiautomator 源码学习(三) josonRPCServer-DUT Side

官网: https://github.com/xiaocong/uiautomator

前言

上两篇介绍了host端的源码,及使用,后面主要介绍DUT 端。 由于DUT 端的JsonRPCServer 是java写的,博主这部分不是太熟悉,而且对HTTPServer的启动原理也不太熟悉,所以这里只能是探索性学习。会不断学习与更新。

言归正传。JsonRPCServer. 要在DUT上启用JsonRPCServer 需要三步:

1. push files.

$ adb push uiautomator-stub.jar /data/local/
$ adb push bundle.jar /data/local/


启用server

$ adb shell uiautomator runtest  uiautomator-stub.jar bundle.jar -c com.github.uiautomatorstub.Stub


#由于这个server是长时间挂起,所以需要手动Ctrl+C 退出。 并不是出问题了

3. 绑定tcp port

$ adb forward tcp:9008 tcp:9008 # tcp forward


有经验的朋友一眼就可以看出:

1. server是用uiautomator 为启动器,长期挂起。

2. main class :com.github.uiautomatorstub.Stub

3. Server 是绑定与Android 的 9008 port。

获取源码

Download from: https://github.com/xiaocong/android-uiautomator-jsonrpcserver/releases

源码结构

├── ant.properties
├── build.xml
├── custom_rules.xml
├── libs
│   ├── jackson-annotations-2.2.2.jar
│   ├── jackson-core-2.2.2.jar
│   ├── jackson-databind-2.2.2.jar
│   ├── jsonrpc4j-0.28.jar
│   ├── portlet-api-2.0.jar
│   └── servlet-api-2.5.jar
├── LICENSE
├── local.properties
├── nanohttpd
├── project.properties
├── README.md
└── src
└── com
└── github
└── uiautomatorstub
├── AutomatorHttpServer.java
├── AutomatorServiceImpl.java
├── AutomatorService.java
├── ConfiguratorInfo.java
├── DeviceInfo.java
├── Log.java
├── NotImplementedException.java
├── ObjInfo.java
├── Point.java
├── Rect.java
├── Selector.java
├── Stub.java
└── watcher
├── ClickUiObjectWatcher.java
├── PressKeysWatcher.java
└── SelectorWatcher.java


流程



Main Class

Stub.java

public class Stub extends UiAutomatorTestCase()

Uiautomator test case. 只写了setup和teardown

setUp() 启动jsonRPCServer

tearDown

AutomatorHttpServer.java

public class AutomatorHttpServer extends NanoHTTPD

NanoHTTPD 轻量级server 架构

def route 为了加载 map router = {uri:JsonRPCServer }

重写Response server。 handler, 根据uri、method、headers、params、files 分别response

AutomatorServiceImpl.java

public class AutomatorServiceImpl implements AutomatorService

implements AutomatorService, 作为user service 加载进RPC Server

RPC server 所有methods 定义,methods factory

AutomatorService.java

public interface AutomatorService

user service 接口类

跟com.googlecode.jsonrpc4j.JsonRpcService 一样,可用于JsonRPCServer user service。

ConfiguratorInfo.java,DeviceInfo.java,ObjInfo.java,Point.java,Selector.java

底层,供AutomatorServiceImpl调用实现

Dependences:

nanohttpd

可以参考博客: /article/9197980.html

jsonrpc4j or github
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: