selenium屏幕截图不保存指定的目录

我有我的seleniumtesting设置截屏,但他们没有保存到我指定的目录。 任何人都可以告诉我我失踪了吗?

以下是我在testing中configuration屏幕截图的方法:

function writeScreenshot(data, name) { var fs = require('fs'); name = name || 'ss.png'; var screenshotPath = mkdirp(configuration.readSettings('screenshotDirectory') + fileNameURL + "/", function(err){}); fs.writeFileSync(screenshotPath + name, data, 'base64'); }; 

然后我截图:

 driver.takeScreenshot().then(function(data) { var screenshotFile = os + '_' + osVersion + '_' + browser + '_' + browserVersion + '.png'; writeScreenshot(data, screenshotFile); }); 

屏幕截图最终被保存在项目的根目录中,文件名以“undefined”开头。 (例如undefinedWindows_8_chrome_46.png )然而,它创build了如下所示的文件夹: var screenshotPath = mkdirp(configuration.readSettings('screenshotDirectory') + fileNameURL + "/", function(err){});

那为什么会这样呢?

mkdirp()是一个asynchronous方法。 这就是为什么你通过callback 。 你将需要改变你的代码如下所示:

 function writeScreenshot(data, name) { var fs = require('fs'); name = name || 'ss.png'; var screenshotPath = configuration.readSettings('screenshotDirectory') + fileNameURL + "/"; mkdirp(screenshotPath, function(err){ if (err) { // something else happened while creating the dir. You decide what to do return; } // Otherwise (if dir was created) fs.writeFileSync(screenshotPath + name, data, 'base64'); }); }; 

mkdirp()函数是asynchronous的 – 它创build一个目录并不会返回任何内容 – 这就是为什么你在文件名中undefined这个mkdirp()

将该文件保存在callback中

 var screenshotPath = configuration.readSettings('screenshotDirectory') + fileNameURL + "/"; mkdirp(screenshotPath, function (err) { if (!err) { fs.writeFileSync(screenshotPath + name, data, 'base64'); } else { // handle error } }); 

或者, 同步创build目录并以此方式写入:

 var screenshotPath = configuration.readSettings('screenshotDirectory') + fileNameURL + "/"; if (mkdirp.sync(screenshotPath)) { fs.writeFileSync(screenshotPath + name, data, 'base64'); }