电脑批量控制手机基础入门
哔哩哔哩:https://www.bilibili.com/video/BV1TufWYwETM/
1、课程简介
2、开发软件前的准备工作
- 面向对象
3、使用运行命令操作手机
运行 (“cmd.exe /c adb devices”, 假, )
4、创建adb操作类
5、启动和停止adb方法
6、查看adb版本
7、获取设备信息
系统_取DOS执行结果 (“adb devices -l”)
正则.创建 (“(.*?)\s+(device)\s+product:(.*?)\s+model:(.*?)\s+device:(.*?)$”, 返回文本, )
8、打开投屏
9、批量打开投屏
10、排列投屏
11、获取设备IP地址
adb -s 连接名 shell ifconfig
adb -s 连接名 shell ifconfig wlan0
12、一键转无线连接
13、安装apk
14、批量安装apk
15、卸载app和批量卸载app
16、取包名交互界和打开包名交互界
17、文件管理
18、模拟按键输入
19、模拟文本输入
20、模拟滑动
21、模拟点击
22、获取XML信息
adb shell uiautomator dump /sdcard/ui.xml
.版本 2
.子程序 取XML信息, 文本型, 公开, adb shell uiautomator dump /sdcard/ui.xml
.参数 连接名, 文本型
.局部变量 返回文本, 文本型
返回文本 = 系统_取DOS执行结果 (“adb -s ” + 连接名 + “ shell uiautomator dump /sdcard/” + 连接名 + “.xml”)
返回 (返回文本)
23、解析XML信息
<node index="(.*?)" text="(.*?)" resource-id="(.*?)" class="(.*?)" package="(.*?)" content-desc="(.*?)" checkable="(.*?)" checked="(.*?)" clickable="(.*?)" enabled="(.*?)" focusable="(.*?)" focused="(.*?)" scrollable="(.*?)" long-clickable="(.*?)" password="(.*?)" selected="(.*?)" bounds="(.*?)"
24、解析XML信息(二)
.版本 2
.数据类型 控件对象, 公开
.成员 text, 文本型
.成员 id, 文本型
.成员 desc, 文本型
.成员 bounds, 文本型
.成员 clickable, 文本型
.版本 2
.子程序 子程序_解析xml
.参数 参_连接名, 文本型
.参数 局_控件数组, 控件对象, 数组
.局部变量 bin, 字节集
.局部变量 xml信息, 文本型
.局部变量 局_正则, 正则表达式类
.局部变量 子_正则, 正则表达式类
.局部变量 i, 整数型
.局部变量 控件对象, 控件对象
重定义数组 (局_控件数组, 假, 1)
.判断循环首 (取反 (文件是否存在 (取运行目录 () + “\xml\” + 参_连接名 + “.xml”)))
程序_延时 (1000)
.判断循环尾 ()
bin = 读入文件 (取运行目录 () + “\xml\” + 参_连接名 + “.xml”)
xml信息 = 编码_utf8到gb2312 (到文本 (bin))
局_正则.创建 (#xml正则, xml信息, )
.计次循环首 (局_正则.取匹配数量 (), i)
' 调试输出 (局_正则.取匹配文本 (i - 1, ))
控件对象.text = 局_正则.取子匹配文本 (i, 2)
控件对象.id = 局_正则.取子匹配文本 (i, 3)
控件对象.desc = 局_正则.取子匹配文本 (i, 6)
控件对象.bounds = 局_正则.取子匹配文本 (i, 17)
控件对象.clickable = 局_正则.取子匹配文本 (i, 9)
加入成员 (局_控件数组, 控件对象)
.计次循环尾 ()
25、解析XML信息(三)
.版本 2
.子程序 子程序_解析XML
.参数 参_连接名, 文本型
.参数 控件集合, 控件对象, 数组
.局部变量 bin, 字节集
.局部变量 xml信息, 文本型
.局部变量 局_正则, 正则表达式类
.局部变量 匹配数量, 整数型
.局部变量 控件对象, 控件对象
.局部变量 i, 整数型
bin = 读入文件 (参_连接名 + “.xml”)
xml信息 = 编码_utf8到gb2312 (到文本 (bin))
局_正则.创建 (#常量_XML正则, xml信息, , , , )
匹配数量 = 局_正则.取匹配数量 ()
局_正则.取正则文本 ()
.计次循环首 (匹配数量, i)
控件对象.id = 局_正则.取子匹配文本 (i, 3, )
控件对象.text = 局_正则.取子匹配文本 (i, 2, )
控件对象.desc = 局_正则.取子匹配文本 (i, 6, )
控件对象.class = 局_正则.取子匹配文本 (i, 4, )
控件对象.bounds = 局_正则.取子匹配文本 (i, 17, )
控件对象.clickable = 局_正则.取子匹配文本 (i, 9, )
加入成员 (控件集合, 控件对象)
.计次循环尾 ()
26、获取控件坐标范围
\[(.*?),(.*?)\]\[(.*?),(.*?)\]
.版本 2
.支持库 spec
.子程序 _按钮_获取控件坐标_被单击
.局部变量 数组成员数, 整数型
.局部变量 控件集合, 控件对象, , "0"
.局部变量 i, 整数型
.局部变量 局_正则, 正则表达式类
.局部变量 控件bounds, 控件bounds
.局部变量 centerX, 整数型
.局部变量 centerY, 整数型
子程序_解析XML (编辑框_连接名.内容, 控件集合)
数组成员数 = 取数组成员数 (控件集合)
.计次循环首 (数组成员数, i)
.如果真 (控件集合 [i].text = “微信”)
调试输出 (控件集合 [i].bounds)
' \[(.*?),(.*?)\]\[(.*?),(.*?)\]
局_正则.创建 (“\[(.*?),(.*?)\]\[(.*?),(.*?)\]”, 控件集合 [i].bounds, , , , )
' 调试输出 (局_正则.取匹配文本 (1))
控件bounds.left = 局_正则.取子匹配文本 (1, 1)
控件bounds.top = 局_正则.取子匹配文本 (1, 2)
控件bounds.right = 局_正则.取子匹配文本 (1, 3)
控件bounds.bottom = 局_正则.取子匹配文本 (1, 4)
跳出循环 ()
.如果真结束
.计次循环尾 ()
调试输出 (控件bounds.left, 控件bounds.top, 控件bounds.right, 控件bounds.bottom)
centerX = (到整数 (控件bounds.right) - 到整数 (控件bounds.left)) ÷ 2 + 到整数 (控件bounds.left)
centerY = (到整数 (控件bounds.bottom) - 到整数 (控件bounds.top)) ÷ 2 + 到整数 (控件bounds.top)
调试输出 (centerX, centerY)
27、adb截屏功能
adb exec-out screencap -p > sc.png
28、升级中控内部程序
- scrcpy更新
- 获取设备ip地址方法的更新
29、启用Http服务
.版本 2
.程序集变量 httpServer, IHttpServer
.程序集变量 http句柄, 整数型
.版本 2
.支持库 spec
.子程序 子程序_启动http服务器
.局部变量 启动状态, 逻辑型
http句柄 = httpServer.创建 (假)
httpServer.事件_请求体报文 (&请求体报文)
本地ip = 取本机ip()
启动状态 = httpServer.启动 (http句柄, 本地ip[2], 898)
调试输出 (启动状态)
.版本 2
.子程序 请求体报文, 整数型
.参数 通信句柄, 整数型
.参数 连接ID, 整数型
.参数 数据指针, 整数型
.参数 数据长度, 整数型