現在、Web アプリケーションに C# を使用してコード化された UI テストの自動化を支援しようとしています。私がよく遭遇する問題は、UITestControl
オブジェクトがページに存在するかどうかを判断するのが非常に難しいということです。残念ながら、コード化された UI テストに関する Microsoft の MSDN Web サイト上のドキュメントは、実質的に存在しません (こちらのページを参照してくださいUITestControl
)。
基本的に私が求めているのは:
UITestControl
ページに が存在するかどうかを判断する最良の方法は何ですか?UITestControl.Exists
プロパティはどのように機能しますか?- メソッドは何をし
UITestControl.Find()
ますか? UITestControl.TryFind()
メソッドはどのように機能しますか?
私がそれを処理しようとした方法:
前述したように、これらすべてのクラスとメソッドに関するドキュメントはほとんど空白です。メソッドとプロパティを説明できるのは、Intellisense の 1 行の説明だけなので、リストされているメソッドを試してみました。
最初に、UITestControl.Exists
プロパティが true かどうかを確認しようとしましたが、時間の経過とともに他のユーザーの経験を調べた結果、ブラウザーが開いていなくても、常に true を返すことが明らかになりました。最も明らかなオプションが機能していなかっUITestControl.Find()
たので、メソッドを使用してみましたが、引数を取らず、何も返さないため、何をするのかわかりませんでした。メソッドを使用してUITestControl.TryFind()
みましたが、時々うまくいきましたが、正しいページにいない場合にのみ false を返すように見えることがわかりました。それ以外の場合は常に true を返しました。明らかに、私はそれがどのように機能するのかわからなかったので、テストとして使用すべきではありません.
提供されたメソッドで仕事をすることができない場合は、独自のツールを作成する必要があると考えました。最近Mouse.Hover(UITestControl)
、try/catch ブロックで使用して、コントロールが存在するかどうかを判断しようとしました。
public bool DoesExist(UITestControl control){
if(control == null)
return false;
try{ Mouse.Hover(control); }
catch (UITestException)
{
return false;
}
return true;
}
時々機能しますが、特定の状況では、理解できない理由で誤検知を返すようです。私はまだ盲目的に飛んでいて、ほとんどアイデアがありません。
Visual Studio 2012 と Microsoft .NET Framework バージョン 4.5.50709 を使用しています。