我使用CasperJS测试我的webApp,问题是我需要访问数据库以自动化测试中的一些必要输入。
我正在寻找如何从casperJS js脚本中的数据库中检索此数据的替代方案,最后我决定使用phantomJS child process module调用groovy脚本来连接数据库并进行选择并将结果打印到stdout以从CasperJS获取它。然而,从幻像的样本中无法实现如何做到这一点,根据我使用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
而没有...,但是当我尝试运行ls
命令时在linux中这次它按预期工作。
答案 0 :(得分:2)
经过一些尝试,我找到了一种方法。
似乎在Windows中唯一的方法是将cmd.exe
作为命令传递,将groovy script.groovy
作为参数传递。
所以我用
var child = spawn("cmd.exe", ["/k","groovy script.groovy"])
而不是:
var child = spawn("groovy", ["script.groovy"])
这种方式在Windows上正常工作。
我还找到了在linux上运行shell脚本的方法,它执行groovy.It类似于windows解决方案,而不是调用.sh
我使用{{1命令:
sh
script.sh执行groovy脚本:
var child = spawn("sh", ["script.sh"])