コード化された UI の WaitForControlExist() 関数で奇妙な動作に直面しています。2 回目のクエリを実行すると、コントロールが存在するにもかかわらず、値が false を返します。これはコード化された UI の予想される動作ですか? 私のプログラムは以下のようになります..
//A sample program that Checks for Run window when "Windows + R" key is pressed
public void TestFunction()
{
bool isExists = false;
#region Variable Declarations
UIMap uiMap = new UIMap();
WinWindow uIRunWindow = uiMap.UIRunWindow;
WinComboBox uIOpenComboBox = uiMap.UIRunWindow.UIItemWindow.UIOpenComboBox;
WinButton uICancelButton = uiMap.UIRunWindow.UICancelWindow.UICancelButton;
#endregion
//1st Run
Keyboard.SendKeys("R", ModifierKeys.Windows);
isExists = uIRunWindow.WaitForControlExist(7000);
Console.WriteLine("Is Run Window Appears :: " + isExists);
Mouse.Click(uICancelButton);
Playback.Wait(2000);
isExists = uIRunWindow.WaitForControlNotExist(7000);
Console.WriteLine("Is Run Window Closes :: " + isExists);
//2nd Run
Keyboard.SendKeys("R", ModifierKeys.Windows);
isExists = uIRunWindow.WaitForControlExist(7000);
Console.WriteLine("Run Window Appears :: " + isExists);
Mouse.Click(uICancelButton);
Playback.Wait(2000);
isExists = uIRunWindow.WaitForControlNotExist(7000);
Console.WriteLine("Is Run Window Closes :: " + isExists);
}
上記のプログラムでは、実行ウィンドウが存在するにもかかわらず、2 回目の実行イベント中に値が false として返されます。
私が遭遇した回避策は、1回目と2回目の実行に2つの異なるオブジェクトを使用するか、ここに示すようにUIMapオブジェクトを再初期化することです
このシナリオで他の解決策やベストプラクティスがあれば助けてください