首页 > 解决方案 > Azure Selenium 测试 - “STDIO 流未在进程退出事件的 10 秒内关闭”

问题描述

我有一个 Azure DevOps CI 版本,它可以同时在同一台服务器上运行大量的 selenium 测试。通常它工作得很好,但偶尔我的硒测试任务会因为这个错误而超时:

2020-05-07T15:47:37.0692681Z 已完成测试执行模型... 2020-05-07T15:47:48.6637501Z STDIO 流未在 进程 'C:\TFSAgent5_work_tasks\VSTest_ef087383-ee5e的退出事件的 10 秒内关闭-42c7-9a53-ab56c98420f9\2.153.9\Modules\DTAExecutionHost.exe'。这可能表明子进程继承了 STDIO 流并且尚未退出。2020-05-07T16:08:50.9254238Z ##[错误]任务已超时。

这通常发生在重新运行测试时,我看到它可能每 100 次测试运行一次。这是一个致命的问题,因为它将在超时设置的最长时间内锁定测试代理(在我的情况下为 30 分钟)。许多其他帖子 指出,如果您没有正确关闭硒驱动程序,可能会发生这种情况,但是我相信我是这样,而且,在我的情况下,99/100 时间它工作得很好,这是我用来关闭硒的代码司机:

[AssemblyCleanup]
public static void Cleanup()
{
    try
    {
        driver.Close();
        driver.Quit();
    }
    catch (Exception e)
    {
        Debug.WriteLine(e.Message);
    }
}

他们真的没有分配有用的建议。我认为这个问题与测试代理服务器(或测试服务器)所承受的负载有关。当我运行较小的 CI 版本(每晚)时,我从来没有看到这个问题。

以前有没有人在高负载下遇到过这个问题?我想知道“10 秒”是从哪里来的,是否可以通过某种方式进行调整?我用来关闭驱动程序的代码是否存在问题,是否有更好的关闭方法可以确保即使它被锁定我仍然可以杀死它,也许我可以在我的 catch 语句中添加一些东西?

标签: c#seleniumselenium-webdriverazure-devopsautomated-tests

解决方案


推荐阅读