如何在CasperJS / PhantomJS脚本中与用户进行交互?

时间:2013-07-07 21:11:25

标签: phantomjs casperjs

想象一下像

这样的剧本
system = require "system"

system.stdout.write "What's your name? "
name = system.stdin.readLine()
system.stdout.writeLine "Hello, #{name}" 

通过

运行
casperjs name.coffee

我希望能够在用于运行脚本的终端中与用户进行交互,但是我陷入了readLine()调用。

2 个答案:

答案 0 :(得分:2)

正如GarethOwen指出的那样,确实是可能的。 这是Unix命令cat的一个非常基本的CasperJS实现:

var system = require('system'),
    casper = require('casper').create();
while (!system.stdin.atEnd()) {
    var line = system.stdin.readLine();
    casper.log(line);
}
casper.exit();

请注意,此模块主要使用C ++实现: https://github.com/ariya/phantomjs/blob/master/src/system.h

stdin / stdout / stderr是PhantomJs类File的实例: https://github.com/ariya/phantomjs/blob/master/src/filesystem.h

答案 1 :(得分:1)

根据文档,phantomJS可以与标准输入进行通信。见这个例子:

https://github.com/ariya/phantomjs/blob/master/examples/stdin-stdout-stderr.js

有关进程间通信的文档在这里:

https://github.com/ariya/phantomjs/wiki/Inter-Process-Communication

但我自己从未尝试过。