UI要素を検索するメソッドを使用します。
public static bool findtopuielm(string uiitemname)
{
bool res = false;
try
{
AutomationElement desktopelem = AutomationElement.RootElement;
if (desktopelem != null)
{
Condition condition = new PropertyCondition(AutomationElement.NameProperty, uiitemname);
AutomationElement appElement = desktopelem.FindFirst(TreeScope.Descendants, condition);
if (appElement != null)
{
res = true;
}
}
return res;
}
catch (Win32Exception)
{
// To do: error handling
return false;
}
}
このメソッドは、デスクトップに表示されるまで要素を待機する別のメソッドによって呼び出されます。
public static void waittopuielm(string appname, int retries = 1000, int retrytimeout = 1000)
{
for (int i = 1; i <= retries; i++)
{
if (findtopuielm(appname))
break;
Thread.Sleep(retrytimeout);
}
}
たとえば、最後の関数を呼び出すと、次のようになります。
waittopuielm( "テスト");
要素が見つからない場合でも常にtrueを返します。その場合、テストを失敗させます。どんな提案でも歓迎されます。