UI自动化按钮样式已启用

我正在评估用于UI测试的UI自动化,我有一个定义了以下按钮的WPF应用程序:

当我需要在视觉上禁用按钮时我只需更改样式,以便用户知道按钮被禁用(颜色已更改)但仍然按钮在内部启用,因此我仍然可以启动OnClick事件以便在显示消息时用户点击“禁用”按钮。

现在问题是我不知道如何从UI Automation检查它当前应用的样式,即按钮是否被禁用或启用。 你知道我怎么能这样做?

在正常情况下,我应该这样做:

 Automation.Condition cEBtn = new PropertyCondition(AutomationElement.AutomationIdProperty, "MyBtn"); AutomationElement mybtnElement = appRegraceElement.FindFirst(TreeScope.Children, cEBtn); bool disMyBtn = (bool)mybtnElement .GetCurrentPropertyValue(AutomationElement.IsEnabledProperty); 

但在我的情况下,按钮始终启用,因此我需要检查应用于按钮的样式。

非常感谢你。

最好的祝福

如此链接评论: http : //social.msdn.microsoft.com/Forums/en/windowsaccessibilityandautomation/thread/129d2ea6-91ae-4f65-b07e-c36684ae742b

WPF属性不能(尚未)作为自动化属性公开。 不过,迈克尔提出了一个解决方法。 我会留在这里以防万一对某人有用。

  

正如您所看到的,我们在这里做的是使用Automation属性ItemStatus公开(对于所有按钮)WPF属性Style。 然后可以从UI自动化客户端获取此样式:

 Automation.Condition cEBtn = new PropertyCondition(AutomationElement.AutomationIdProperty, "MyBtn"); AutomationElement mybtnElement = appRegraceElement.FindFirst(TreeScope.Children, cEBtn); string a = (string)mybtnElement.GetCurrentPropertyValue(AutomationElement.ItemStatusProperty); 

作为一种解决方法它对我来说没问题,但它有两个问题,它需要我更新应用程序代码,在测试期间不应该是必需的,并且它一次只能暴露一个属性。

最好的问候,Víctor