Microsoft オートメーション UI フレームワークを使用して、オートメーション テスト ケースを開発しています。私が直面した問題は、静的テキスト コントロールとの相互作用に関連しています。コントロールのテキストを取得しようとしています。ローカル マシンでテストを実行すると、テストは完璧に機能します。問題は、(どの) テスト エージェントでテスト コントローラーを介してテストを実行するときです。表示されるエラーは、静的コントロール テキストが見つからないというものです。
Theis は、対話したいコントロールを初期化しようとしているコードの一部です。
private void Init(TreeScope treeScope, params Condition[] properties)
{
try
{
List<Condition> propertiesList = properties.ToList();
propertiesList.Add(Condition.TrueCondition);
bool controlFound = Wait.ForCondition(
() =>
{
try
{
TestControl = Parent.FindFirst(treeScope,
new System.Windows.Automation.AndCondition(propertiesList.ToArray()));
return !TestControl.Current.IsOffscreen;
}
catch
{
return false;
}
});
if (!controlFound)
{
throw new ElementNotAvailableException(DescriptiveName + "Control is NOT found");
}
this.GetItAsUITestControl().WaitForControlReady(Playback.PlaybackSettings.WaitForReadyTimeout);
if (TestControl.Current.IsKeyboardFocusable)
{
TestControl.SetFocus();
}
string controlFullName = this.TestControl.Current.ControlType.ProgrammaticName;
DescriptiveName = "< " + DescriptiveName + " " + controlFullName.Substring(controlFullName.LastIndexOf(".")) + " >";
}
catch (ElementNotAvailableException ex)
{
Report.Error(ex.Message);
}
catch (Exception ex)
{
Report.Error(ex.Message);
}
}
何か案は?
仮想マシンの管理に Microsoft System Center Virtual Machine Manager 2008 R2 を使用しています (すべてのマシンは vmware だと思います)。しかし、私の見解では、静的テキスト コントロールの内容を検証するものを除いて、すべてのテストが VM 上で問題なく実行されるため、問題は仮想マシンにはありません。VMWare リモート コンソールを使用して確認できるため、テストが実行される VM のデスクトップがアクティブであることは 100% 確信しています。
リモート マシンでのテストの実行に関しては、Visual Studio に付属のテスト コントローラーとテスト エージェントを使用しています。