如何在PhantomJS / CasperJS

时间:2015-07-03 10:57:51

标签: javascript windows groovy phantomjs casperjs

我使用CasperJS测试我的webApp,问题是我需要访问数据库以自动化测试中的一些必要输入。

我正在寻找如何从casperJS js脚本中的数据库中检索此数据的替代方案,最后我决定使用phantomJS child process module调用groovy脚本来连接数据库并进行选择并将结果打印到stdout以从CasperJS获取它。然而,从幻像的样本中无法实现如何做到这一点,根据我使用spawnexecFile进行了一些尝试而没有运气的样本。我试试:

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中这次它按预期工作。

1 个答案:

答案 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"])