如何从AutomationElement获取原始元素

时间:2019-05-24 00:22:27

标签: c# wpf uwp microsoft-ui-automation

如何从AutomationElement中获取实际的UWP控制元素

以下API返回AutomationElement

parent.FindFirst(TreeScope.Descendants, new PropertyCondition(AutomationElement.AutomationIdProperty, automationId));

我想断言元素的特定属性和相应的值。 对于前。图片控件的网址。

如何获取实际控件或其属性? 谢谢

2 个答案:

答案 0 :(得分:0)

如果是WPF应用程序,则需要执行以下步骤来获得实际控制权。

  1. 使用UITestControlFactory.FromNativeElement(automationelement,TechnologyName.UIA.ToString());将AutomationElement转换为UITestControl。 前面的代码将返回UITestControl的实例。
  2. 命名空间Microsoft.VisualStudio.TestTools.UITesting.WpfControls提供了许多用于创建实例以访问其属性的控件类。您只需在构造函数中传递UITestControl的对象。请参考下图

WPF controls

答案 1 :(得分:-1)

首先,您必须确保automationId值与图像控件匹配。然后,您必须将FindFirst的结果强制转换为ImageControl。

var imageControl = parent.FindFirst(TreeScope.Descendants, new PropertyCondition(AutomationElement.AutomationIdProperty, automationId)) as ImageControl;

我还建议使用更高级的UI自动化库,例如TestStack.White或FlaUI,它们具有这些扩展方法,您可以在其中根据控件的类型和实际ID传递条件。

例如:Flaui拥有以下API:

var submitBtn= parent.FindFirstDescendant(cf => cf.ByName("SubmitBtn").And(cf.ByControlType(ControlType.Button)))?.AsButton();