android-midscene-automation 0.1.18 → 0.1.20
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +30 -0
- package/README.md +62 -3
- package/USAGE.md +32 -3
- package/package.json +1 -1
- package/server/appium-recorder/appium-runner.ts +312 -76
- package/server/appium-recorder/managed-appium.ts +147 -0
- package/server/appium-recorder/report.ts +358 -6
- package/server/appium-recorder/repository.ts +43 -6
- package/server/appium-recorder/routes.ts +18 -0
- package/src/appium-recorder/AppiumPage.vue +114 -50
- package/src/appium-recorder/api.ts +10 -0
- package/src/appium-recorder/components/FlowStepEditor.vue +0 -8
- package/src/appium-recorder/components/NestedConditionBranches.vue +373 -0
- package/src/appium-recorder/components/RecordedSteps.vue +607 -23
- package/src/appium-recorder/flow-copy.ts +193 -0
- package/src/appium-recorder/flow-layout.ts +88 -0
- package/src/style.css +163 -34
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,35 @@
|
|
|
1
1
|
# 更新记录
|
|
2
2
|
|
|
3
|
+
## v0.1.20
|
|
4
|
+
|
|
5
|
+
- 修复包含判断分支的历史脚本在加载时因流程轴线循环计算导致渲染失败、无法切换到“当前录制”的问题。
|
|
6
|
+
- Appium 工作区加载脚本后会同步切换并保存“当前录制”标签页状态。
|
|
7
|
+
|
|
8
|
+
- Appium 判断分支按“是 / 否”两侧各自的子树宽度布局,并以当前判断节点为锚点就近排列;内容较少的一侧不再被推向画布远端,连接线同步跟随真实节点中心。
|
|
9
|
+
- 加深 Appium 流程复制模式的节点选中颜色,并确保“是 / 否”分支节点不会覆盖蓝色选中边框。
|
|
10
|
+
- Appium 复制判断节点后,父级分支会按嵌套子树宽度自动扩展;连接线端点与分支中心保持对齐,移除穿透子流程的父级竖线,并避免不同层级重复显示“插入操作”。
|
|
11
|
+
- Appium 流程总览弹窗补齐批量复制、节点执行/编辑/删除、开始与节点后插入、分支插入及连接操作;移除“撤销粘贴”功能。
|
|
12
|
+
- Appium 流程节点在主画布与放大弹窗中统一固定尺寸,补充分支节点间距,移除节点序号,并在放大弹窗补充主节点和递归分支节点的复制操作。
|
|
13
|
+
- Appium 批量复制支持选择“分支末尾 → 已连接的后续主流程”节点,不再误报为不同分支。
|
|
14
|
+
- Appium 流程复制支持递归展示粘贴后的判断子节点,保留“是 / 否”分支及其子节点的复制、编辑和插入操作。
|
|
15
|
+
|
|
16
|
+
- Appium session 创建与“启动 APP”流程节点解耦:session 只绑定设备,应用统一由启动节点按预设包名通过 ADB 启动。
|
|
17
|
+
- Appium 脚本保存和导入时会忽略不属于目标 App 的桌面、设置等系统 Activity,并从首个业务节点快照恢复入口 Activity。
|
|
18
|
+
- Appium 录制流程新增单节点和同分支连续节点批量复制;可在现有插入位置粘贴,自动重建节点 ID、判断子流程和流程连接。
|
|
19
|
+
- Appium 工作区扩大“录制与脚本”区域并保持设备预览完整高度;回放输出改为右下角悬浮入口,通过可拖动、可缩放弹窗查看。
|
|
20
|
+
- 修复 Appium 批量复制判断节点和子节点时的跨分支误判;统一主流程与分支节点宽度,并扩大分支间距,避免粘贴节点尺寸不一致和内容挤压。
|
|
21
|
+
- Appium 回放日志弹窗的输出区域改为暗色终端样式,并优化滚动条对比度。
|
|
22
|
+
- 修复历史脚本因当前 Activity 不匹配时“粘贴节点”静默无效的问题;粘贴现在与普通插入操作使用相同锁定规则,并在页面操作忙碌时给出提示。
|
|
23
|
+
|
|
24
|
+
## v0.1.19
|
|
25
|
+
|
|
26
|
+
- Appium 回放输出新增托管 Appium 服务端完整日志,并将页面回放输出和 Appium 原始日志保存为同名 `.log` 文件。
|
|
27
|
+
- Appium 回放新增“终止”操作;手动终止后会关闭当前 session,并继续生成 Markdown 报告、日志和截图回放。
|
|
28
|
+
- Appium 回放新增单文件 HTML 截图回放报告,内嵌实际执行节点前后、判断、失败与终止时的设备截图,无需额外图片目录。
|
|
29
|
+
- HTML 回放报告新增左侧执行步骤、默认收起的完整日志、顶部真实时间轴、截图缩略图、播放控制和可拖动进度条。
|
|
30
|
+
- HTML 回放按照节点截图的真实采集时间连续推进,并支持点击步骤、缩略图或时间轴定位画面。
|
|
31
|
+
- HTML 回放头部统一状态、设备、App、耗时和执行时间的对齐方式,日期改为紧凑的 24 小时格式。
|
|
32
|
+
|
|
3
33
|
## v0.1.18
|
|
4
34
|
|
|
5
35
|
- 修复 jsDelivr 将 HTML 文档显示为源码的问题;使用说明和更新记录改为自动嵌入 README,由 npm 页面直接渲染。
|
package/README.md
CHANGED
|
@@ -960,24 +960,44 @@ Home 键
|
|
|
960
960
|
[节点 2] 判断:是
|
|
961
961
|
```
|
|
962
962
|
|
|
963
|
+
默认情况下,每次回放会启动一个独立端口的 Appium 服务。回放输出会完整保留该服务的 stdout/stderr,包括 `Appium`、`AndroidUiautomator2Driver`、`ADB`、请求参数、响应内容和驱动诊断信息,同时保留工具自身记录的请求方法、接口路径、HTTP 状态和耗时。例如:
|
|
964
|
+
|
|
965
|
+
```text
|
|
966
|
+
2026-08-22 13:57:35:756 - [Appium] Welcome to Appium v3.5.0
|
|
967
|
+
[AndroidUiautomator2Driver@ec68] Got response with status 200: {...}
|
|
968
|
+
[ADB] Running '.../adb -s device-id shell ...'
|
|
969
|
+
[Appium] 请求:POST /session
|
|
970
|
+
[Appium] 响应:HTTP 200 POST /session(328ms)
|
|
971
|
+
```
|
|
972
|
+
|
|
973
|
+
完整 Appium 日志可能包含输入值、设备信息和 WebDriver 请求参数。共享 `.log` 文件前请先检查并清理敏感内容。
|
|
974
|
+
|
|
975
|
+
如果通过环境变量 `APPIUM_SERVER_URL` 显式连接外部 Appium 服务,工具无法读取外部进程所在终端的 stdout/stderr,只会保存 WebDriver 请求、响应状态、耗时和错误响应。需要完整服务端日志时,请不要设置该环境变量,让工具为回放自动启动 Appium。
|
|
976
|
+
|
|
963
977
|
“回放输出”默认只保留最近 `80` 行的可视高度,避免无限撑长页面。可以使用:
|
|
964
978
|
|
|
965
979
|
- 复制:复制当前完整日志。
|
|
966
980
|
- 展开查看:在弹窗中查看完整日志。
|
|
967
981
|
- 清除:清空页面上的回放输出。
|
|
968
982
|
|
|
969
|
-
|
|
983
|
+
回放期间顶部会显示“终止”按钮。点击后会停止后续节点、关闭当前 Appium session,并继续生成本次回放的报告和日志;执行结果标记为“已终止”。
|
|
970
984
|
|
|
971
|
-
|
|
985
|
+
### 回放报告、日志和截图回放
|
|
986
|
+
|
|
987
|
+
每次回放结束后,无论成功、失败或手动终止,都会生成 Markdown 报告、纯文本日志和单文件 HTML 截图回放。三个文件使用相同的日期时间和脚本名称:
|
|
972
988
|
|
|
973
989
|
```text
|
|
974
990
|
当前日期时间-脚本名称.md
|
|
991
|
+
当前日期时间-脚本名称.log
|
|
992
|
+
当前日期时间-脚本名称.html
|
|
975
993
|
```
|
|
976
994
|
|
|
977
995
|
报告保存到“参数配置 > 运行配置”指定的目录;没有指定时,默认保存在启动命令所在目录的 `output` 文件夹中,例如:
|
|
978
996
|
|
|
979
997
|
```text
|
|
980
998
|
output/2026-08-21_17-13-42-831-登录流程.md
|
|
999
|
+
output/2026-08-21_17-13-42-831-登录流程.log
|
|
1000
|
+
output/2026-08-21_17-13-42-831-登录流程.html
|
|
981
1001
|
```
|
|
982
1002
|
|
|
983
1003
|
报告包含:
|
|
@@ -987,7 +1007,16 @@ output/2026-08-21_17-13-42-831-登录流程.md
|
|
|
987
1007
|
- 每个节点的实际执行状态与执行信息。
|
|
988
1008
|
- 完整回放日志。
|
|
989
1009
|
|
|
990
|
-
|
|
1010
|
+
`.log` 文件保存页面中显示的完整回放过程,以及本次托管 Appium 进程未经截断的 stdout/stderr。生成成功后,报告与日志的绝对路径会追加到实时回放输出中;报告位置同时保存到数据库,便于后续追溯。
|
|
1011
|
+
|
|
1012
|
+
`.html` 文件在每个实际执行节点前后采集设备截图,并将截图以 Base64 形式直接嵌入文件。打开后可以:
|
|
1013
|
+
|
|
1014
|
+
- 在左侧查看执行步骤和当前截图对应的脚本、节点、阶段、结果、备注与 selector。
|
|
1015
|
+
- 在顶部时间轴查看截图所在的真实执行时间,并点击缩略图或时间轴跳转。
|
|
1016
|
+
- 使用“上一帧”“播放”“下一帧”及进度条控制回放;播放进度按实际回放耗时连续推进,不再按固定间隔逐张切换。
|
|
1017
|
+
- 在左侧步骤下方展开完整回放日志;日志默认收起。
|
|
1018
|
+
|
|
1019
|
+
判断分支、失败和手动终止会保留对应的最后画面。连接脚本中的实际执行节点也会进入同一条截图时间线。HTML 不依赖外部图片目录,可以单独复制和打开。
|
|
991
1020
|
|
|
992
1021
|
## 组合示例
|
|
993
1022
|
|
|
@@ -1181,6 +1210,36 @@ output/2026-08-21_17-13-42-831-登录流程.md
|
|
|
1181
1210
|
|
|
1182
1211
|
# 项目更新记录
|
|
1183
1212
|
|
|
1213
|
+
## v0.1.20
|
|
1214
|
+
|
|
1215
|
+
- 修复包含判断分支的历史脚本在加载时因流程轴线循环计算导致渲染失败、无法切换到“当前录制”的问题。
|
|
1216
|
+
- Appium 工作区加载脚本后会同步切换并保存“当前录制”标签页状态。
|
|
1217
|
+
|
|
1218
|
+
- Appium 判断分支按“是 / 否”两侧各自的子树宽度布局,并以当前判断节点为锚点就近排列;内容较少的一侧不再被推向画布远端,连接线同步跟随真实节点中心。
|
|
1219
|
+
- 加深 Appium 流程复制模式的节点选中颜色,并确保“是 / 否”分支节点不会覆盖蓝色选中边框。
|
|
1220
|
+
- Appium 复制判断节点后,父级分支会按嵌套子树宽度自动扩展;连接线端点与分支中心保持对齐,移除穿透子流程的父级竖线,并避免不同层级重复显示“插入操作”。
|
|
1221
|
+
- Appium 流程总览弹窗补齐批量复制、节点执行/编辑/删除、开始与节点后插入、分支插入及连接操作;移除“撤销粘贴”功能。
|
|
1222
|
+
- Appium 流程节点在主画布与放大弹窗中统一固定尺寸,补充分支节点间距,移除节点序号,并在放大弹窗补充主节点和递归分支节点的复制操作。
|
|
1223
|
+
- Appium 批量复制支持选择“分支末尾 → 已连接的后续主流程”节点,不再误报为不同分支。
|
|
1224
|
+
- Appium 流程复制支持递归展示粘贴后的判断子节点,保留“是 / 否”分支及其子节点的复制、编辑和插入操作。
|
|
1225
|
+
|
|
1226
|
+
- Appium session 创建与“启动 APP”流程节点解耦:session 只绑定设备,应用统一由启动节点按预设包名通过 ADB 启动。
|
|
1227
|
+
- Appium 脚本保存和导入时会忽略不属于目标 App 的桌面、设置等系统 Activity,并从首个业务节点快照恢复入口 Activity。
|
|
1228
|
+
- Appium 录制流程新增单节点和同分支连续节点批量复制;可在现有插入位置粘贴,自动重建节点 ID、判断子流程和流程连接。
|
|
1229
|
+
- Appium 工作区扩大“录制与脚本”区域并保持设备预览完整高度;回放输出改为右下角悬浮入口,通过可拖动、可缩放弹窗查看。
|
|
1230
|
+
- 修复 Appium 批量复制判断节点和子节点时的跨分支误判;统一主流程与分支节点宽度,并扩大分支间距,避免粘贴节点尺寸不一致和内容挤压。
|
|
1231
|
+
- Appium 回放日志弹窗的输出区域改为暗色终端样式,并优化滚动条对比度。
|
|
1232
|
+
- 修复历史脚本因当前 Activity 不匹配时“粘贴节点”静默无效的问题;粘贴现在与普通插入操作使用相同锁定规则,并在页面操作忙碌时给出提示。
|
|
1233
|
+
|
|
1234
|
+
## v0.1.19
|
|
1235
|
+
|
|
1236
|
+
- Appium 回放输出新增托管 Appium 服务端完整日志,并将页面回放输出和 Appium 原始日志保存为同名 `.log` 文件。
|
|
1237
|
+
- Appium 回放新增“终止”操作;手动终止后会关闭当前 session,并继续生成 Markdown 报告、日志和截图回放。
|
|
1238
|
+
- Appium 回放新增单文件 HTML 截图回放报告,内嵌实际执行节点前后、判断、失败与终止时的设备截图,无需额外图片目录。
|
|
1239
|
+
- HTML 回放报告新增左侧执行步骤、默认收起的完整日志、顶部真实时间轴、截图缩略图、播放控制和可拖动进度条。
|
|
1240
|
+
- HTML 回放按照节点截图的真实采集时间连续推进,并支持点击步骤、缩略图或时间轴定位画面。
|
|
1241
|
+
- HTML 回放头部统一状态、设备、App、耗时和执行时间的对齐方式,日期改为紧凑的 24 小时格式。
|
|
1242
|
+
|
|
1184
1243
|
## v0.1.18
|
|
1185
1244
|
|
|
1186
1245
|
- 修复 jsDelivr 将 HTML 文档显示为源码的问题;使用说明和更新记录改为自动嵌入 README,由 npm 页面直接渲染。
|
package/USAGE.md
CHANGED
|
@@ -798,24 +798,44 @@ Home 键
|
|
|
798
798
|
[节点 2] 判断:是
|
|
799
799
|
```
|
|
800
800
|
|
|
801
|
+
默认情况下,每次回放会启动一个独立端口的 Appium 服务。回放输出会完整保留该服务的 stdout/stderr,包括 `Appium`、`AndroidUiautomator2Driver`、`ADB`、请求参数、响应内容和驱动诊断信息,同时保留工具自身记录的请求方法、接口路径、HTTP 状态和耗时。例如:
|
|
802
|
+
|
|
803
|
+
```text
|
|
804
|
+
2026-08-22 13:57:35:756 - [Appium] Welcome to Appium v3.5.0
|
|
805
|
+
[AndroidUiautomator2Driver@ec68] Got response with status 200: {...}
|
|
806
|
+
[ADB] Running '.../adb -s device-id shell ...'
|
|
807
|
+
[Appium] 请求:POST /session
|
|
808
|
+
[Appium] 响应:HTTP 200 POST /session(328ms)
|
|
809
|
+
```
|
|
810
|
+
|
|
811
|
+
完整 Appium 日志可能包含输入值、设备信息和 WebDriver 请求参数。共享 `.log` 文件前请先检查并清理敏感内容。
|
|
812
|
+
|
|
813
|
+
如果通过环境变量 `APPIUM_SERVER_URL` 显式连接外部 Appium 服务,工具无法读取外部进程所在终端的 stdout/stderr,只会保存 WebDriver 请求、响应状态、耗时和错误响应。需要完整服务端日志时,请不要设置该环境变量,让工具为回放自动启动 Appium。
|
|
814
|
+
|
|
801
815
|
“回放输出”默认只保留最近 `80` 行的可视高度,避免无限撑长页面。可以使用:
|
|
802
816
|
|
|
803
817
|
- 复制:复制当前完整日志。
|
|
804
818
|
- 展开查看:在弹窗中查看完整日志。
|
|
805
819
|
- 清除:清空页面上的回放输出。
|
|
806
820
|
|
|
807
|
-
|
|
821
|
+
回放期间顶部会显示“终止”按钮。点击后会停止后续节点、关闭当前 Appium session,并继续生成本次回放的报告和日志;执行结果标记为“已终止”。
|
|
822
|
+
|
|
823
|
+
### 回放报告、日志和截图回放
|
|
808
824
|
|
|
809
|
-
|
|
825
|
+
每次回放结束后,无论成功、失败或手动终止,都会生成 Markdown 报告、纯文本日志和单文件 HTML 截图回放。三个文件使用相同的日期时间和脚本名称:
|
|
810
826
|
|
|
811
827
|
```text
|
|
812
828
|
当前日期时间-脚本名称.md
|
|
829
|
+
当前日期时间-脚本名称.log
|
|
830
|
+
当前日期时间-脚本名称.html
|
|
813
831
|
```
|
|
814
832
|
|
|
815
833
|
报告保存到“参数配置 > 运行配置”指定的目录;没有指定时,默认保存在启动命令所在目录的 `output` 文件夹中,例如:
|
|
816
834
|
|
|
817
835
|
```text
|
|
818
836
|
output/2026-08-21_17-13-42-831-登录流程.md
|
|
837
|
+
output/2026-08-21_17-13-42-831-登录流程.log
|
|
838
|
+
output/2026-08-21_17-13-42-831-登录流程.html
|
|
819
839
|
```
|
|
820
840
|
|
|
821
841
|
报告包含:
|
|
@@ -825,7 +845,16 @@ output/2026-08-21_17-13-42-831-登录流程.md
|
|
|
825
845
|
- 每个节点的实际执行状态与执行信息。
|
|
826
846
|
- 完整回放日志。
|
|
827
847
|
|
|
828
|
-
|
|
848
|
+
`.log` 文件保存页面中显示的完整回放过程,以及本次托管 Appium 进程未经截断的 stdout/stderr。生成成功后,报告与日志的绝对路径会追加到实时回放输出中;报告位置同时保存到数据库,便于后续追溯。
|
|
849
|
+
|
|
850
|
+
`.html` 文件在每个实际执行节点前后采集设备截图,并将截图以 Base64 形式直接嵌入文件。打开后可以:
|
|
851
|
+
|
|
852
|
+
- 在左侧查看执行步骤和当前截图对应的脚本、节点、阶段、结果、备注与 selector。
|
|
853
|
+
- 在顶部时间轴查看截图所在的真实执行时间,并点击缩略图或时间轴跳转。
|
|
854
|
+
- 使用“上一帧”“播放”“下一帧”及进度条控制回放;播放进度按实际回放耗时连续推进,不再按固定间隔逐张切换。
|
|
855
|
+
- 在左侧步骤下方展开完整回放日志;日志默认收起。
|
|
856
|
+
|
|
857
|
+
判断分支、失败和手动终止会保留对应的最后画面。连接脚本中的实际执行节点也会进入同一条截图时间线。HTML 不依赖外部图片目录,可以单独复制和打开。
|
|
829
858
|
|
|
830
859
|
## 组合示例
|
|
831
860
|
|