繁体   English   中英

将casperjs与硒webdriver和Java一起使用

[英]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脚本?

您的问题没有道理...

  1. CasperJS是一个JavaScript库,允许您自动执行PhantomJS (无头WebKit)或SlimerJS (图形Gecko)。 它并非旨在通过Selenium WebDriver控制Chrome或Firefox。

  2. 如果要通过JavaScript使用Selenium WebDriver,则应依赖Nightwatch.js之类的框架,该框架可以控制实际的 Web浏览器。

  3. CasperNightwatch脚本与Java后端完全独立。 您可以在项目中创建一个单独的文件夹,然后在其中放置JS脚本。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM