跳到主要内容

窗口界面控制

用 Windows UI Automation 触发窗口里的菜单、按钮等控件。需要按 XPath 定位时,用 窗口界面控制(FlaUI)

当前模块定义

概述

Quicker 提供两套窗口界面控制:

窗口界面控制

  • 基于 .NET 自带接口。
  • 用控件名称和类型定位。有的界面查找较久,期间会卡顿。
  • 不支持多个同名控件。

窗口界面控制(FlaUI)

  • 基于 FlaUI
  • 可用 XPath 定位控件。

每个软件对 UI Automation 的支持不同,只能在一部分软件、一部分界面上使用,需要实测。窗口状态不对时也可能失败。多步操作中间要留等待,等界面准备好。复杂界面查找控件可能较慢。

可用 Windows SDK 的 inspect.exe 查看控件「名称」。下载见文末相关链接。

参数说明

操作类型:触发窗口菜单、触发窗口控件、获取窗口控件信息、获取鼠标指针位置控件信息、获取焦点控件信息、获取指定位置控件信息、更新「另存为」或「打开」对话框的路径。

窗口句柄:要操作哪个窗口。不填表示前台窗口;也可填窗口句柄数字。显示于触发菜单 / 触发控件 / 获取窗口控件信息。

失败后停止:出错后是否中止动作。默认开启。

触发窗口菜单

用于触发软件的菜单项。

上图设置用于触发下面的菜单。

菜单路径:要展开或点击的各级菜单名称,每行一个。必须完全匹配,且名称不能重复。

展开延时:上级菜单展开后等到下级可用的毫秒数,默认 200。各软件需要的等待不同。

触发窗口控件

上面用于定位资源管理器里的「选项」按钮。

控件名inspect.exe 里看到的名称,一般是控件上的文字,可能随状态变化。有重名时返回找到的第一个。名称相同、类型不同时再用 控件类型 区分。

控件类型:可选。有同名不同类型控件时用来筛选。下拉项对应的数字可在变量里传递,例如拆分按钮 50031、组合框 50003、按钮 50000

动作:找到控件后要执行的操作。各控件支持的动作不同,需要实测。

选「自动」会依次尝试:调用、切换选中状态、选择、展开、点击,直到其中一个成功。

:仅「设置值」动作使用。

获取窗口控件信息

获取指定控件的信息。

输出

  • :控件的值。
  • 文本:控件上的文字;按控件不同,可能来自 Value、Text 或 Name。
  • 位置:范围,格式 Left,Top,Right,Bottom
  • 控件名称
  • 控件类型:类型名称,不一定和 inspect.exe 里完全一致。
  • 控件类型ID:类型数字。
  • 是否启用:控件未处于禁用状态。
  • 是否可见:控件是否在屏幕上。
  • 原始句柄:控件的 NativeWindowHandle。

下面几种「获取信息」操作的输出字段相同。

获取鼠标指针位置控件信息

获取当前鼠标位置界面元素的信息。不需要填写窗口或控件名。

获取焦点控件信息

获得当前拥有输入焦点的控件信息。输出字段同上。

获取指定位置控件信息

按屏幕坐标读取该位置的控件信息。

坐标位置:屏幕坐标,格式 x,y

更新「另存为」或「打开」对话框的路径

用来快速改保存 / 打开路径或文件名。有的软件使用非 Windows 标准文件对话框,可能无法控制。

路径

  • 文件夹完整路径:切换到该文件夹。
  • 带文件名的完整路径:保存或打开该文件。
  • 只有文件名:另存或打开这个文件名。
  • 支持多选的对话框可用 "文件名1" "文件名2" 选多个文件。

自动创建文件夹:目录不存在时是否创建。可选不自动创建、自动(按后缀判断是文件还是文件夹)、按文件路径创建、按文件夹路径创建。

示例动作

窗口界面控制 FlaUI 版

基本原理与本模块相同,参数以 窗口界面控制(FlaUI) 为准。XPath 语法见 窗口界面控制的 XPATH 简介

控件XPath或Name:相对窗口的 XPath,或控件名 / AutomationId。XPath 以 / 开头。可写多行,前一个找不到时自动试下一行。用名称遍历查找时,限制与基础版相同。

点右侧定位按钮,可从窗口拾取控件并得到 XPath。

更新另存窗口的文件类型:

用 FlaUInspect 取得 XPath

启动 FlaUInspect 时选择 UIA3:

在 Mode 菜单中开启 HoverMode 和 ShowXPath:

鼠标移到某个窗口上后按 Ctrl,FlaUInspect 会更新当前位置的窗口、控件信息。窗口底部显示 XPath。

此 XPath 会包含窗口本身(第一段,如上图的 /Window)。Quicker 从窗口本身开始查找,需要去掉第一段再使用。

限制与排障

  • 并非所有软件、所有界面都支持 UI Automation,需要实测。
  • 多步之间要加等待,等界面准备好。
  • 复杂界面查找控件可能较久并造成卡顿。
  • 非标准「另存为 / 打开」对话框可能无法改路径。

相关链接

相关资源

更新于