问题标签 [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 投票
1 回答
1247 浏览

c# - 将选定文本从另一个应用程序获取到自己的 C# 应用程序中

我有一个正确响应全局热键的 C# 应用程序。如果按下全局热键,我想从另一个具有焦点的应用程序中获取选定的文本。

我测试了本机 Win32 Api,然后SendKeysCTRL + C,剪贴板,...),现在是 Microsoft UI 自动化!问题是,这仅适用于记事本,但不适用于 Internet Explorer、Word 或其他应用程序。

我认为必须有比我拥有的代码更好的解决方案。我读到发送CTRL + C应该可以正常工作,但这也只能在记事本中使用。

这是我在触发全局热键时调用的方法:

0 投票
1 回答
6778 浏览

c# - 使用 UI 自动化选择一行数据网格

我正在编写一个 UI 自动化软件。我需要在数据网格中选择一行,然后单击运行按钮。我尝试了互联网上的大多数示例代码,但它们对我不起作用。例如选择一个 gridview 行:

当我编写以下代码时:

我收到错误:“目标元素无法获得焦点。” 这与最后一行有关。

我还尝试了代码:

但我和我收到了错误:“不支持的模式”。

我应该提到我正在使用 UI Spy 来检索元素属性。

你能解释一下出了什么问题,我应该如何选择一行?![UI 间谍][1]

0 投票
1 回答
451 浏览

c# - 如何检测 AutomationElement 名称更改

我在 C# 程序中使用 UI 自动化。我已经设法使用它的自动化 ID 获取一个元素。但是,它没有暴露任何模式。使用 UI Spy,我可以在 Identification->Name 下看到我想要的文本。但是,当我尝试注册一个事件以检测文本更改时,什么也没有发生;事件处理程序不会被调用。

UI Spy 不显示任何 ControlPatterns。这是否意味着我必须手动轮询元素“名称”的更改,还是有其他方法可以做到这一点?

0 投票
1 回答
685 浏览

c# - 获取 AutomationEvent C# UIAutomation 的类型

我想知道如何获得特定类型的操作AutomationElement?当涉及到 AutomationElement 使用时,我有所有详细信息

在那里我可以获得有关重点元素的所有信息。

但是我需要知道是否单击了例如按钮,是否编辑了编辑输入或关闭了窗口等等。

我知道 AccEvent 中提供了这种信息,它区分了属性、焦点和自动化之间的事件,每个事件都有更多详细信息。

基本上我想记录对元素执行的操作,然后重复它。

如何使用 C# 获取它?

顺便提一句。我将 COMwrapper 类用于 UIAutomation。

0 投票
3 回答
2964 浏览

c# - Microsoft UIAutomation 无法检索 WPF GroupBox 中的子组件

设置场景

我有一个简单的 Microsoft WPF 应用程序,它由一个(数据驱动的)GroupBox 组成,其中包含一组猫和一组狗。Cat 和 Dog 组均包含两个组项。当我运行应用程序时一切正常,我可以在屏幕上看到组及其内容。

运行应用程序会产生以下窗口:

应用程序输出

但是,当我创建 UIAutomation 测试时,我找不到组项的任何 AutomationElements,只有组;只有CatDog组可以使用 AutomationElement 路由访问,或者在 UISpy.exe 中看到,如下图所示:

UISpy 不显示组的孩子

单个 Cat 和 Dog 组项目的子组件不存在,我需要能够在我的测试代码中将它们作为 AutomationElements 检索:

以上当前输出:

名称:猫

儿童人数:0

名称:狗

儿童人数:0

重现问题

要重现此问题,请在 Visual Studio 中创建一个新的 WPF 应用程序(称为 WpfApplication1)并将 MainWindow.xaml 的内容替换为以下内容:

实际上,我的代码看起来并不完全像这样,因为它是一个 MVVM 应用程序。但为简洁起见,我将其简化为一个重现相同问题的 XAML 文件。需要注意的关键点是组内容是从 XAML 绑定填充的。

那么如何使用 UIAutomation 获取内容呢?

非常感谢任何帮助!

0 投票
2 回答
22074 浏览

powershell - powershell:如何单击“提交类型”输入

使用 powershell 进行 web ui 自动化。出现异常:invoke 方法失败,因为 [System.__ComObject] 不包含“click”方法。

可以点击提交类型输入吗?

我使用 getElementsByTagName getElementsByClassName getElementsByName ,不起作用。

任何人都可以帮助我吗?

powershell代码如下:

html源代码如下:

0 投票
1 回答
822 浏览

c# - 我们如何检查是否选择了 AutomationElement c#

是否有任何方法可以获取是否选择了 AutomationElement。我使用以下代码来获取一个 AutomationElement 对象。

0 投票
1 回答
779 浏览

ui-automation - 我们可以使用 Microsoft UIAutomation 库“单击”编辑框吗

在我的应用程序中,我们有一个 webbrowserpageviewer 控件。打开网页时,用户需要点击网页上的一些编辑框。我们正在尝试使用 UI 自动化库来模拟这种行为。对此有点新,但我看到我们可以使用 InvokePattern 模拟按钮点击,那么有没有类似的方法来模拟编辑框点击?

0 投票
0 回答
843 浏览

c# - UIAutomation:InvokePattern 抛出“热键已注册”异常

我在这个包含 UIAutomation 的 stackoverflow 线程(IE9 文件下载)中遵循了一个提示,它几乎总是有效。

但有时 Invoke 方法会抛出一个异常,上面写着“热键已注册”(或在(原始)德语中:“Diese Abkürzungstaste ist bereits registriert”)。

这是关键代码部分(与上面提到的线程中的代码相比有所修改):

问:异常信息是什么意思,如何避免?

0 投票
1 回答
773 浏览

ui-automation - UI 自动化 CreatePropertyCondition 0xc0000005

我试图重用代码(http://msdn.microsoft.com/en-us/library/windows/desktop/ff625913(v=vs.85).aspx#FindByName),但我想把它包装在一个简单的类。当我运行此代码时,它落在:

0xc0000005。

我知道,这是因为指针为空或损坏。但是,当我在没有任何类(来自main())的情况下运行此代码时,它运行良好。

我应该阅读什么以及从哪里了解它为什么会发生?