c# - 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 语句中添加一些东西?
解决方案
推荐阅读
- python - 如何使用字典调用函数?
- vue.js - 如何使用 props 在 vue.js 中传入 img src?
- node.js - 错误消息“错误:0308010C:数字信封例程::不支持”
- java - 是什么限制了所有对象都可以访问 clone()?
- react-native - 在通过控制台创建的 Firebase 动态链接中添加参数
- python - 如何将包含在某些不可迭代对象中的列表中的列表展开为平面?
- c++ - C++11 的 std::thread 是否与 POSIX 信号量兼容?
- typescript - TypeError:v1.isEqual 不是函数
- apache-kafka - 抵消与运行消费者的保留
- python - Python 定义基于输入名称创建变量的函数