问题标签 [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.
c# - AutomationElement 还活着吗?
我正在使用 Microsoft UI 自动化并遇到一些问题,一个是我想知道 AutomationElement 是否仍然存在。更准确地说,我想检查一个窗口是否已关闭。我认为这是此类问题最常见的情况,我尝试了不同的场景,最终找到了一个解决方案,我尝试访问元素的不同属性并查看它是否会引发 ElementNotAvailableException。我还偶然发现了一个名为 IsOffscreen 的属性,它在这种情况下似乎很有帮助。但是,由于我在网上找不到太多关于此的信息,我想知道是否有更好的解决方案。最近几天我对这个框架不太满意,因为它对我来说似乎很不稳定(尤其是在找到一个 AutomationElement 时)。
非常感谢
马塞尔
c# - 如何通过 RangeValuePattern 从 AutomationElement 中获取微调器的值?
我试图从中获取微调器中的值,以检查它是否通过 C# 中的 AutomationElement 正确输入。我目前正在尝试通过TryGetCurrentPattern
如下所示的方式将其取出,但是尽管在微调器中显示了不同的值(例如 1),但它仅返回 0.0 的值。
此外,我注意到,valueRangePattern.Current
尽管微调器受到限制,但在查看最大值和最小值的字段时也始终为 0.0。我也尝试ValuePattern
过从微调器中取出一个,但它不会进入 if 语句if (spinnerAutoEle.TryGetCurrentPattern(ValuePattern.Pattern, out pattern))
。是否可以通过这种方式从 Spinner 中获取数值?
process - 我想为 .Net 应用程序编写进程同步
我正在使用AutomationElement自动化我的 .net 应用程序我想为我的框架编写进程同步。是否有任何WINAPI .net API 可以告诉我们进程是否繁忙。我使用的是 Windows 7 操作系统和 .Net 4.0 框架。
问候, 拉吉
c# - C#递归在打开的对话框中找到automationElement
单击下载按钮后,我正在尝试浏览文件。但我虽然编写了一个递归函数,可以使用 AutomationElement 库在任何窗口中查找控件,因此希望我可以在打开的对话框窗口中找到嵌套控件。这个功能现在不工作了。请让我知道问题出在哪里,或者如果您有任何建议,请告诉我。
问题是它永远不会到达 else 语句并且永远不会结束。所以我认为它根本找不到元素。
这是我试图使用的突出显示的元素:
谢谢
.net - UI自动化.net调用模式不起作用
大家好,在尝试通过我的客户端发送邮件时尝试单击 Outlook 安全警告上的按钮时遇到 UI 自动化问题,当我尝试发送邮件时,它会显示警报提示以选择我是否要允许电子邮件发送与否。
到目前为止,这是我的代码,它可以识别所有内容,但是在调用允许按钮上的模式时,它什么也不做,已经检查了 ispassword 属性以检查此按钮是否已锁定,但到目前为止还没有运气。
有什么想法吗?,非常感谢您的帮助。
c# - 在浏览器中托管 Word - AutomationElement IsWindowPatternAvailable - 如何设置?
我们在 a中托管MS-Word
文档。WebBrowser control
WPF application
在导航到选定的WebBrowser control
MS-Word 文档期间显示以下对话框:
我们尝试使用 以编程方式关闭对话AutomationElement
。该代码在测试应用程序中没有任何问题。当我们在我们的实际应用程序中调整代码时(edit
文件,显示文件mail merge
),只有mail merge
部分正确地关闭了对话。在另一种情况下,无法找到对话的 AutomationElement。
我们发现,当对话的 AutomationElement 具有IsWindowPatternAvailable = false
.
有没有办法提前设置这个属性?或者为什么它在一种情况下为真而在另一种情况下为假的原因?
测试应用程序是一个“标准 WPF 应用程序”项目。它只包含 MainWindow.xaml.cs 和 MainWindow.xaml。单击按钮Source
设置WebBrowser
:
backgroundCheck
搜索特定对话并调用Open
按钮
我们的实际应用程序要复杂一些,并且使用MVVM
,PRISM 5
和WCF
. 我们使用 WCF 从服务器加载 Word 文档。文件保存在 %temp% 中。
两个ViewModel
s(编辑文档/显示合并文档,每个都在 a 中different module
)发布s 订阅的一个event
:View
我们在IsWindowPatternAvailable
的帮助下发现了不同之处inspect.exe
。当IsWindowPatternAvailable = true
对话是直接子的Desktop
并且可以被找到。当IsWindowPatternAvailable = false
我们在 of 中看不到对话时,TreeView
我们inspect.exe
可以通过单击它来访问对话的属性。在inspect.exe
我们看到以下内容ancestors
:
- 对话本身
- 元素类名:壳嵌入
- 网页浏览器
- ViewEdit(查看以编辑文档)
- 应用
当我们使用代码在“合并”模块中编辑文档时,对话框正确关闭。两个模块都引用相同的UIAutomation
DLL(UIAutomationClient、UIAutomationProvider)。
这里提到了一个类似的问题: AutomationElement 使用 Inspect.exe 显示,但没有显示...
使用 aTreeWalker
或搜索完整Subtree
的AutomationElement.RootElement
不起作用。
欢迎任何线索为什么IsWindowPatternAvailable
会这样。也欢迎有关如何关闭文件下载对话框的其他建议。
c# - 获取 WPF 用户控件的 AutomationElement
我想AutomationElement
在测试过程中使用 Windows 来模拟 Userinput。我的特殊用例正在处理一个 ListBox 选择,从我在网上找到的内容中,我需要一个用于我的列表框的 AutomationElement 来操作它。
假设我有一个这样的窗口:
因为我有对 UserControl 的引用,所以我应该能够在不从桌面 ( AutomationElement.RootElement
) 开始搜索的情况下找到它。
获得AutomationElement
for my的最快方法是什么window.FindMe
UserControl
?
使用AutomationElement.RootElement.FindFirst(...);
将从桌面开始,我看不到一种通用方法可以使搜索快速而没有任何误报的可能性。
c# - 从硬盘打开办公文档时以模式打开 exe(Windows 应用程序)
我有一个要求,如果用户从他/她的硬盘驱动器打开任何办公文档,它应该打开一个 exe(win 表单应用程序)作为模式窗口来捕获有关文档的详细信息。
为此,我开发了一个在客户端机器下运行的控制台应用程序,以监控是否有任何办公文档文件正在打开。请找到以下代码
如果您在OnUIAEvent
我Process.Start
用来打开 exe 的事件处理程序中看到。它按预期工作。但我希望 exe 应该以模式打开到打开的文档。下面的代码是 exe 的表单加载。
是否可以打开 Windows 应用程序以打开已打开文档的模式?
c# - 确定 AutomationElement 是否可见
有什么方法可以确定 AutomationElement 是否对用户可见?
ClickablePoint 和 IsOffcreen 都有例外,它们显示/隐藏(不)想要的元素。
例如。当我有全屏窗口时,桌面图标没有 ClickablePoint 但不在屏幕外,但全屏应用程序菜单栏中清晰可见的某些项目也不可点击。
因此,如果我通过 ClickablePoint,桌面图标被隐藏,但菜单项丢失;如果我通过 Offscreen,菜单项可见,但桌面项也可见。
c# - 为什么自动化元素属性与 Inspect 中的值不匹配?
获取后,AutomationElement
我IsContentElement
使用以下方法获取属性:
我的应用程序中的输出True
。
使用 Inspect.exe(从https://developer.microsoft.com/en-us/windows/downloads/windows-10-sdkIsContentElement
安装)的值为False
。
我 99% 确定我的应用程序和 Inspect.exe 正在查看元素(相同的边界框、相同的控件类型、相同的名称 - 文件资源管理器 Windows 10 中垂直滚动条的向下箭头)。
似乎也适用于其他属性。为什么他们不匹配?