簡體   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