2

次のボタンが定義された WPF アプリケーションがあるため、UI テスト用の UI オートメーションを評価しています。

<Button Style="{DynamicResource ButtonStyle}" x:Name="MyBtn"/>

ボタンを視覚的に無効にする必要がある場合は、スタイルを変更して、ボタンが無効になっていることをユーザーが認識できるようにします (色が変更されます) が、ボタンは内部的に有効になっているため、メッセージを表示するために OnClick イベントを起動できます。ユーザーが「無効」ボタンをクリックします。

問題は、現在適用されているスタイル、つまりボタンが無効か有効かを UI オートメーションから確認する方法がわからないことです。どうすればそれができるか知っていますか?

通常の状況では、次のようにする必要があります。

Automation.Condition cEBtn = new PropertyCondition(AutomationElement.AutomationIdProperty, "MyBtn");

AutomationElement mybtnElement = appRegraceElement.FindFirst(TreeScope.Children, cEBtn);

bool disMyBtn = (bool)mybtnElement .GetCurrentPropertyValue(AutomationElement.IsEnabledProperty);

しかし、私の場合、ボタンは常に有効になっているため、ボタンに適用されているスタイルを確認する必要があります。

どうもありがとうございました。

よろしくお願いします

4

1 に答える 1

1

このリンクでコメントされているように: http ://social.msdn.microsoft.com/Forums/en/windowsaccessibilityandautomation/thread/129d2ea6-91ae-4f65-b07e-c36684ae742b

WPFプロパティは、(まだ)自動化プロパティとして公開できません。それにもかかわらず、マイケルは回避策を提案します。誰かに役立つ場合に備えて、ここに残しておきます。

<Style TargetType="Button">
    <Setter Property="AutomationProperties.ItemStatus"
        Value="{Binding RelativeSource={RelativeSource Self}, Path=Style}" />
</Style>

ここで行っていることは、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);

回避策としては問題ありませんが、2つの問題があります。アプリケーションコードを更新する必要があり、テスト中には必要ありません。また、一度に1つのプロパティしか公開できません。

よろしく、Víctor

于 2010-04-23T14:22:20.393 に答える