- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我刚刚开始使用 AutomationElement,因为我们想对自定义控件进行集成测试,我认为我应该使用 AutomationElement。
我已经成功创建了一个带有自定义控件的窗口,并且可以成功获取窗口和控件的 AutomationElements
// Retrieve the View
System.Windows.Automation.Condition viewCondition = new PropertyCondition(AutomationElement.AutomationIdProperty, "MyTestView");
AutomationElement view = AutomationElement.RootElement.FindFirst(TreeScope.Children, viewCondition);
Assert.IsNotNull(view);
// Retrieve the CustomControl
System.Windows.Automation.Condition comboboxCondition = new PropertyCondition(AutomationElement.AutomationIdProperty, "MyCustomControl");
AutomationElement combobox = view.FindFirst(TreeScope.Children, comboboxCondition);
Assert.IsNotNull(comboboxCondition);
现在,我想做的是使用,例如 ValuePattern。这就是我感到困惑的地方。
为了查找信息,我在 referencesource.microsoft.com 上搜索了 WPF 源代码。我遇到了实现 IValueProvider 的 ComboboxAutomationPeer,所以现在我很困惑。
我是否应该还实现实现 IValueProvider 的 MyCustomControlAutomationPeer,然后 AutomationElement 是否会与 ValuePattern 一起工作?或者我应该让 MyCustomControl 实现 IValueProvider?
最佳答案
您无需执行任何操作即可使用模式。 UI Automation 为您做这件事(作为目标应用程序的代理)。这在此处的官方文档中有很好的解释:Get Supported UI Automation Control Patterns
这是一个示例摘录:
SelectionItemPattern pattern;
try
{
pattern = yourAutomationElement.GetCurrentPattern(SelectionItemPattern.Pattern) as SelectionItemPattern;
}
catch (InvalidOperationException ex)
{
Console.WriteLine(ex.Message); // Most likely "Pattern not supported."
return;
}
pattern.Select();
关于c# - 我应该使用 AutomationPeer 还是 AutomationElement?或两者?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31077082/
我创建了一个 WPF 应用程序。它在台式机上工作得很好,但当应用程序在触摸屏上运行时它崩溃了。我关闭了触摸屏进程,应用程序运行良好。我想知道有没有人找到比禁用触摸屏进程“更好”的修复方法,因为这在 M
我的经理让我为我们的 Silverlight 应用程序做一些自动化的 UI 测试。问题是此应用程序使用了一些自定义控件,因此我无法立即以编程方式访问它们。 访问它们的唯一方法是使用 Automatio
我刚刚开始使用 AutomationElement,因为我们想对自定义控件进行集成测试,我认为我应该使用 AutomationElement。 我已经成功创建了一个带有自定义控件的窗口,并且可以成功获
我在 .NET Framework 4.5.1 上构建了一个 WPF 桌面应用程序。它“通常”工作正常,但是,在某些机器上,在运行时,当要显示 WPF 数据网格时,会出现 System.OutOfMe
我是一名优秀的程序员,十分优秀!