首页 > 解决方案 > 如何使用 UIA 为 CefBrowserWindow 加载子元素

问题描述

我正在尝试自动化一个Chrome Legacy Window.

HRESULT hr = S_OK;
CComPtr<IUIAutomationElement> element;
hr = automation_->ElementFromHandle((HWND)0x00871218, &element);

CComPtr<IUIAutomationElement> resultTabElement;
hr = element->FindFirst(TreeScope_Descendants, resultTabPatternCondition, &resultTabElement);

但有时resultTabElement是空的。所以我使用检查工具检查窗口。

  1. 当应用程序刚启动时, 在此处输入图像描述 它的 ControlType 是UIA_PaneControlTypeId并且此时没有子节点。
  2. 在我展开红色矩形中的第二个节点后,重新单击红色缠结的父节点: 在此处输入图像描述 它的ControlType 更改为UIA_DocumentControlTypeId并且有子节点。

那么,你知道这是怎么发生的吗?

如何以编程方式重新加载Chrome Legacy Window并将其类型从更改UIA_PaneControlTypeIdUIA_DocumentControlTypeId


由于由于Chrome Legacy Window某种原因正在发生变化,所以我调用ElementFromHandle了它的一个祖先,然后我可以resultTabElement在第一次调用后得到正确的结果,尽管第一次调用仍然不像 Inspect 工具那样工作。

标签: winapivisual-c++ui-automationchromium-embedded

解决方案


推荐阅读