问题标签 [automationelement]

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 投票
2 回答
1728 浏览

c# - AutomationElement 还活着吗?

我正在使用 Microsoft UI 自动化并遇到一些问题,一个是我想知道 AutomationElement 是否仍然存在。更准确地说,我想检查一个窗口是否已关闭。我认为这是此类问题最常见的情况,我尝试了不同的场景,最终找到了一个解决方案,我尝试访问元素的不同属性并查看它是否会引发 ElementNotAvailableException。我还偶然发现了一个名为 IsOffscreen 的属性,它在这种情况下似乎很有帮助。但是,由于我在网上找不到太多关于此的信息,我想知道是否有更好的解决方案。最近几天我对这个框架不太满意,因为它对我来说似乎很不稳定(尤其是在找到一个 AutomationElement 时)。

非常感谢

马塞尔

0 投票
3 回答
666 浏览

c# - 如何通过 RangeValuePattern 从 AutomationElement 中获取微调器的值?

我试图从中获取微调器中的值,以检查它是否通过 C# 中的 AutomationElement 正确输入。我目前正在尝试通过TryGetCurrentPattern如下所示的方式将其取出,但是尽管在微调器中显示了不同的值(例如 1),但它仅返回 0.0 的值。

此外,我注意到,valueRangePattern.Current尽管微调器受到限制,但在查看最大值和最小值的字段时也始终为 0.0。我也尝试ValuePattern过从微调器中取出一个,但它不会进入 if 语句if (spinnerAutoEle.TryGetCurrentPattern(ValuePattern.Pattern, out pattern))。是否可以通过这种方式从 Spinner 中获取数值?

0 投票
1 回答
47 浏览

process - 我想为 .Net 应用程序编写进程同步

我正在使用AutomationElement自动化我的 .net 应用程序我想为我的框架编写进程同步。是否有任何WINAPI .net API 可以告诉我们进程是否繁忙。我使用的是 Windows 7 操作系统和 .Net 4.0 框架。

问候, 拉吉

0 投票
1 回答
1653 浏览

c# - C#递归在打开的对话框中找到automationElement

单击下载按钮后,我正在尝试浏览文件。但我虽然编写了一个递归函数,可以使用 AutomationElement 库在任何窗口中查找控件,因此希望我可以在打开的对话框窗口中找到嵌套控件。这个功能现在不工作了。请让我知道问题出在哪里,或者如果您有任何建议,请告诉我。

问题是它永远不会到达 else 语句并且永远不会结束。所以我认为它根本找不到元素。

这是我试图使用的突出显示的元素:

检查的屏幕截图

谢谢

0 投票
1 回答
1165 浏览

.net - UI自动化.net调用模式不起作用

大家好,在尝试通过我的客户端发送邮件时尝试单击 Outlook 安全警告上的按钮时遇到 UI 自动化问题,当我尝试发送邮件时,它会显示警报提示以选择我是否要允许电子邮件发送与否。

到目前为止,这是我的代码,它可以识别所有内容,但是在调用允许按钮上的模式时,它什么也不做,已经检查了 ispassword 属性以检查此按钮是否已锁定,但到目前为止还没有运气。

有什么想法吗?,非常感谢您的帮助。

0 投票
1 回答
281 浏览

c# - 在浏览器中托管 Word - AutomationElement IsWindowPatternAvailable - 如何设置?

我们在 a中托管MS-Word文档。WebBrowser controlWPF application

在导航到选定的WebBrowser controlMS-Word 文档期间显示以下对话框:

文件下载对话框

我们尝试使用 以编程方式关闭对话AutomationElement。该代码在测试应用程序中没有任何问题。当我们在我们的实际应用程序中调整代码时(edit文件,显示文件mail merge),只有mail merge部分正确地关闭了对话。在另一种情况下,无法找到对话的 AutomationElement。

我们发现,当对话的 AutomationElement 具有IsWindowPatternAvailable = false.

有没有办法提前设置这个属性?或者为什么它在一种情况下为真而在另一种情况下为假的原因?

测试应用程序是一个“标准 WPF 应用程序”项目。它只包含 MainWindow.xaml.cs 和 MainWindow.xaml。单击按钮Source设置WebBrowser:

