Protractor: webdriver-manager stdout maxBuffer 超过

创建于 2014-05-07  ·  3评论  ·  资料来源: angular/protractor

大家好

我在单个 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 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
                }
            }
        }
    }
});

关闭,因为这是一个棘手的问题。

所有3条评论

抱歉回复慢。 我觉得这是 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
                }
            }
        }
    }
});

关闭,因为这是一个棘手的问题。

此页面是否有帮助?
0 / 5 - 0 等级