Javascript Selenium将截图保存在不同的目录中



是否有办法将保存的屏幕截图存储在特定目录而不是默认的根文件夹中?由于

您可以指定在fs.writeFileSync()中保存文件的位置。

例如,您当前所做的相当于:

driver.takeScreenshot().then(function(data) {
    fs.writeFileSync('./Customer_Card.png', data, 'base64')
})

如果你想把你的文件保存在其他地方,你只需要包括路径。

保存到子目录

const path = require('path');
driver.takeScreenshot().then(function(data) {
    fs.writeFileSync(path.joing(__dirname, 'innerDir', 'Customer_Card.png'), data, 'base64')
})

上面的代码会将文件保存到innderDir目录下的Customer_Card.png(该目录将与此代码所在的文件位于同一位置)。

例如,我有以下项目结构:
+ MyProjectDir
+---+ savePhoto.js
+---+ innerDir
运行以上代码后,我将得到:
+ MyProjectDir
+---+ savePhoto.js
+---+ innerDir
+---+---+Customer_Card.png

__dirname是一个环境变量,它告诉您包含当前执行文件的目录的绝对路径。

或者,您可以使用如下的相对路径来获得相同的效果:
driver.takeScreenshot().then(function(data) {
    fs.writeFileSync('./innerDir/Customer_Card.png', data, 'base64')
})

保存在父目录

最后,如果你想要进入一个目录而不是一个目录,你可以这样做:

driver.takeScreenshot().then(function(data) {
    fs.writeFileSync('../Customer_Card.png', data, 'base64')
})

再次澄清,如果这是您的项目结构:

+ MyProjectDir
+---+ innerDir
+---+---+ savePhoto.js

然后运行上面的代码(在savepphoto .js中)将产生:

+ MyProjectDir
+---+ Customer_Card.png
+---+ innerDir
+---+---+ savePhoto.js

这可以扩展,以便您可以将文件保存在./innerDir/innerDir2/Customer_Card.png../../../Customer_Card.png甚至../../innerDir/Customer_Card.png

最新更新