2014-10-01 68 views
0

我想用Java編寫應用程序,應用程序應在無頭瀏覽器中測試網站,例如PhantomJS或zombie.js。 PhantomJS腳本是用JavaScript編寫的,因此如何在Java應用程序中使用PhantomJS提供的JavaScript API,而不使用Selenium和GhostDriver?這件事與圖書館Nashorn有關嗎?如何在Java應用程序中使用PhantomJS的JavaScript API

更多細節與步驟,我需要經過:
1.創建一個HTTP請求(例如用:java.net.HttpURLConnection中),並將其發送到Web服務器
2.獲取相應的響應並保存源在HTML文件
3.打開快速模擬瀏覽器的HTML文件(沒有的HtmlUnit)
4.驗證是否有消息XXX警報打開HTML響應

不出現時,還是不任何人都知道解決方案?
PS:如果帶GhostDriver的PhantomJs支持警報處理,它會很容易,但它不會!

回答

-1

您可以使用ScriptEngine來評估Java內部的PhantomJS腳本;詳情請參閱here。例如:

ScriptEngine engine = new ScriptEngineManager().getEngineByName("nashorn"); 
engine.eval(new FileReader("script.js")); 
+0

你不能那樣做。 PhantomJS腳本不是獨立的,它們依賴於PhantomJS API,如果你這樣做,它不存在。你有另外一個建議嗎? – 2014-10-01 09:14:53

+2

您可以嘗試使用PhantomJS [Inter Process Communication](http://phantomjs.org/inter-process-communication.html)或[phantomjs/javabindings](https://github.com/KDAB/phantomjs/tree/javabindings/javabindings)。 – denim2x 2014-10-01 17:31:36

+0

某種IPC是最簡單的解決方案,是一個有效的答案。儘管javabindings看起來很有趣。你能寫出一個示例代碼(如何使用)的答案,甚至可以如何構建?您可以將其添加到現有的答案中,但也可以發佈單獨的答案。 – 2014-10-01 21:52:52

1

如果你想從Java應用程序測試在模擬瀏覽器,阻力最小的路徑是使用硒Java驅動程序,與HtmlUnit

Nashorn不會爲PhantomJS提供JavaScript API;也不會提供諸如「窗口」和「文檔」之類的瀏覽器對象。它將允許您使用您提供的任何「主機」(本機Java)對象在Java程序中運行JavaScript,並在JavaScript中創建Java對象,因此您當然可以重新實現Java中的PhantomJS API。但想必這不是你想要的。

+0

我現在正在使用HtmlUnit(沒有Selenium),但我不滿意速度,它幾乎和Firefox瀏覽器一樣慢,因爲Javascript渲染速度很慢。 – juzwani 2014-10-01 09:39:39

相關問題