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



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

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

这通常发生在测试重新运行时,我看到它可能每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#和Selenium Web驱动程序方面也遇到了类似的问题。该问题仅出现在两年前安装的一个vm代理上,版本为3.218.0。我已经将其升级到3.220.5版本->这也无济于事。问题是,在azure中的同一vm上,另外两个具有相同版本的代理运行良好(但它们是在3.220.5时新安装的(。我所做的只是删除了有问题的代理,然后从头开始重新安装。重新安装问题消失后,但有趣的是,版本并没有改变,我不知道为什么这有帮助。我还尝试了不同的NUGET超时设置,以及TASKLIB_TEST_TOOLRUNNER_EXITDELAY——不幸的是,没有任何反馈。

在这里帮助我的是使用简单的"powershell"任务DotNetCoreCLI@2.

这种方法的问题消失了:

- powershell: |
dotnet test your.dll --no-restore --logger trx
displayName: Tests

最新更新