1

Visual Studio 2010 Ultimate - Visual C# - codedUI を使用しています。

クライアントの自動テスト (スモーク テスト、回帰テストなど) をまとめていますが、テストの自動化を行おうとしているアプリケーションは協調的ではありません。クライアントのすべての Web アプリを問題なく自動化しましたが、デスクトップ アプリケーションでは、どのコントロール間でも一意の識別子を取得できないようです。

これは、アプリケーションのツリー構造をたどるコード化された UI の記録のサンプルです。リスト内のいくつかの異なる項目を強調表示し、リストを展開し、項目をクリックし、起動するウィンドウをブラウズします。

    /// <summary>
    /// SomeRecordedMethod
    /// </summary>
    public void SomeRecordedMethod()
    {
        #region Variable Declarations
        WinTitleBar uINavigatorTitleBar = this.UISomeRandomCompanyWindow.UINavigatorWindow.UINavigatorTitleBar;
        WinEdit uIObjectdescEdit = this.UISomeRandomCompanyWindow.UINavigatorWindow.UIDw_navigatorClient.UIObjectdescEdit;
        WinClient uICalendar1Client = this.UISomeRandomCompanyWindow.UIMaintainCalendar1Window.UIItemWindow.uICalendar1Client;
        #endregion

        // Click 'Navigator' title bar
        Mouse.Click(uINavigatorTitleBar, new Point(241, 9));

        // Click 'objectdesc' text box
        Mouse.Click(uIObjectdescEdit, new Point(19, 11));

        // Click 'objectdesc' text box
        Mouse.Click(uIObjectdescEdit, new Point(39, 10));

        // Double-Click 'objectdesc' text box
        Mouse.DoubleClick(uIObjectdescEdit, new Point(37, 11));

        // Double-Click 'objectdesc' text box
        Mouse.DoubleClick(uIObjectdescEdit, new Point(20, 11));

        // Double-Click 'objectdesc' text box
        Mouse.DoubleClick(uIObjectdescEdit, new Point(42, 5));

        // Double-Click 'objectdesc' text box
        Mouse.DoubleClick(uIObjectdescEdit, new Point(61, 11));

        // Click 'Calendar [1]' client
        Mouse.Click(uICalendar1Client, new Point(632, 141));

        // Click 'Calendar [1]' client
        Mouse.Click(uICalendar1Client, new Point(671, 200));

        // Click 'Calendar [1]' client
        Mouse.Click(uICalendar1Client, new Point(675, 301));

        // Click 'Calendar [1]' client
        Mouse.Click(uICalendar1Client, new Point(686, 396));

        // Click 'Calendar [1]' client
        Mouse.Click(uICalendar1Client, new Point(686, 544));

        // Click 'Calendar [1]' client
        Mouse.Click(uICalendar1Client, new Point(478, 547));

        // Click 'Calendar [1]' client
        Mouse.Click(uICalendar1Client, new Point(579, 552));

        // Click 'Calendar [1]' client
        Mouse.Click(uICalendar1Client, new Point(579, 552));
    }

「objectdesc」と「Calendar [1]」の複数のインスタンスに注意してください。すべての重複発生は異なるコントロールですが、アクションの記録はそれを拾っていません.

テストを実行しようとすると、明らかに次のようになります。

Visual Studio で自動化をテストするのは初めてなので、現時点でどのようなオプションがあるかわかりません。アドバイスをいただければ幸いです。

ありがとうございました

4

1 に答える 1

2

多くのコントロールではnew Point(x,y)への引数Mouse.Click()は必要ありませんが、2 つ以上の部分を持つ項目 (クリックできるがドロップダウン リストもあるボタンなど) には引数が提供されます。あなたが示すコードの (x,y) 値は、コード化された UI が見ているすべてが大きなコントロールであることを示唆しています。つまり、カレンダー全体または uIObjectdescEdit 全体であり、その中のフィールドではありません。

コード化された UI をサポートしないカスタム コントロールをアプリケーションが使用していると思われます。アプリケーションがどのように作成されているか、どのテクノロジ (WPF、Windows フォーム、MFC など) が使用され、どのカスタム コントロールが使用されているかを開発者から調べてください。次に、Microsoft の Coded UI Web ページの互換性リストと照らし合わせて回答を確認してください。カスタム コントロールが使用されている場合は、それらのコントロールの作成者に質問を繰り返す必要がある場合があります。

于 2013-05-28T16:07:57.207 に答える