如何动态地将外部输入注入SlimerJS脚本?

时间:2014-11-18 23:02:01

标签: javascript casperjs slimerjs

我需要SlimerJS的一些帮助。基本上我的程序需要定期从stdin获取输入来完成下一个任务。

如果从外部输入读取,以下代码适用于PhantomJS + CasperJS,但在SlimerJS + CasperJS中无法执行相同操作。

some code ...

var nextLink = system.stdin.readLine();

some code ...

有关如何解决此问题的任何想法?

1 个答案:

答案 0 :(得分:0)

feature request on GitHub documentation中缺少stdin属性,这显然不受支持。

主要有两种可行的解决方法。这两个都要求您使用您选择的语言编写第二个程序(可以是PhantomJS脚本)。

  1. 当您在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);
    
  2. 当作为CasperJS脚本运行时,可以使用webserver module向SlimerJS发送消息。第二个程序需要发送实际请求。