用途
该技能用于对运行中的 Qt/PySide 应用进行多步骤界面自动化,核心场景包括:
- 需要填写多个字段的表单
- 文件打开/保存对话框(QFileDialog)
- 剪贴板读取与写入
- 组合框与下拉框选择
- 模态对话框的检测与关闭
单控件交互(单次点击、单次输入、读取标签)应改用 qt-devtools-app-interaction,本技能在其基础上提供多步骤操作配方。文中说明所有命令在宿主机或虚拟机中执行方式一致,无需 SSH 包装;仅任意命令使用 vm run。
主要能力
表单填写
fill 是复合动作:先聚焦控件、清空已有文本、再输入新值,一条命令替代三步。
qt-ai-dev-tools fill "value" --role "text" --name "Field"
参数包括 --role(默认 text)、--name(名称子串匹配)、--app(按应用名定向)、--no-clear(跳过清空)、--visible/--no-visible、--exact(精确匹配)、--index(多个匹配时按 0 起始序号选择)。
多字段表单流程:先用 find --role "text" --json 查看所有文本字段,再按名称逐个 fill,然后点击提交按钮,最后用 text 读取状态标签并用 screenshot 截图验证。字段名称不唯一时可用 --index 按位置定位,或用 Tab 键按焦点顺序导航。
文件对话框
QFileDialog 是模态的,打开时会阻塞主窗口,桥接无法响应,因此需使用 AT-SPI 命令:file-dialog detect 检测对话框并显示类型与当前路径;file-dialog fill <path> 在文件名字段输入路径;file-dialog accept 点击打开/保存/确定;file-dialog cancel 点击取消。
典型流程为触发对话框、detect 检测、fill 输入路径、accept 确认,再用 text 与 tree 验证文件已加载。文档强调模态对话框打开期间不能用桥接(eval)交互。
剪贴板
提供 clipboard read 与 clipboard write "text" 命令,虚拟机内优先使用 xsel、回退 xclip。
复制流程:点击字段、ctrl+a 全选、ctrl+c 复制,再 clipboard read 读取。粘贴流程:clipboard write 写入内容,点击目标字段后 ctrl+v 粘贴。
下拉框选择
下拉项只在组合框打开后才出现在 AT-SPI 树中,点击后必须重新检查。点击式流程为 find 组合框、点击打开、tree --role "menu item" 重新查看、点击目标项、读取验证。键盘式流程(文档称通常更可靠)为点击组合框后按 Down 键若干次再按 Return。
对话框处理
模态对话框在树中显示为 [dialog] 或 [alert],未关闭前阻止主窗口交互。可用 tree 检测、find --role "push button" 查找按钮、点击对应按钮,再用 tree 验证已关闭;也可直接按 Escape 快速关闭意外对话框。
限制与排错
文档列出若干约束与对应处理:文件对话框未被检测到时可查看 tree 中的 [file chooser] 或 [dialog];剪贴板读取为空可能是虚拟机未安装 xsel/xclip;fill 填错字段时可加 --name 或 --index;下拉项不可见需在点击后重新执行 tree;对话框阻塞桥接 eval 时应改用 AT-SPI 命令;fill 未清空旧文本可能因应用使用非标准文本控件,可尝试 --no-clear 并手动全选删除。
相关技能包括 qt-devtools-app-interaction(核心控件交互)、qt-devtools-runtime-eval(通过桥接在应用内执行代码)、qt-devtools-desktop-integration(系统托盘、通知与音频)、qt-devtools-setup(环境与虚拟机配置)。