2014-05-14 46 views
-1

我的問題在一個主題。 /我使用JDK + NetBeans /。所以,我從http://sourceforge.net/projects/htmlunit/files/htmlunit/下載HtmlUnit在2.9-2.14之間的任何版本,沒有人不能使用這個功能。富勒例如我的代碼(JAVA):選項「setThrowExceptionOnScriptError(false)」不工作在HtmlUnit!爲什麼? (Java)

..... 
import com.gargoylesoftware.htmlunit.AlertHandler; 
import com.gargoylesoftware.htmlunit.BrowserVersion; 
import com.gargoylesoftware.htmlunit.Page; 
import com.gargoylesoftware.htmlunit.ScriptPreProcessor; 
import com.gargoylesoftware.htmlunit.ScriptResult; 
import com.gargoylesoftware.htmlunit.WebClient; 
import com.gargoylesoftware.htmlunit.html.HtmlElement; 
import com.gargoylesoftware.htmlunit.html.HtmlPage; 
import com.gargoylesoftware.htmlunit.javascript.JavaScriptEngine; 
..... 
..... 

public static void main(String[] args) throws Exception { 
    WebClient webClient = new WebClient(BrowserVersion.FIREFOX_24); 

    webClient.getOptions().setThrowExceptionOnFailingStatusCode(false); 
    webClient.getOptions().setThrowExceptionOnScriptError(false); 
    webClient.getOptions().setPrintContentOnFailingStatusCode(false); 

    HtmlPage page = webClient.getPage("file:///D:/WebRoot/tmp2/test.html"); 

    webClient.closeAllWindows(); 


} 

和的test.html:

<html> 
<head> 
</head> 
<body> 
    <script> 
    VKVolumeDown(); 
    alert("Hello"); 
    </script> 
</body> 
</html> 

...我得到腳本異常:

信息:夾縫腳本異常 ==== === EXCEPTION START ======== EcmaError:lineNumber = [82] column = [0] lineSource = [] name = [ReferenceError] sourceName = [script in file:/ D:/ WebRoot/tmp2 /從(7,11)到(24,12)的test.html] message = [ReferenceError:「VKVolumeDown」未定義。 (腳本文件:/ D:/WebRoot/tmp2/test.html,從(7,11)到(24,12)#82)] com.gargoylesoftware.htmlunit.ScriptException:ReferenceError:「VKVolumeDown」未定義。 (腳本在文件中:/ D:/WebRoot/tmp2/test.html從(7,11)到(24,12)#82) at com.gargoylesoftware.htmlunit.javascript.JavaScriptEngine $ HtmlUnitContextAction.run(JavaScriptEngine.java :689) 在net.sourceforge.htmlunit.corejs.javascript.Context.call(Context.java:620)

.....

和 「警報(」 你好 「);」如果我使用「webClient.getOptions()。setThrowExceptionOnScriptError(false);」選項???並且函數調用「VKVolumeDown()」的異常必須被忽略!?它讓我很困惑。對我來說這是非常重要的,謝謝

+0

我不相信。沒有人知道如何解決這個問題? – Pryanik

回答

0

這裏有一個JavaScript異常,這意味着HTML代碼(Rhino)不喜歡這個JS代碼,你應該先理解,一個例外不會修正JS代碼中的錯誤(如果有的話),所以如果這個問題不允許你執行一個操作,隱藏它或者顯示它,仍然不允許你執行這個操作。

說了算那setThrowExceptionOnScriptError方法確定您是否想要getPage轉發聯合國在您的應用程序的JS代碼中檢測到可避免的異常。換句話說,如果你想拋出異常,那麼你很可能需要在你的應用程序中使用try-catch-finally塊來包裝getPage方法。

解決方案:修復您的JS代碼。

2

感謝您的快速反應,莫斯迪Mostacho。據我所知:JavaScript代碼中的構造模擬「try {} catch(err){}」不是在HtmlUnit工具中發佈的。我的GENERAL任務是遍歷所有JavaScript代碼(從開始到結束)並執行所有構造(如果可能的話)。我看到了在try {} catch(err){}塊中封裝每個JavaScript構造的變體,但它並不那麼優雅。也許誰提出任何變種?

相關問題