问题标签 [microsoft-ui-automation]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
170 浏览

delphi - 如何检测 TSemaphor 控件的颜色变化?

我有一个应用程序 A,它有一个小文本框,由一个框架包围,指示系统是否准备好。文本和框架位于 DelphiTSemaphor控件中。

  1. 在初始化期间,框架是黄色的。
  2. 初始化完成且系统准备就绪后,框变为绿色

在另一个应用程序 B 中,我需要检测应用程序 A 何时已初始化并准备就绪。

如何在应用程序 A 中以尽可能少的努力并在以下约束下执行此操作(检测框架颜色的变化)

  1. 应用程序 A 无法更改(我没有它的源代码),
  2. 应用程序 A 没有自动化接口,
  3. 当应用程序 A 准备就绪时,唯一发生的变化是颜色变化

?

我知道有以下解决此问题的方法:

  1. 使用图像识别 (http://sikuli.org/)
  2. 找出相应位置的像素颜色。
  3. 使用注入的 DLL 来访问 TSemaphore 属性。
0 投票
1 回答
4047 浏览

c# - 如何将 AutomationElement.NativeWindowHandle 转换为 IntPtr

我有一个AutomationElement A(MS UI 自动化),它代表一个组合框。我想使用 Windows API 调用在该组合框中选择第 n 个项目

A.NativeWindowHandle包含组合框的句柄,但为了将其传递给ComboBox_SetCurSel,我需要将其从 转换intIntPtr

如何?

0 投票
1 回答
2501 浏览

delphi - 如何在 Delphi 2009 中使用 MS UI 自动化

我有一个 C# 应用程序,它使用 Microsoft UI 自动化功能,例如像AutomationElement.RootElement.FindFirst(...).

现在我需要在 Delphi 2009 中做同样的事情(使用 MS UI 自动化)。

我怎样才能

a) 声明我的 Delphi 代码使用 MS UI 自动化库和 b) 进行如下调用AutomationElement.RootElement.FindFirst(...)

?

有几个教程(教程 1教程 2)解释了如何打包自己的 .NET 代码以便它可以与 Delphi 一起使用,但在我的情况下,我需要在 Delphi 中使用“预打包”(已经安装)程序集。

更新 1

现在我可以AutomationElement.RootElemeent在一台机器上访问,但它在另一台机器上不起作用。

我怎样才能找出原因,为什么在uiAutomation := CoCUIAutomation.Create;第二台机器上尝试执行失败?

0 投票
1 回答
527 浏览

c# - 获取 MSIE 9 中的特定选项卡

我正在使用 Watin 2.1 尝试测试网站的文件下载和文件打开功能。这在 Internet Explorer 8 中运行良好,但从 Internet Explorer 9 开始,视图底部有一个黄白色的下载栏,而不是弹出对话框窗口。

我找到了这个答案: https ://stackoverflow.com/a/8532222/246622 ,只要我感兴趣的浏览器选项卡位于顶部,它就可以解决这个问题。如果顶部还有其他选项卡,则找不到下载栏。这里的问题是,这些测试将在下载开始之前打开带有下载栏的选项卡顶部的其他选项卡。

那么,我如何访问正确的选项卡,或者如何在 Internet Explorer 中切换顶部/可见选项卡,或者如何让这些其他页面在其他窗口中而不是在同一窗口中的选项卡中打开,或者我该如何从我的测试应用程序中关闭那些其他选项卡?

这是相关的代码:

我试过这个:

然后我打算使用带有标题的正则表达式来识别正确的选项卡:

但这会在同一窗口中获得一个较低的窗口,而不是一个较低的选项卡。

0 投票
2 回答
1202 浏览

ui-automation - 获取/使用完整路径在 UIA 和 White 中查找控件

我正在使用 Microsoft UI 自动化 + White 框架。是否可以从顶级父级获取到控件的完整路径,然后使用它来查找元素?例如,使用 UI spy 获取完整路径,然后以某种方式通过获取的路径获取控件?

谢谢

0 投票
1 回答
488 浏览

microsoft-ui-automation - IUIAutomation::RemoveAllEventHandlers 挂起

我正在用 C++ 开发一个应用程序,它使用 UIAutomation 来接收与用户交互相关的重要事件的通知。我通过调用 AddAutomationEventHandler 尝试了一个事件处理程序来侦听窗口打开的事件,但是我在退出之前停止通知和清理时遇到了问题。如果用户已启动某些应用程序,例如 Firefox,则对 RemoveAutomationEventHandler 的调用会挂起。(在这种情况下,调用 RemoveAllEventHandlers 也会挂起。)请注意,所有添加或删除事件处理程序的调用都是在同一个非 UI 线程的上下文中完成的。

注意:我在 Windows 7 和 Windows 8 上看到了这种行为。

关于为什么会发生这种情况或如何解决它的任何想法?是什么让结构改变事件与所有其他事件不同?

0 投票
1 回答
662 浏览

c# - 在 Silverlight 中的 textBox 的 keyDown 事件中模拟 Ctrl 键

我在我的应用程序和 chrome 中使用richTextbox,richtextbox 没有捕获SPACE密钥

我发现这是一个错误,但我不想为此使用第三方修补程序。

richTextbox 可以识别Ctrl+ Space& Shift+Space键所以我决定Ctrl在 RichTextbox 的 keydown 事件中模拟键

但我不知道如何模拟它没有SendKeys?我已经完成了 UI 自动化,但没有找到键盘模拟。

有什么帮助吗?

0 投票
1 回答
1935 浏览

ui-automation - UIA:从控件类型名称(字符串)中获取 ControlType

使用 Microsoft UI 自动化。我有一个代表 UIA 控件类型的字符串,例如“Window”或“Button”。我想得到一个适合这个字符串的 ControlType 对象。怎么做?是否存在一些代表所有 UIA 控件类型的枚举?我发现只有 ControlType 有 ControlType.LookupById(int) 方法。但是我必须知道ID和名称之间的对应关系。当然,我可以使用所有可能的 UIA 控件类型创建自己的开关,甚至可以使用反射来获取 ControlType 工厂的所有成员。但我肯定应该是更简单的方法..

0 投票
6 回答
11413 浏览

c# - UIAutomation 不会检索元素的子元素

我可以看到具有特定自动化 ID 的元素在检查工具中有子元素:

检查屏幕截图

但是当我尝试像这样检索它们时:

aPane元素被正确检索,但元素theChildren为空。任何想法出了什么问题?

0 投票
2 回答
357 浏览

c# - 如何在没有实现任何模式的情况下操作控件?

我正在尝试UIAutomation为我们的项目实施自动化测试。但是许多控件不是标准的,并且也没有为这些控件实现适当的模式。在这种情况下,我应该如何通过UIAutomation 框架来操作控件?

例如,我们产品中的按钮是通过 Pane 实现的,而调用的模式也没有实现。我应该如何点击按钮?(为了避免在测试机器上安装 VS,我不想Mouse.Click()Microsoft.VisiualStudio.TestTools.UITesting命名空间中使用)有没有办法只使用 UIAutomation 框架或嵌入在 .net 框架中的其他东西来做到这一点?提前致谢!(如果实现了正确的模式,下面的代码将起作用。作为新用户,我无法发布截图供您参考,对不起!)