我正在使用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; });
})
谢谢!
答案 0 :(得分: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()
}
}
);
}
);
答案 1 :(得分:0)
远程接口是基于承诺的,而不是基于回调的,因此您需要在调用then
后调用takeScreenshot
以获取错误。您还需要使用fs.writeFile
的同步版本,除非您创建并返回一个承诺;从fs.writeFile
的回调中抛出错误只会进入深渊:
return this.remote
.get(url)
.takeScreenshot()
.then(function(data) {
fs.writeFileSync(filename, data.replace(/^data:image\/png;base64,/,''), 'base64');
});