Azure Selenium 测试 - “STDIO 流未在进程退出事件后 10 秒内关闭”

Dav*_*ers 5 c# selenium automated-tests selenium-webdriver azure-devops

我有一个 Azure DevOps CI 版本,它同时在同一台服务器上运行大量 selenium 测试。通常它运行良好,但有时我的 selenium 测试任务会由于此错误而超时:

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

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

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

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

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

小智 0

我对 C# 和 Selenium Webdriver 也有类似的问题。该问题仅出现在大约 2 年前安装的一台虚拟机代理上,版本为:3.218.0。我已将其升级到 3.220.5 版本 -> 它没有帮助。问题是,在 azure 中同一虚拟机上具有相同版本的另外 2 个代理运行良好(但它们是新安装的 3.220.5)。我所做的只是删除有问题的代理并从头开始重新安装。重新安装后问题消失了,但有趣的是版本没有改变,我不知道为什么这有帮助。我也尝试过不同的 NUGET 超时设置以及 TASKLIB_TEST_TOOLRUNNER_EXITDELAY - 不幸的是没有任何反馈。