0

我正在使用http://theintern.io/进行浏览器功能测试。如何截取屏幕截图并将其保存到文件中?

这是我所拥有的

var fs = require('fs'); /* returns exception */
...
return this.remote
  .get(require.toUrl(url))
  .takeScreenshot(function(data) {
    fs.writeFile(filename, data.replace(/^data:image\/png;base64,/,''), 'base64', function(err) {if(err) throw err; });
})

谢谢!

4

2 回答 2

1

一个适合您的工作示例,包括使用 dojo 节点助手获取 fs:

define(
    [
        'intern!object',
        'intern/chai!assert',
        'intern/dojo/node!fs'
    ],
    function (registerSuite, assert, fs) {
        registerSuite(
            {
                name: 'basict',

                'screencap': function () {

                    var remote = this.remote;
                    var workflowUrl = "https://foo.com";

                    return remote
                        .setImplicitWaitTimeout(40000)
                        .get(workflowUrl)
                        .takeScreenshot()
                        .then(function(data) {
                                fs.writeFileSync("/Users/whatever/myfile.png", data.replace(/^data:image\/png;base64,/,''), 'base64');
                        })
                        .end()
                }
            }
        );
    }
);
于 2014-06-13T20:52:49.633 回答
0

远程接口是基于承诺的,而不是基于回调的,因此您需要在调用then后调用takeScreenshot以获取错误。你还需要使用同步版本的fs.writeFile除非你创建并返回一个promise;从回调中抛出错误fs.writeFile只会进入深渊:

return this.remote
  .get(url)
  .takeScreenshot()
  .then(function(data) {
    fs.writeFileSync(filename, data.replace(/^data:image\/png;base64,/,''), 'base64');
});
于 2014-03-22T01:55:46.907 回答