代码片段 C#
C#使用uiautomator
2025年02月07日 2 分钟阅读
开发背景#
uiautomator是Android平台上用于UI自动化测试的框架,可模拟用户对设备屏幕的各种操作,如点击、输入、滑动等。
Python中有相对成熟的解决方案,普遍应用于自动化测试中。 项目地址:
uiautomator2
codeskyblue
github.com
然而,近期在C#项目的开发进程中,我始终未能找到合适的解决方案。基于此状况,我计划借鉴该项目,着手打造一个C#版本的项目。
原理研究#
首先先了解一下,该项目实现UIAutomator的原理。

简单来说,其实现原理是:在手机内开启一个rpc服务,然后PC端借助adb forward(adb转发)将该服务在手机中的端口转发至本地。随后,PC端向此服务发送诸如点击、输入之类的请求,手机中的该服务便会执行相应操作来完成这些请求。
尝试一下#
通过以下指令,将U2.jar导入到设备中并启动一个端口固定为9008的服务端
adb push u2.jar /data/local/tmp
adb shell "CLASSPATH=/data/local/tmp/u2.jar app_process / com.wetest.uia2.Main"通过adb的端口转发功能,随机一个端口与9008形成映射
adb forward tcp:1234 tcp:9008此时python给本地的1234端口发送信息, 设备中的服务端也能同时接收到。
但是,还需要了解发送的是什么信息。通过修改python的uiautomator2源码(如下图所示),打印相关信息。
