python uiautomator 源码学习(三) josonRPCServer-DUT Side
2015-04-10 16:28
127 查看
python uiautomator 源码学习(三) josonRPCServer-DUT Side
官网: https://github.com/xiaocong/uiautomator
言归正传。JsonRPCServer. 要在DUT上启用JsonRPCServer 需要三步:
1. push files.
启用server
#由于这个server是长时间挂起,所以需要手动Ctrl+C 退出。 并不是出问题了
3. 绑定tcp port
有经验的朋友一眼就可以看出:
1. server是用uiautomator 为启动器,长期挂起。
2. main class :com.github.uiautomatorstub.Stub
3. Server 是绑定与Android 的 9008 port。
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调用实现
可以参考博客: /article/9197980.html
jsonrpc4j or github
官网: 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.javapublic 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
相关文章推荐
- python uiautomator 源码学习(二) JosonRPCServer-Host Side
- Python uiautomator 源码学习(一)
- python 自动化uiautomator 测试android报错:ioerror RPC server not started
- 深入学习Django源码基础1 - 深刻理解Python中的元类(metaclass)
- hadoop源码研读之路(六)----RPC的Client端和Server端
- [Python源码学习]之Very High Level Layer
- [Python源码学习]之对象创建与销毁
- [Python源码学习]之PyObject和PyTypeObject
- 教为学:python学习之路(一):python源码安装
- 分布式文件系统KFS源码阅读与分析(三):RPC实现机制(MetaServer端)
- Python源码学习笔记(1 基本数据类型)
- Hadoop源码分析之一(RPC机制之Server)
- JavaScript RPC Server 源码
- python源码学习笔记(一)
- Hadoop RPC源码分析之Server
- hadoop源码研读之路(六)----RPC的Client端和Server端
- [Python源码学习] 之 Python解释器
- Python源码分析--学习笔记一
- [Python源码学习]之Py_InitializeEx
- Android源码学习之接着浅析SystemServer