使用终端输出的writeFile函数



运行时,以下代码可在独立项目中工作。然而,如果我想用终端中的输出替换变量"sample_text",而不是在代码中已经有一个数组,我该如何修改代码?例如,假设在另一个文件中运行node时,输出看起来像"student:danny,age:28,weight:148"。

// writefile.js
const fs = require('fs');
let sample_text = 'student: danny, age: 28, weight: 148'
// write to a new file named sample.json
fs.writeFile('sample.json', sample_text, (err) => {  
if (err) throw err;
console.log('Text saved!');
});

类似这样的东西:

const readline = require('readline');
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout
});
rl.question('Enter data', (data) => {
fs.writeFile('2pac.txt', data, (err) => {  
if (err) throw err;
console.log('Text saved!');
});
rl.close();
});

您需要做两件事:

  1. 将selenium网络驱动程序的输出管道传输到节点程序
  2. 侦听process.stdin上的"data"事件以捕获selenium的输出

您的节点程序应该如下所示:

const fs = require('fs');
let data = "";
process.stdin.setEncoding('utf-8');
process.stdin.on('data', chunk => {
// I'm just collecting the chunks into 'data',
//   but you might choose to do some processing here
data += chunk;
});
process.stdin.on('end', () => {
// do some more processing here, if needed
fs.writeFileSync('output.json', data);
});

您应该通过从终端运行以下命令来启动selenium和该节点程序:selenium-webdriver | node index.js

最新更新