2012-05-08 7 views
0

コード化されたUIテストAPIを使用してデスクトップアイコンを確実に見つける適切な方法を知っていますか? 記録されたアクションから作成された自動生成コードは、記録された日に特定のデスクトップアイコンをクリックして動作します。次の日にラップトップをオンにすると、アイコンとして記録アクションが機能しなくなります。WPFコード化UIテスト:デスクトップアイコンの信頼性の高い検索

私はこれを手作りしようとしています

ので、私が試した:私のコメントで示されているように

public void LaunchOi() 
{ 
    var desktop = ApplicationUnderTest.Desktop.GetChildren().First(c => c.Name == "Desktop"); 

    var folderView = new WinWindow(desktop); 

    // I copied these numbers from autogenerated code. 
    // Yesterday, PropertyNames.Instance = 7, today = 9. Why so? 
    folderView.SearchProperties[WinWindow.PropertyNames.ControlId] = "1"; 
    folderView.SearchProperties[WinWindow.PropertyNames.Instance] = "9"; 
    folderView.Find(); 

    var winList = new WinListItem(folderView); 
    winList.SearchProperties[WinListItem.PropertyNames.Name] = "OCC600 OI";   
    winList.Find(); 

    Mouse.DoubleClick(winList, MouseButtons.Left); 
} 

を、WinWindow.PropertyNames.Instanceは一定のままではありません。昨日私がこのレコーディングを成功させたとき、WinWindow.PropertyNames.Instanceは7だった。今日、それは9です。なぜ誰が知っていますか?私はこれに関する文書を見つけることができません。

+0

'WinWindow.PropertyNames.Instance'プロパティを使用せずに実行しようとしましたか? – Schaliasos

+0

ありがとうございます。代わりにApplicationUnderTest.Launchを使うことにしました。 –

答えて

1

コメントに記載されているSchaliasosは、インスタンスプロパティを削除することから始めてください。インスタンスプロパティは、特にデスクトップほど頻繁に変化するものでは非常に信頼性がありません。

インスタンスプロパティの説明をもう少し詳しく説明します。インスタンスプロパティは、通常、有効な検索プロパティが不足している場合に録画で使用されます。だから、録音を行う最後の溝の努力として、レコーダーは、同じ検索プロパティを持つ20個のコントロールがあり、使用するコントロールは7番であると言うでしょう。次に、アプリケーションを実行する翌日、いくつかのデスクトップアイコンを削除し、現在22個のアイコンがあるとします。現在、フレームワークはまだコントロールのインスタンス7を探していますが、昨日の7は今日9です。

その他の検索プロパティがある場合は、インスタンスの代わりに検索して使用する必要があります。それが可能でない場合は、同じ目的を達成するための他のメソッドを探します。UIを使用する代わりにC#でファイルを直接開いてみてください。

+0

詳細な説明をありがとう。 ApplicationUnderTest.Launchで代わりに行ってください。 –

+0

デスクトップ上で動作する検索プロパティを見つけるよりも意味があります。 – stoj

関連する問題