我需要一些有关 SlimerJS 的帮助。基本上我的程序需要定期从标准输入获取输入来执行下一个任务。
在从外部输入读取的情况下,以下代码在 PhantomJS+CasperJS 中运行良好,但在 SlimerJS+CasperJS 中无法做到这一点。
some code ...
var nextLink = system.stdin.readLine();
some code ...
关于如何解决这个问题的任何想法?
我需要一些有关 SlimerJS 的帮助。基本上我的程序需要定期从标准输入获取输入来执行下一个任务。
在从外部输入读取的情况下,以下代码在 PhantomJS+CasperJS 中运行良好,但在 SlimerJS+CasperJS 中无法做到这一点。
some code ...
var nextLink = system.stdin.readLine();
some code ...
关于如何解决这个问题的任何想法?
GitHub 上的功能请求和文档中缺少stdin
属性显然不支持这一点。
主要有两种可能的解决方法。两者都要求您使用您选择的语言编写第二个程序(可以是 PhantomJS 脚本)。
当您在 CasperJS 脚本中需要获取输入时,您会多次读取预定义文件,直到其中包含某些内容。因此,当您看到 CasperJS 在这一点上时,您执行第二个程序。该程序可能是一个简单的命令,例如
echo my text > predefinedFile.txt
或更精细的东西。CasperJS 中的轮询函数是这样的:
function poll(){
var content = fs.read(predefinedFile).trim();
if (!content) {
this.wait(1000, poll);
} else {
// do something sensible
}
}
//....
casper.then(poll);
当 SlimerJS 作为 CasperJS 脚本运行时,您可以使用一个webserver 模块向它发送消息。第二个程序需要发送实际请求。