如何使用CasperJS读取文件中的实时更改

How to read the real time changes in a file with CasperJS

本文关键字:实时 文件 何使用 CasperJS 读取      更新时间:2023-09-26

我正在尝试让我的CasperJS脚本读取外部txt文件(abc.txt),并且需要在CasperJS过程中创建abc.txt。

(并且 abc.txt 必须使用"curl"为某些第三方 API 创建,所以我调用了一个子进程来更新旧的 abc.txt)。

但是,abc.txt里面的信息似乎被锁定在乞讨处,无论是更改信息还是删除整个文件都无关紧要。

有谁知道CasperJS是否可以更具交互性?或者如果我需要更改整个脚本,有什么建议吗?

(我正在尝试从网站A获取问题,然后转到网站B找到答案,然后在网站A中提交答案)

var casper = require('casper').create();
var fs = require('fs');
var data = fs.read('abc.txt');
casper.start();
casper.wait(5000, function () {
  console.log('wait 5000 for editing the file');
});
casper.then(function (){
  console.log(data);
});
casper.run();

如果数据内容.txt更改,则在脚本执行期间,这对保存该文件内容副本的变量没有任何影响。字符串值和文件内容之间永远不会有直接连接。

如果要刷新字符串内容,则需要再次读取该文件:

data = fs.read('abc.txt');

如果您需要等待文件的更改,则可以定期读取文件内容以查看它们是否同时更改。这可以通过以下方式完成casper.waitFor()

var casper = require('casper').create();
var fs = require('fs');
var data = fs.read('abc.txt');
var newData;
casper.start();
casper.waitFor(function _check(){
    newData = fs.read('abc.txt');
    return data !== newData;
});
casper.wait(1000); // additional wait to make sure that the file writing has finished
casper.then(function (){
    console.log(newData);
});
casper.run();