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

fs を取得するための dojo ノード ヘルパーの使用を含む、実際の例:

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

リモート インターフェースはコールバック ベースではなく promise ベースであるため、エラーを取得するthenには の呼び出しの後に呼び出す必要takeScreenshotがあります。fs.writeFilepromise を作成して返さない限り、同期バージョンを使用する必要もあります。のコールバックからエラーをスローする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 に答える