在测试运行后杀死所有iexplore进程失败

时间:2015-09-30 15:38:54

标签: coded-ui-tests specflow mtm

当我们运行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警报弹出窗口。当测试运行完成时,它仍然在屏幕上阻止下一个测试,如下所示:

Popup remains in screen

为什么不关闭警报,我们如何解决此问题?

1 个答案:

答案 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进程,无论他们是否有可见的警报或确认对话框。

参考文献: