[英]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.