python uiautomator 源码学习(三) josonRPCServer-DUT Side
来源:互联网 发布:淘宝客服外包 编辑:程序博客网 时间:2024/05/19 10:35
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
可以参考博客: http://blog.csdn.net/mrtitan/article/details/24332429 - jsonrpc4j or github
0 0
- python uiautomator 源码学习(三) josonRPCServer-DUT Side
- python uiautomator 源码学习(二) JosonRPCServer-Host Side
- Python uiautomator 源码学习(一)
- android uiautomator学习(三)杂项
- android uiautomator学习(三)杂项
- 初探UiAutomator(三)
- uiautomator简单使用(三)
- Python + uiautomator测试 [学习资料收集]
- android自动化测试Uiautomator源码分析之三
- UiAutomator笔记之UiSelector API(三)
- 安卓自动化之uiautomator(Python篇)三 Uiobject
- Python学习(三)
- 学习Python (三)
- python 学习(三)
- python学习(三)
- python学习(三)
- python 学习(三)
- python 学习(三)
- android:persistentDrawingCache用法说明
- PATCH Method of HTTP
- 关于我对ABA问题的理解
- [省选前题目整理][BZOJ 1038][ZJOI 2008]瞭望塔(半平面交)
- C#拾遗之结构和类
- python uiautomator 源码学习(三) josonRPCServer-DUT Side
- C# WinForm(窗体) 之间传值
- 蓝桥杯--dyx--李白打酒--dfs
- 系统总线
- android的repo和git使用遇到的疑难杂症
- 高德地图定位及显示位置
- (C)*p++和*++p区别
- 裁下sd卡的图片文件突然破损了怎么办
- MIC安装过程