Javascript 如何从PhantomJS/CasperJS在windows上使用子进程模块
我使用CasperJS来测试我的webApp,问题是我需要访问一个数据库来自动化测试中一些必要的输入 我正在寻找一种替代方法,来从casperJS脚本中的数据库中检索这些数据。最后,我决定调用一个groovy脚本来连接数据库,并进行选择,然后将结果打印到stdout以从casperJS获取。然而,从phantomJS的示例来看,我无法实现如何做到这一点,基于该示例,我尝试了使用和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
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”、“]”)