winapi - 如何使用 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
是空的。所以我使用检查工具检查窗口。
- 当应用程序刚启动时,
它的 ControlType 是
UIA_PaneControlTypeId
并且此时没有子节点。 - 在我展开红色矩形中的第二个节点后,重新单击红色缠结的父节点:
它的ControlType 更改为
UIA_DocumentControlTypeId
并且有子节点。
那么,你知道这是怎么发生的吗?
如何以编程方式重新加载Chrome Legacy Window
并将其类型从更改UIA_PaneControlTypeId
为UIA_DocumentControlTypeId
?
由于由于Chrome Legacy Window
某种原因正在发生变化,所以我调用ElementFromHandle
了它的一个祖先,然后我可以resultTabElement
在第一次调用后得到正确的结果,尽管第一次调用仍然不像 Inspect 工具那样工作。
解决方案
推荐阅读
- android - Android - 未调用 TabLayout 侦听器回调
- php - 如何使 Pygame 游戏在线可执行?
- python - 无法安装图案
- spotify - 通过 Spotify API 获取流总数和跟踪发布日期
- node.js - AWS Lambda :: 如何在我的本地 ubuntu 机器上测试我的代码?
- android - 如何将进入动画设置为 RecyclerView 项目?
- charts - Amchart 响应问题
- hive - 为什么 Hive 和 bigSQL 中存在 1 条记录的数据不匹配?
- android - Android Room 是否提供 SqliteOpenHelper onCreate() 和 onUpdate() 替代方案?
- python - python3.6模板中的cgal c++集成错误