Javascript 如何从CasperJS调用python脚本
我试图从CasperJS中调用一个python脚本,并获取python的输出Javascript 如何从CasperJS调用python脚本,javascript,python,phantomjs,casperjs,Javascript,Python,Phantomjs,Casperjs,我试图从CasperJS中调用一个python脚本,并获取python的输出 casp = require('casper').create({ verbose: true, logLevel: 'debug' }); casp.start().then(function() { var cp = require('child_process'); cp.execFile('/usr/bin/python','test.py', {},function(_,stdo
casp = require('casper').create({
verbose: true,
logLevel: 'debug'
});
casp.start().then(function() {
var cp = require('child_process');
cp.execFile('/usr/bin/python','test.py', {},function(_,stdout,stderr){
console.log(stdout);
console.log(stderr);
});
});
casp.run();
py只是print“hello world”
atm进行测试,但是当我运行这个脚本时,它只是在不运行python的情况下退出
如果我将test.py arg替换为--version,例如
cp.exefile('/usr/bin/python','--version',{},函数(u,stdout,stderr){
然后我正确地获得了版本信息。我认为这一定是execFile中参数传递方式的问题,但不确定我应该做什么。问题是您过早退出。一个空的
casper.run()
意味着它将在所有casper
步骤执行后立即退出。子进程模块不是CasperJS模块(由PhantomJS提供),因此它无法知道它正在执行
你可以简单地使用
casp.run(函数(){});
但是你可能需要终止CasperJS进程
更好的方法是在执行完成时设置一个变量,然后才继续:
casp.start().then(function()){
var finished=false;
var cp=需要(“子流程”);
cp.execFile('/usr/bin/python','test.py',{},函数(_,stdout,stderr){
控制台日志(stdout);
控制台日志(stderr);
完成=正确;
});
this.waitFor(函数检查(){
返回完成;
},函数then(){
//你可以空着
});
}).run();
如果要将多个参数传递给外部程序,应使用数组作为第二个参数是否在casperjs.cmd或其他地方更新路径?否,尚未对casperjs进行任何更改,请重新下载