大家好
我在单个 grunt 任务中使用 Protractor 和 webdriver-manager start,因为在 ci 中我不能使用 2 个终端窗口。
规格:Windows 7,node v0.10.26,Protractor 0.22.0,grunt protractor runner(使用 Protractor 0.22.0)
我正在同时使用 grunt 和 2 个任务 - grunt shell webdriver-manager start 和量角器。 一项一项地运行测试,他们总是成功。 运行所有测试,
第一次测试成功,但在第 4 次或第 5 次测试时失败并显示此消息.....警告:超出标准输出 maxBuffer。 使用 --force 继续。
似乎 spawn 命令缓冲区限制已超出并且子任务退出。
我通过更改 webdriver-manager spawn 命令解决了这个问题。
在 Webdriver-manager 我改变了
return childProcess.spawn(winCommand, finalArgs,
{ stdio: '继承' });
到:
return childProcess.spawn(winCommand, finalArgs,
{标准输出:'忽略'});
webdriver-manager 是否有任何其他解决方案不超过缓冲区,或者这可以配置吗? 禁用生成日志记录的功能是否可以包含在 Protractor 的未来版本中。
抱歉回复慢。 我觉得这是 grunt 的一个问题——所有 webdriver-manager 正在做的就是转发输出。 我不是特别熟悉 grunt 如何处理输出,但也许你可以告诉 grunt 忽略标准输出?
你好朱莉
没有成功,我能够从 webdriver-manager 的子进程中忽略标准输出。 虽然在 grunt 任务输出中,没有出现任何日志,但经过一些测试后,出现了相同的错误消息“超出标准输出最大缓冲区”。 我只能通过运行 grunt replace 任务来更改 webdriver 管理器中的 stdio 来规避这个问题。
抱歉回复慢。 我很确定这个错误是因为 grunt shell 正在使用 Node 的child_process.exec
命令。 这允许自定义maxBuffer
选项,您应该增加该选项。 你可以这样做:
grunt.initConfig({
shell: {
foo: {
command: 'webdriver-manager start',
options: {
stderr: false,
execOptions: {
maxBuffer: 400*1024 // or whatever other large value you want
}
}
}
}
});
关闭,因为这是一个棘手的问题。
最有用的评论
抱歉回复慢。 我很确定这个错误是因为 grunt shell 正在使用 Node 的
child_process.exec
命令。 这允许自定义maxBuffer
选项,您应该增加该选项。 你可以这样做:关闭,因为这是一个棘手的问题。