如何在 PhantomJS/CasperJS 的 windows 上使用子进程模块
How to use child process module on windows from PhantomJS/CasperJS
我正在使用 CasperJS 来测试我的 webApp,问题是我需要访问数据库来自动化测试中的一些必要输入。
我正在寻找关于如何从 casperJS js 脚本中的数据库中检索此数据的替代方法,最后我决定使用 phantomJS child process module to call a groovy script to connect a DB and make a select and print the result to stdout to get it from CasperJS. However from the sample of the phantomJS can not realize how to do it, based on the sample I made some attempts with spawn
和 execFile
,但没有成功。即我尝试:
var process = require("child_process")
var spawn = process.spawn
var execFile = process.execFile
var child = spawn("groovy", ["script.groovy"])
child.stdout.on("data", function (data) {
console.log("spawnSTDOUT:", JSON.stringify(data))
})
child.stderr.on("data", function (data) {
console.log("spawnSTDERR:", JSON.stringify(data))
})
child.on("exit", function (code) {
console.log("spawnEXIT:", code)
})
这不起作用,也不会产生任何输出。我也尝试直接直接执行 dir
命令,也没有任何反应。
我也尝试使用 linux 但它也不起作用,我也尝试创建一个简单的 echo .sh
什么都没有...,但是在 linux 我尝试时to 运行 ls
命令这次它按预期工作。
经过一些尝试,我找到了一种方法。
似乎在 windows 中唯一的方法是将 cmd.exe
作为命令传递,将 groovy script.groovy
作为参数传递。
所以我用
var child = spawn("cmd.exe", ["/k","groovy script.groovy"])
而不是:
var child = spawn("groovy", ["script.groovy"])
这种方式在 windows 上正常工作。
我还找到了在 linux 上 运行 一个 shell 脚本的方法,它执行类似于 windows 解决方案的 groovy.It,而不是调用 .sh
我必须使用 sh
命令:
var child = spawn("sh", ["script.sh"])
并且script.sh执行groovy脚本:
#!/bin/bash
groovy script.groovy
我正在使用 CasperJS 来测试我的 webApp,问题是我需要访问数据库来自动化测试中的一些必要输入。
我正在寻找关于如何从 casperJS js 脚本中的数据库中检索此数据的替代方法,最后我决定使用 phantomJS child process module to call a groovy script to connect a DB and make a select and print the result to stdout to get it from CasperJS. However from the sample of the phantomJS can not realize how to do it, based on the sample I made some attempts with spawn
和 execFile
,但没有成功。即我尝试:
var process = require("child_process")
var spawn = process.spawn
var execFile = process.execFile
var child = spawn("groovy", ["script.groovy"])
child.stdout.on("data", function (data) {
console.log("spawnSTDOUT:", JSON.stringify(data))
})
child.stderr.on("data", function (data) {
console.log("spawnSTDERR:", JSON.stringify(data))
})
child.on("exit", function (code) {
console.log("spawnEXIT:", code)
})
这不起作用,也不会产生任何输出。我也尝试直接直接执行 dir
命令,也没有任何反应。
我也尝试使用 linux 但它也不起作用,我也尝试创建一个简单的 echo .sh
什么都没有...,但是在 linux 我尝试时to 运行 ls
命令这次它按预期工作。
经过一些尝试,我找到了一种方法。
似乎在 windows 中唯一的方法是将 cmd.exe
作为命令传递,将 groovy script.groovy
作为参数传递。
所以我用
var child = spawn("cmd.exe", ["/k","groovy script.groovy"])
而不是:
var child = spawn("groovy", ["script.groovy"])
这种方式在 windows 上正常工作。
我还找到了在 linux 上 运行 一个 shell 脚本的方法,它执行类似于 windows 解决方案的 groovy.It,而不是调用 .sh
我必须使用 sh
命令:
var child = spawn("sh", ["script.sh"])
并且script.sh执行groovy脚本:
#!/bin/bash
groovy script.groovy