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

Javascript Selenium save screenshot in a different directory

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

您可以在 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

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

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

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