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

automationelement - TreeScope 上的自动化 FindFirst 找不到元素

在搜索 Name 属性和 ControlType 属性时,TreeScope 在 Internet Explorer 中查找元素时遇到问题。

mainElement 是表示“Internet Explorer_Server.

UISpy 中的 mainElement 下列出了所有自动化元素。

公共 Auto.AutomationElement GetElementByNameAndControlType(Auto.AutomationElement mainElement, System.Windows.Automation.ControlType controlType, string propertyName)

{

我终于能够使用下面的代码找到元素,但真的很想了解为什么上面的代码不起作用。

公共 Auto.AutomationElement GetElementByIsValuePatternAvailablePropertyAndName(Auto.AutomationElement mainElement,字符串名称,Auto.ControlType controlType)

{

}

0 投票
2 回答
3715 浏览

c# - 使用 Windows.Automation,我可以通过正则表达式找到 AutomationElement 吗?

我有一个对象树,它在表父级中有行对象。我正在尝试将所有这些行放入AutomationElementCollection

所有行都AutomationElement.NameProperty包含字符串“行”。但是,它们是该字符串的变体 - 例如“Row1”、“Row2”、“TopRow”……

似乎我可能遗漏了一些东西,因为该FindAll方法允许您定义TreeScope并找到与提供的参数AutomationElement匹配的any 。Condition我只是希望我的条件不受限制,因为我已经可以通过TreeScope.

0 投票
2 回答
3333 浏览

tfs - 作为 CI 的一部分运行自动化 UI 测试

我正在为大型 WPF 应用程序开发自动化测试套件。我为 Microsoft Windows 自动化 API(以前称为 UI 自动化框架)创建了一个包装库,并使用它来实现各种健全性测试。我的团队希望通过在每次签入时运行这些测试来进行持续集成。我们正在使用 TFS(我相信是 2012 年)和 MSTest。

这些测试的问题在于它们需要 UI 启动并运行才能实际运行测试。我想这个想法是将构建的二进制文件复制到远程 VM 并使用远程代理运行测试,但我不完全确定从哪里开始。

以前有没有人这样做过并且有任何代码/构建工作流 XAML 示例来实现这样的事情?

0 投票
1 回答
1482 浏览

c# - 自动化元素/上下文菜单

描述

我试图能够使用 UI 自动化与上下文菜单进行交互。基本上,我正在尝试:

  • 把重点放在一个AutomationElement
  • SendKeys.SendWait发送一个SHIFT+F10
  • 看看会弹出什么

我所看到的

我所看到的是AutomationElement.FindAll(TreeScope.Descendants, Condition.TrueCondition),即使 UISpy 看到它,它似乎也没有反映何时弹出上下文菜单。

任何帮助将不胜感激。

例子

这是我在LINQPad中运行的示例应用程序:

0 投票
2 回答
2438 浏览

c# - TreeWalker 从另一个窗口遍历控件

我正在使用包含大量日志消息的应用程序窗口。我需要过滤它们并仅检索那些符合某些条件的。我选择遍历它们是TreeWalker因为过滤大量消息AutomationElement.GetAll()太昂贵(可能有数千条消息)。

这是我正在测试的控件层次结构的 UISpy 视图。

UISpy 截图

出乎意料messages的长度大于实际日志消息计数。我查询了额外的自动化元素是 UISpy,发现这个元素是从另一个窗口中检索到的(它们也符合条件ControlTypeProperty = ControlType.DataItem)。而且,这个窗口甚至属于另一个应用程序。TreeWalker完成了它在范围内的搜索parentDatagrid并继续遍历所有桌面层次结构。

当然,我希望只得到datagrid的子元素。什么会导致这种奇怪的TreeWalker行为?也许,我的代码是错误的,但我多次编写相同的片段,并且它工作正常。

0 投票
1 回答
1315 浏览

c# - AutomationElement.FromHandle(IntPtr Handle) 停止应用程序

我正在尝试从 google chrome 浏览器中查找 URL。

我正在使用上面的代码。它在其他应用程序中效果很好,但在我的情况下它会停止我的应用程序。

但主要问题是我调试它时它会正常工作,所以不调试时会出现什么问题。

请给出你的解决方案。

提前谢谢

0 投票
2 回答
541 浏览

automation - 从 AutomationElement 获取图像类的内容

我在包含图像的第三方应用程序中行走控件。自动化元素返回类名 Image,关于如何将该 Image 的内容作为位图对象甚至字节获取的任何想法?

0 投票
1 回答
388 浏览

c# - 使用任务计划程序并且用户已注销时如何找到 AutomationElement?

我有一个应用程序设置为在用户注销时在一天中的特定时间运行。它在 C# 中结合使用 Selenium 和 UI 自动化来每天下载一个文件。登录后运行,一切正常。但是,当我通过任务计划程序运行应用程序时,它会在尝试查找 AutomationElement 时失败。

我从以下 PropertyConditions 开始:

最初,我试图通过

但是,我的研究使我相信,以这种方式运行应用程序时实际上并没有创建桌面。我还仔细检查了注册表中的 NoInteractiveServices 是否设置为 false,然后通过 Selenium 截取屏幕截图以确保 Web 自动化正常工作 - 确实如此。

我通过以下代码仔细检查了将所有 RootElement 的 TreeScope.Children 写入日志文件的 RootElement

什么都没有出现。

然后我尝试从进程句柄中找到一个 AutomationElement。

再一次,什么都没有。

我一直试图找到某种“挂钩”的 AutomationElement,这样我就可以开始搜索那个保存对话框了。很想知道你们的想法、任何建议、提示或“嘿,伙计——你做错了!” 提前谢谢大家!

0 投票
2 回答
876 浏览

c# - 将点击发送到没有 InvokePattern 的 AutomationElement

使用AutomationElement,有什么方法可以将点击发送到 aTabItem而无需移动鼠标并模拟点击?AutomationElement对我来说仍然是新的-据我了解,除非它支持InvokePattern(TabItem 不支持),否则您必须走定位控制位置和模拟鼠标的路线。我有那个代码工作(见下文) - 我只是好奇这是否是我的选择。

谢谢你。

0 投票
0 回答
65 浏览

c# - 闪存中的自动化元素

我正在使用 AutomationElement-Class 在浏览器 (firefox) 中的 flash 应用程序(BigBlueButton,http ://demo.bigbluebutton.org,我正在测试它)中查找聊天。只要没有出现新消息,它似乎就可以工作。每次有新消息进入时,UI 都会更新 AutomationElement,其中 a) 找不到聊天或 b) AutomationElement 描述聊天不包含消息。在新消息到达之前,它似乎起作用了。我可以访问这些消息。

到目前为止我的代码:

有人知道如何在 UI 更新后进行聊天吗?

我使用 MS 检查工具(https://msdn.microsoft.com/en-us/library/windows/desktop/dd318521%28v=vs.85%29.aspx)对其进行了测试。如果有新的聊天消息出现并且我刷新了树,我也没有看到新消息。如果我使用 Internet Explorer 进行测试,也会发生同样的情况。如果我要折叠应用程序的整个树并且我再次转到消息,我会看到新消息。有时我把树倒塌后看不到整棵树。然后我必须重新启动浏览器。有人知道我如何通过我的程序获得新消息吗?检查工具如何(以及为什么)获得更好的结果?

问候