[英]using casperjs with selenium webdriver and Java
编辑:我有下面的casperjs脚本:
var casper = require('casper').create();
casper.start('http://google.com/', function() {
print(this.getTitle());
});
casper.thenOpen('http://phantomjs.org', function() {
print(this.getTitle());
});
casper.run();
我试图在Java中使用以下命令运行此脚本:
Process process = Runtime.getRuntime().exec("C:/Program Files (x86)/PhantomJS/phantomjs-2.1.1-windows/bin/phantomjs download.js");
代码可以编译并运行,但是没有输出。
我尝试使用脚本引擎eval函数:
ScriptEngineManager manager = new ScriptEngineManager();
ScriptEngine engine = manager.getEngineByName("JavaScript");
engine.eval(new java.io.FileReader(System.getProperty("user.dir")+"/resources/CasperTest.js"));
但是在这种情况下,我得到以下异常:
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
如何执行casperjs脚本?
您的问题没有道理...
CasperJS是一个JavaScript库,允许您自动执行PhantomJS (无头WebKit)或SlimerJS (图形Gecko)。 它并非旨在通过Selenium WebDriver控制Chrome或Firefox。
如果要通过JavaScript使用Selenium WebDriver,则应依赖Nightwatch.js之类的框架,该框架可以控制实际的 Web浏览器。
Casper或Nightwatch脚本与Java后端完全独立。 您可以在项目中创建一个单独的文件夹,然后在其中放置JS脚本。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.