2

WPF アプリケーションの自動化 (UI オートメーション、VSTS 2010 を使用) では、リソース ファイルにすべてのオートメーション ID を手動で追加し、1 つずつアクセスしていました。アプリケーションがいつでも拡張できることを考えると、これらの ID を手動で追加するのは面倒です。

では、これを作成できるツールはありますか? つまり、すべての ID を階層形式で取得してファイル (xml または csv) に保存すると、必要なときにいつでも解析できます。

すべての要素をスパイするだけでなく、同じものをエクスポートできる UISpy のようなツールを期待していました。

そのようなツールは存在しますか?または、代替アプローチはありますか?

貴重なフィードバックをお待ちしております。

ありがとう!

4

3 に答える 3

1

私はこれが好きです:

public static class AutomationIds
{
    public static readonly string MyDataGridId= Create();

    private static string Create([CallerMemberName] string name = null)
    {
        return name;
    }
}

<DataGrid AutomationProperties.AutomationId="{x:Static local:AutomationIds.MyDataGridId}"
          ... />

その後、テストで

var dataGrid = window.Get<ListView>(AutomationIds.MyDataGridId);
于 2015-12-23T16:06:14.293 に答える
0

自動化IDをXAMLで直接割り当ててから、XAMLファイルはXMLであるため解析します...

于 2012-11-19T18:33:21.537 に答える
0

見てみましょう...まず、コントロールを別のコントロールの子として動的に割り当てることができるため、データは階層的ではないと思います。

問題をサブセットに変更すると、「時間 t におけるコントロールの階層ビューを取得するにはどうすればよいでしょうか?」次に、MS UIAでこれに答えることができます。たとえば、単純なRawViewWalkerを使用して(メインウィンドウから開始して、ウォーカーで単純な幅優先検索を行うだけで十分です-もちろん、アプリケーションが実行されている間は、UIAが到達してクエリを実行できます)それ)。

しかし、このサブセットは最初の質問を満足させるものではありません。なぜなら、UI コレクション全体の一部が表示される可能性が高いからです (時間 t では非表示になっているものもあれば、まだアクティブ化されていないものもあるため)。

したがって、UIA ベースのツール (uispy など) を使用するのは非常に難しくなります。アプリケーション ビューをさまざまな状態に設定して、さまざまな時間 t1、t2 でアプリケーション内のすべてのコントロールに到達する必要があるためです...

すべての xml を同時に解析し、アプリケーションの「静的」コントロール マップの完全なツリーを構築することをお勧めします。これが、求めているものに最も近いと思います。

これは古い質問であるため、もはや問題になるとは思えませんが、ここで区別したかっただけです。

于 2016-05-13T03:30:38.257 に答える