ich unten laufen müssen casperjs Skript:Wie ein casperjs Skript von Java
var casper = require('casper').create({
verbose: true,
logLevel: 'debug',//needed for debugging
pageSettings: {
webSecurityEnabled: false,
}
});
casper.start('http://toolsqa.com/automation-practice-form/',function() {
var path = 'C:/WINDOWS/TEMP';
this.download(casper.cli.get("url"),path + "/test.xls");
});
casper.run(function() {
this.echo('Done.').exit();
});
Das Skript ausgeführt wird, wenn durch CLI ausgeführt und lädt die Datei in Temp-Ordner. Ich bin das Bestehen der URL durch CLI und Befehl, um das Skript auszuführen, wie unten:
--C:\js examples>casperjs testfile path --url="url of file to be downloaded"
--C:\js examples>casperjs CaspetTest.js --url="http://20tvni1sjxyh352kld2lslvc.wpengine.netdna-cdn.com/wp-content/uploads/2016/09/Test-File-to-Download.xlsx"
Jetzt habe ich zwei Aufgaben:
dieses Skript von Java auszuführen: die i zu tun versucht, mit unter Befehl:
Prozess Prozess = Runtime.getRuntime(). exec ("C:/Programme (x86)/PhantomJS/phantomjs-2.1.1-windows/bin/phantomjs download.js");
Der Befehl wird ausgeführt, aber es wird keine Datei heruntergeladen. Was ist die korrekte Art dieses Skript von Java auszuführen?
- Die URL als Argument übergeben, wenn in Java ausgeführt wird, etwas, was ich über CLI mache. Wie können wir das machen?
Edit: Ich habe versucht, Script-Engine eval-Funktion:
ScriptEngineManager manager = new ScriptEngineManager();
ScriptEngine engine = manager.getEngineByName("JavaScript");
engine.eval(new java.io.FileReader(System.getProperty("user.dir")+"/resources/CasperTest.js"));
Aber in diesem Fall i unten Ausnahme erhalten:
javax.script.ScriptException: ReferenceError: "require" is not defined in <eval> at line number 1
at jdk.nashorn.api.scripting.NashornScriptEngine.throwAsScriptException(NashornScriptEngine.java:455)
at jdk.nashorn.api.scripting.NashornScriptEngine.evalImpl(NashornScriptEngine.java:439)
at jdk.nashorn.api.scripting.NashornScriptEngine.evalImpl(NashornScriptEngine.java:401)
at jdk.nashorn.api.scripting.NashornScriptEngine.evalImpl(NashornScriptEngine.java:397)
at jdk.nashorn.api.scripting.NashornScriptEngine.eval(NashornScriptEngine.java:147)
at javax.script.AbstractScriptEngine.eval(AbstractScriptEngine.java:249)
at loginpage.main(loginpage.java:91)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:497)
at com.intellij.rt.execution.application.AppMain.main(AppMain.java:144)
Caused by: <eval>:1 ReferenceError: "require" is not defined
at jdk.nashorn.internal.runtime.ECMAErrors.error(ECMAErrors.java:57)
at jdk.nashorn.internal.runtime.ECMAErrors.referenceError(ECMAErrors.java:319)
at jdk.nashorn.internal.runtime.ECMAErrors.referenceError(ECMAErrors.java:291)
at jdk.nashorn.internal.objects.Global.__noSuchProperty__(Global.java:914)
at jdk.nashorn.internal.scripts.Script$\^eval\_.:program(<eval>:1)
at jdk.nashorn.internal.runtime.ScriptFunctionData.invoke(ScriptFunctionData.java:636)
at jdk.nashorn.internal.runtime.ScriptFunction.invoke(ScriptFunction.java:229)
at jdk.nashorn.internal.runtime.ScriptRuntime.apply(ScriptRuntime.java:387)
at jdk.nashorn.api.scripting.NashornScriptEngine.evalImpl(NashornScriptEngine.java:437)
... 10 more
[INFO - 2017-05-12T07:27:05.869Z] ShutdownReqHand - _handle - About to shutdown
mit Klasse Script-Engine nicht gearbeitet hat: ws. Ich erhalte "ScriptException: ReferenceError:" require "ist nicht definiert", wie in der Frage –
erwähnt, die Sie wahrscheinlich zuerst laden müssen. – ipper
werfen Sie einen Blick auf http://stackoverflow.com/questions/32607089/how-should-irun-nodejs-from-a-java-application#32746674 – ipper