2

我需要一些有关 SlimerJS 的帮助。基本上我的程序需要定期从标准输入获取输入来执行下一个任务。

在从外部输入读取的情况下,以下代码在 PhantomJS+CasperJS 中运行良好,但在 SlimerJS+CasperJS 中无法做到这一点。

some code ...

var nextLink = system.stdin.readLine();

some code ...

关于如何解决这个问题的任何想法?

4

1 回答 1

0

GitHub 上的功能请求和文档​​中缺少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. 当 SlimerJS 作为 CasperJS 脚本运行时,您可以使用一个webserver 模块向它发送消息。第二个程序需要发送实际请求。

于 2014-11-19T06:48:25.073 回答