backgroundCheck搜索特定对话并调用Open按钮

我们的实际应用程序要复杂一些,并且使用MVVM,PRISM 5WCF. 我们使用 WCF 从服务器加载 Word 文档。文件保存在 %temp% 中。

两个ViewModels(编辑文档/显示合并文档,每个都在 a 中different module)发布s 订阅的一个eventView

我们在IsWindowPatternAvailable的帮助下发现了不同之处inspect.exe。当IsWindowPatternAvailable = true对话是直接子的Desktop并且可以被找到。当IsWindowPatternAvailable = false我们在 of 中看不到对话时,TreeView我们inspect.exe可以通过单击它来访问对话的属性。在inspect.exe我们看到以下内容ancestors

  • 对话本身
  • 元素类名:壳嵌入
  • 网页浏览器
  • ViewEdit(查看以编辑文档)
  • 应用

当我们使用代码在“合并”模块中编辑文档时,对话框正确关闭。两个模块都引用相同的UIAutomationDLL(UIAutomationClient、UIAutomationProvider)。

这里提到了一个类似的问题: AutomationElement 使用 Inspect.exe 显示,但没有显示... 使用 aTreeWalker或搜索完整SubtreeAutomationElement.RootElement不起作用。

欢迎任何线索为什么IsWindowPatternAvailable会这样。也欢迎有关如何关闭文件下载对话框的其他建议。

0 投票
1 回答
1185 浏览

c# - 获取 WPF 用户控件的 AutomationElement

我想AutomationElement在测试过程中使用 Windows 来模拟 Userinput。我的特殊用例正在处理一个 ListBox 选择,从我在网上找到的内容中,我需要一个用于我的列表框的 AutomationElement 来操作它。

假设我有一个这样的窗口:

因为我有对 UserControl 的引用,所以我应该能够在不从桌面 ( AutomationElement.RootElement) 开始搜索的情况下找到它。

获得AutomationElementfor my的最快方法是什么window.FindMe UserControl

使用AutomationElement.RootElement.FindFirst(...);将从桌面开始,我看不到一种通用方法可以使搜索快速而没有任何误报的可能性。

0 投票
1 回答
276 浏览

c# - 从硬盘打开办公文档时以模式打开 exe(Windows 应用程序)

我有一个要求,如果用户从他/她的硬盘驱动器打开任何办公文档,它应该打开一个 exe(win 表单应用程序)作为模式窗口来捕获有关文档的详细信息。

为此,我开发了一个在客户端机器下运行的控制台应用程序,以监控是否有任何办公文档文件正在打开。请找到以下代码

如果您在OnUIAEventProcess.Start用来打开 exe 的事件处理程序中看到。它按预期工作。但我希望 exe 应该以模式打开到打开的文档。下面的代码是 exe 的表单加载。

是否可以打开 Windows 应用程序以打开已打开文档的模式?

0 投票
0 回答
716 浏览

c# - 确定 AutomationElement 是否可见

有什么方法可以确定 AutomationElement 是否对用户可见?

ClickablePoint 和 IsOffcreen 都有例外,它们显示/隐藏(不)想要的元素。

例如。当我有全屏窗口时,桌面图标没有 ClickablePoint 但不在屏幕外,但全屏应用程序菜单栏中清晰可见的某些项目也不可点击。

因此,如果我通过 ClickablePoint,桌面图标被隐藏,但菜单项丢失;如果我通过 Offscreen,菜单项可见,但桌面项也可见。

0 投票
0 回答
265 浏览

c# - 为什么自动化元素属性与 Inspect 中的值不匹配?

获取后,AutomationElementIsContentElement使用以下方法获取属性:

我的应用程序中的输出True

使用 Inspect.exe(从https://developer.microsoft.com/en-us/windows/downloads/windows-10-sdkIsContentElement安装)的值为False

我 99% 确定我的应用程序和 Inspect.exe 正在查看元素(相同的边界框、相同的控件类型、相同的名称 - 文件资源管理器 Windows 10 中垂直滚动条的向下箭头)。

似乎也适用于其他属性。为什么他们不匹配?