
Midscene.js Python / Java SDK 跨语言调用不重写 JS【免费下载链接】midsceneGUI Agent for E2E Testing项目地址: https://gitcode.com/GitHub_Trending/mid/midscene业务代码全在 Java 里想让 AI 自动点掉屏幕上那个确认下单按钮难道非得先重写一套 JS 工程Midscene.js 跨语言 SDK 解决的正是这件事视觉理解、定位、执行这些重活仍然交给官方 Node 引擎你只在自己的语言侧发起指令不用学npm install、不用写一行 JS。下面以 Android 设备为例把 Python 和 Java 两条路线一次讲清。3 分钟跑通第一条 AI 指令装完 Python SDK 点下第一个按钮最短路径其实就两步一条pip install midscene-python装好社区 SDK再确认adb devices -l里设备状态是device。Java 侧同理在pom.xml里声明midscene-java依赖即可。下面 6 行完成一次点击、一次输入和一个视觉断言# 社区 SDK 已通过 pip 安装这里直接连设备发指令 from midscene import AndroidAgent agent AndroidAgent(adb_device_idemulator-5554) # 绑定 adb 设备 agent.ai_tap(system settings icon) # 模型定位并点击 agent.ai_type(search box, SU7) # 模型找到输入框并输入 print(agent.ai_boolean(页面已切到设置页)) # 视觉断言运行前要先配好模型 API Key。最快的方式是先启动 Playground在齿轮设置里粘贴配置界面如下跑通后控制台会打印 HTML 报告路径用浏览器打开就能看到每一步的截图和定位框。它到底怎么跨语言工作Python / Java 与 Node 引擎之间的那座桥说白了Python 和 Java 都不负责跑视觉模型两者对接的其实是本机的 Midscene.js Node 进程。早期版本可以启动一个 MCP 服务让各语言客户端通过 HTTP / MCP 协议接入但这条路线已在 1.12 起下线最后一个包含 MCP 包的版本是 1.9.8细节见 MCP 集成已下线说明。现在社区推荐的跨语言姿势是把 CLI 当服务Java 或 Python 侧直接拉起npx midscene/android-playground或脚本子进程指令走参数、结果走 stdout 的 JSONJVM 侧完全不用学协议。设备状态也留在 Node 端——adb 长连接握在 Node 进程手里你的 Java 代码只传设备 udidJVM 里不装 adb 也能跑只有想让 Java 侧自己唤起 adb 时才需要配置 adb 的绝对路径Windows 上注意反斜杠转义。按能力场景拆解点 / 输入 / 提取、手势、测试框架、报告回放点击、输入、数据提取最常用的三条跨语言指令这三件事覆盖日常流程的大部分按自然语言点元素、往输入框填内容、再从屏幕里提一份结构化数据。两种语言的 API 是同构的只是命名风格不同# Python点、填、提取三行覆盖日常流程 agent.ai_tap(search bar) agent.ai_type(search box, wireless headphones) prices agent.ai_query(Double[], 商品价格) // Java同一能力驼峰命名 agent.aiTap(search bar); ListDouble prices agent.aiQuery(Double[], 商品价格);易踩的坑模型描述的元素当时不在屏上指令会空转。操作前加一句aiWaitFor等元素出现能消掉大部分时灵时不灵。多设备与手势组合模型定位 坐标原语手势原语直接走 adb不经过模型零 token 成本。高频手势写死坐标把模型预算留给点哪里# Python手势直连 adb省模型调用 device.swipe(360, 1600, 360, 800, 300) # 上滑翻到下一屏 device.double_tap(360, 800) # 双击放大图片 // Java同组原语 device.swipe(360, 1600, 360, 800, 300); device.doubleTap(360, 800);易踩的坑坐标是物理分辨率空间的换一台分辨率不同的设备老坐标常量直接点空别跨设备复用。接入现有测试框架pytest 与 JUnit 直接用把 AI 断言写成普通assertpytest 原样调度Java 侧包一层 JUnit还能用 YAML 脚本回放整段登录流程# Pythonpytest 里一条 AI 断言就是一行 def test_login(): agent.ai_tap(login button) assert agent.ai_boolean(已切到主页) // JavaJUnit YAML 脚本 player.runYaml(src/test/resources/login.yaml);易踩的坑AI 指令有网络往返延迟别在同一台设备上并行跑两个用例截图和坐标会互相串。可视化报告与回放跑完自动出一份 HTML每次执行结束都会自动落一份 HTML 报告回放每一步的截图、提示词和定位框排查问题不用重跑# Python结束后控制台打印 HTML 报告路径 report_path agent.report_path() # 记下该路径归档 // Java同样在执行结束输出 HTML 路径 // 浏览器打开即可回放截图与定位框易踩的坑报告是增量写入的CI 里要等进程退出后再归档报告目录否则文件不完整。踩坑记录与调优ADB 连接、模型加载、路径转义、缓存策略现象adb devices能看到设备一点就报INJECT_EVENTS权限错误。原因手机开发者选项里只开了USB 调试没开USB 调试安全设置系统拦截了输入事件注入。解法两项一起打开并重新插线完整排查思路见 Android 集成指南。现象第一条指令要等十几秒才返回后面都快多了。原因冷启动要初始化模型服务、拉取首张截图之后每步都有模型往返。解法先用一条轻量指令验证链路再跑真实流程同提示词、同画面反复执行的场景开启缓存能把耗时砍掉大半。现象Windows 上 Java 配置 adb 路径运行报找不到文件。原因字符串字面量C:\Android\adb.exe里的\A被 JVM 当转义处理。解法写双反斜杠C:\\Android\\adb.exe或直接用正斜杠C:/Android/adb.exe。现象开了缓存后动态页面的报告画面和实际屏幕对不上。原因缓存键包含提示词与画面内容画面一变旧缓存命中的就是过期定位。解法动态列表页关缓存或缩短有效期登录页这类静态界面可以放心开规则细节见 缓存与缓存策略。接下来可以探索从单机指令到设备池两个起点值得先看Android 集成指南 覆盖了AndroidAgent的完整参数与自定义动作缓存与缓存策略 讲清了速度与成本的平衡。项目后续的方向也很明确——OCR 与 LLM 融合的多模态识别、分布式设备管理、低代码流程编辑器。等你的 Python 或 Java 用例稳定跑通后把这些能力扩成一台多设备农场只是工程量的问题。【免费下载链接】midsceneGUI Agent for E2E Testing项目地址: https://gitcode.com/GitHub_Trending/mid/midscene创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考