0

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

私はこれを手作りしようとしているので、試しました:

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 でした。これに関するドキュメントが見つかりません。

4

1 に答える 1

1

Schaliasos がコメントで述べたように、インスタンス プロパティを削除することから始める必要があります。インスタンスのプロパティは、特にデスクトップのように頻繁に変更されるものでは非常に信頼性が低くなります。

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

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

于 2012-05-09T12:26:49.600 に答える