当我们运行CodedUI测试并且测试用例失败时,我们通过调用下面的Kill()
来终止Internet Explorer进程:
private static readonly HashSet<string> ProcessesToKill =
new HashSet<string>(new[] { "iexplore" });
public static void Kill()
{
var runningProcessesToKill = (from p in Process.GetProcesses()
where ProcessesToKill.Contains(p.ProcessName,
StringComparer.OrdinalIgnoreCase)
select p).ToArray();
// First try to close the process in a friendly way
CloseProcess(runningProcessesToKill);
// Then wait for a while to give the processes time to terminate
WaitForProcess(runningProcessesToKill);
// If not closed kill the process.
KillProcess(runningProcessesToKill);
}
首先在进程上调用CloseMainWindow()
和Close()
,然后等待一段时间,然后在进程上调用Kill()
来完成Killing。
不幸的是,这不会关闭JavaScript警报弹出窗口。当测试运行完成时,它仍然在屏幕上阻止下一个测试,如下所示:
为什么不关闭警报,我们如何解决此问题?
答案 0 :(得分:1)
您可以使用命令行中的taskkill
命令强制执行此操作:
C:\>taskkill /F /IM iexplore.exe
当然,这对您的测试没有帮助。相反,请使用Process.Start(...)
:
public static void Kill()
{
System.Diagnostics.Process.Start("taskkill", "/F /IM iexplore.exe");
}
这将关闭所有Internet Explorer进程,无论他们是否有可见的警报或确认对话框。
参考文献: