You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

FlaUI无法识别Inspect可见元素及读取应用实际Value属性问题

问题解决方法

1. 适配UIA3模式并调整缓存配置

FlaUI默认的UIA3缓存策略会跳过动态渲染的自定义网格子项,初始化Automation对象时关闭默认缓存过滤、开启完整元素树遍历即可:

// 初始化时使用UIA3并禁用元素缓存过滤
using var automation = new UIA3Automation();
automation.CacheRequest.AutomationElementMode = AutomationElementMode.Full;
// 显式请求需要的属性和模式
automation.CacheRequest.Add(AutomationObjectIds.ValuePattern);
automation.CacheRequest.Add(AutomationObjectIds.LegacyIAccessiblePattern);
automation.CacheRequest.Add(AutomationElement.NameProperty);
automation.CacheRequest.Add(AutomationElement.AutomationIdProperty);

2. 解析资源ID占位符获取真实文本

你获取到的[#30093]是Win32类应用的字符串资源ID,可通过系统API加载对应进程的资源字符串拿到真实值:

// 匹配资源ID占位符的正则规则
var resourceMatch = Regex.Match(rawValue, @"\[#(\d+)\]");
if (resourceMatch.Success)
{
    uint resId = uint.Parse(resourceMatch.Groups[1].Value);
    // 获取目标控件所属进程的句柄
    var processHandle = Process.GetProcessById(targetElement.ProcessId).Handle;
    // 调用系统API加载资源字符串
    StringBuilder sb = new StringBuilder(2048);
    LoadString(processHandle, resId, sb, sb.Capacity);
    string realValue = sb.ToString();
}

对应P/Invoke声明:

[DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = true)]
static extern int LoadString(IntPtr hInstance, uint uID, StringBuilder lpBuffer, int nBufferMax);

3. 调整遍历深度参数

FlauInspect看不到子元素是因为默认遍历深度限制,查找元素时显式指定遍历深度和范围即可:

// 查找网格窗口时指定TreeScope为Subtree,关闭遍历深度限制
var gridWindow = automation.GetDesktop().FindFirstDescendant(cf => cf.ByName("你的网格窗口标题"), new TreeTraversalOptions { Depth = int.MaxValue });
// 强制刷新元素子树缓存
gridWindow.InvalidateChildrenCache();
var gridItems = gridWindow.FindAllDescendants(cf => cf.ByControlType(ControlType.ListItem));

4. 兼容读取方案

如果ValuePattern无法获取到有效值,尝试用LegacyIAccessible模式读取:

if (targetElement.TryGetPattern(out LegacyIAccessiblePattern legacyPattern))
{
    string realValue = legacyPattern.Name ?? legacyPattern.Value;
}

内容的提问来源于stack exchange,提问作者SandyKrish

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 09:06:02