Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何从PhantomJS/CasperJS在windows上使用子进程模块_Javascript_Windows_Groovy_Phantomjs_Casperjs - Fatal编程技术网

Javascript 如何从PhantomJS/CasperJS在windows上使用子进程模块

Javascript 如何从PhantomJS/CasperJS在windows上使用子进程模块,javascript,windows,groovy,phantomjs,casperjs,Javascript,Windows,Groovy,Phantomjs,Casperjs,我使用CasperJS来测试我的webApp,问题是我需要访问一个数据库来自动化测试中一些必要的输入 我正在寻找一种替代方法,来从casperJS脚本中的数据库中检索这些数据。最后,我决定调用一个groovy脚本来连接数据库,并进行选择,然后将结果打印到stdout以从casperJS获取。然而,从phantomJS的示例来看,我无法实现如何做到这一点,基于该示例,我尝试了使用和execFile,但运气不佳。i、 e我尝试: var process = require("child_proces

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

我正在寻找一种替代方法,来从casperJS脚本中的数据库中检索这些数据。最后,我决定调用一个groovy脚本来连接数据库,并进行选择,然后将结果打印到stdout以从casperJS获取。然而,从phantomJS的示例来看,我无法实现如何做到这一点,基于该示例,我尝试了使用和
execFile
,但运气不佳。i、 e我尝试:

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
和nothing…,但是在linux中,当我尝试运行
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脚本的方法,该脚本执行groovy。它类似于windows解决方案,而不是调用
。sh
我必须使用
sh
命令:

var child = spawn("sh", ["script.sh"])
并且script.sh执行groovy脚本:

#!/bin/bash
groovy script.groovy

我不能让它在使用最新phantomJS的Windows10上工作;我试图运行
spawn(“cmd.exe”,[“/k”])
,它抛出了错误,但在错误消息中没有任何有用的内容。有什么想法吗?@Donbox在
/k
之后,您必须传递命令才能执行,
/k
本身什么都不做。例如,您可以尝试使用
spawn(“cmd.exe”、[“/k”、“dir”])
列出当前目录中的文件。此外,如果您运行(键
Win
+
R
)并放置
cmd/k
,只需打开一个新的cmd,而如果放置
cmd/k dir
则打开一个新的cmd,并执行显示结果文件列表的
dir
。希望这能澄清你的问题。
:)
问题是
spawn(“cmd.exe,[“/k”])
抛出错误Phantom@DonBox也许获得帮助的更好方法是发布一个新问题,说明您正在尝试什么,并提供有关错误的更多信息
:)
(此外,正如我已经说过的,不带参数调用cmd passing
/k
根本没有意义)。无论如何,可能是您的
cmd.exe
有问题吗?尝试运行
cmd
,然后执行
cmd.exe
,看看会发生什么(这是多余的,似乎没有意义打开一个cmd来执行cmd…但谁知道呢,它能给出您的模式信息呢)。var child=spawn(“powershell”、[“ls”、“]”)