2015-07-03 2 views
1

Я использую CasperJS для тестирования моего webApp, дело в том, что мне нужно получить доступ к БД для автоматизации некоторых необходимых входов из моих тестов.Как использовать модуль дочернего процесса на окнах от PhantomJS/CasperJS

Я ищу альтернативы по извлечению этих данных из БД внутри сценария jsys jsys 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, и он тоже не работает. Я также пытаюсь создать простое эхо .sh и ничего ..., однако в linux, когда я пытаюсь запустить команду ls, на этот раз она работает так, как ожидалось.

ответ

2

После некоторых попыток я нашел способ сделать это.

Похоже, что в Windows единственный способ сделать это - передать cmd.exe как команду и groovy script.groovy в качестве аргумента.

Поэтому я использую

var child = spawn("cmd.exe", ["/k","groovy script.groovy"]) 

вместо:

var child = spawn("groovy", ["script.groovy"]) 

Этот способ работает правильно на окнах.

Я также нашел способ запустить сценарий оболочки на Linux, который выполняет groovy.It подобно решению окна, вместо того, чтобы вызвать .sh Я использовать sh команду:

var child = spawn("sh", ["script.sh"]) 

И сценария .sh выполняет строгий скрипт:

#!/bin/bash 
groovy script.groovy 
+0

Я не могу заставить это работать на Windows 10 с новейшим phantomJS; Я попытался запустить 'spawn (" cmd.exe ", ["/k "])' и он выдает ошибку, но ничего полезного в сообщении об ошибке. Есть предположения? –

+0

@Donbox после '/ k' вы должны передать команду для выполнения,'/k' ничего не делает. Например, вы можете попробовать с помощью 'spawn (" cmd.exe ", ["/k "," dir "])' для отображения файлов в текущем каталоге. Кроме того, вы можете попробовать, что я говорю из фантома, если вы запустите (клавиши 'Win' +' R') и поместите 'cmd/k', просто откроется новый cmd, вместо этого, если вы поместите' cmd/k dir' открывается новый cmd и выполняется команда 'dir', отображающая список файлов в качестве результата. Надеюсь, это уточнит ваш вопрос ':)' – albciff

+0

проблема 'spawn (" cmd.exe ", ["/k "])' throws error в Phantom –

Смежные вопросы