2012-04-05 18 views
3

現在、HtmlUnitを試しています。私はフォームに記入して提出したいと思います。しかし、これはエラーが発生します。これは、ファイルがアクセス不能になっているため接続リセットがスローされるためです。 これはウェブサイト全体の読み込みプロセスを考える上で重要ではないので、どうすればこの問題を抑制できますか? それはプログラムには影響していないようですが、私はそれを沈黙させたいだけです。htmlunitに特定のエラーを無視するように指示する方法

Apr 05, 2012 12:25:13 PM com.gargoylesoftware.htmlunit.html.HtmlPage loadExternalJavaScriptFile 
Schwerwiegend(severe): Error loading JavaScript from [*link*]. 
java.net.SocketException: Connection reset 
    at java.net.SocketInputStream.read(Unknown Source) 
    at java.net.SocketInputStream.read(Unknown Source) 
    at org.apache.http.impl.io.AbstractSessionInputBuffer.fillBuffer(AbstractSessionInputBuffer.java:149) 
    at org.apache.http.impl.io.SocketInputBuffer.fillBuffer(SocketInputBuffer.java:110) 
    at org.apache.http.impl.io.AbstractSessionInputBuffer.readLine(AbstractSessionInputBuffer.java:264) 
    at org.apache.http.impl.conn.DefaultResponseParser.parseHead(DefaultResponseParser.java:98) 
    at org.apache.http.impl.io.AbstractMessageParser.parse(AbstractMessageParser.java:252) 
    at org.apache.http.impl.AbstractHttpClientConnection.receiveResponseHeader(AbstractHttpClientConnection.java:281) 
    at org.apache.http.impl.conn.DefaultClientConnection.receiveResponseHeader(DefaultClientConnection.java:247) 
    at org.apache.http.impl.conn.AbstractClientConnAdapter.receiveResponseHeader(AbstractClientConnAdapter.java:219) 
    at org.apache.http.protocol.HttpRequestExecutor.doReceiveResponse(HttpRequestExecutor.java:298) 
    at org.apache.http.protocol.HttpRequestExecutor.execute(HttpRequestExecutor.java:125) 
    at org.apache.http.impl.client.DefaultRequestDirector.tryExecute(DefaultRequestDirector.java:645) 
    at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:464) 
    at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:820) 
    at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:776) 
    at com.gargoylesoftware.htmlunit.HttpWebConnection.getResponse(HttpWebConnection.java:152) 
    at com.gargoylesoftware.htmlunit.WebClient.loadWebResponseFromWebConnection(WebClient.java:1439) 
    at com.gargoylesoftware.htmlunit.WebClient.loadWebResponse(WebClient.java:1358) 
    at com.gargoylesoftware.htmlunit.html.HtmlPage.loadJavaScriptFromUrl(HtmlPage.java:1008) 
    at com.gargoylesoftware.htmlunit.html.HtmlPage.loadExternalJavaScriptFile(HtmlPage.java:950) 
    at com.gargoylesoftware.htmlunit.html.HtmlScript.executeScriptIfNeeded(HtmlScript.java:349) 
    at com.gargoylesoftware.htmlunit.html.HtmlScript$1.execute(HtmlScript.java:230) 
    at com.gargoylesoftware.htmlunit.javascript.JavaScriptEngine.doProcessPostponedActions(JavaScriptEngine.java:642) 
    at com.gargoylesoftware.htmlunit.javascript.JavaScriptEngine.access$400(JavaScriptEngine.java:79) 
    at com.gargoylesoftware.htmlunit.javascript.JavaScriptEngine$HtmlUnitContextAction.run(JavaScriptEngine.java:590) 
    at net.sourceforge.htmlunit.corejs.javascript.Context.call(Context.java:537) 
    at net.sourceforge.htmlunit.corejs.javascript.ContextFactory.call(ContextFactory.java:538) 
    at com.gargoylesoftware.htmlunit.javascript.JavaScriptEngine.execute(JavaScriptEngine.java:499) 
    at com.gargoylesoftware.htmlunit.javascript.JavaScriptEngine.execute(JavaScriptEngine.java:474) 
    at com.gargoylesoftware.htmlunit.html.HtmlPage.executeJavaScriptIfPossible(HtmlPage.java:870) 
    at com.gargoylesoftware.htmlunit.html.HtmlScript.executeInlineScriptIfNeeded(HtmlScript.java:302) 
    at com.gargoylesoftware.htmlunit.html.HtmlScript.executeScriptIfNeeded(HtmlScript.java:368) 
    at com.gargoylesoftware.htmlunit.html.HtmlScript$1.execute(HtmlScript.java:230) 
    at com.gargoylesoftware.htmlunit.html.HtmlScript.onAllChildrenAddedToPage(HtmlScript.java:240) 
    at com.gargoylesoftware.htmlunit.html.HTMLParser$HtmlUnitDOMBuilder.endElement(HTMLParser.java:598) 
    at org.apache.xerces.parsers.AbstractSAXParser.endElement(Unknown Source) 
    at com.gargoylesoftware.htmlunit.html.HTMLParser$HtmlUnitDOMBuilder.endElement(HTMLParser.java:556) 
    at org.cyberneko.html.HTMLTagBalancer.callEndElement(HTMLTagBalancer.java:1142) 
    at org.cyberneko.html.HTMLTagBalancer.endElement(HTMLTagBalancer.java:1044) 
    at org.cyberneko.html.filters.DefaultFilter.endElement(DefaultFilter.java:206) 
    at org.cyberneko.html.filters.NamespaceBinder.endElement(NamespaceBinder.java:329) 
    at org.cyberneko.html.HTMLScanner$ContentScanner.scanEndElement(HTMLScanner.java:3018) 
    at org.cyberneko.html.HTMLScanner$ContentScanner.scan(HTMLScanner.java:2005) 
    at org.cyberneko.html.HTMLScanner.scanDocument(HTMLScanner.java:908) 
    at org.cyberneko.html.HTMLConfiguration.parse(HTMLConfiguration.java:499) 
    at org.cyberneko.html.HTMLConfiguration.parse(HTMLConfiguration.java:452) 
    at org.apache.xerces.parsers.XMLParser.parse(Unknown Source) 
    at com.gargoylesoftware.htmlunit.html.HTMLParser$HtmlUnitDOMBuilder.parse(HTMLParser.java:789) 
    at com.gargoylesoftware.htmlunit.html.HTMLParser.parse(HTMLParser.java:225) 
    at com.gargoylesoftware.htmlunit.html.HTMLParser.parseHtml(HTMLParser.java:179) 
    at com.gargoylesoftware.htmlunit.DefaultPageCreator.createHtmlPage(DefaultPageCreator.java:221) 
    at com.gargoylesoftware.htmlunit.DefaultPageCreator.createPage(DefaultPageCreator.java:106) 
    at com.gargoylesoftware.htmlunit.WebClient.loadWebResponseInto(WebClient.java:433) 
    at com.gargoylesoftware.htmlunit.WebClient.loadDownloadedResponses(WebClient.java:2187) 
    at com.gargoylesoftware.htmlunit.javascript.JavaScriptEngine.doProcessPostponedActions(JavaScriptEngine.java:625) 
    at com.gargoylesoftware.htmlunit.javascript.JavaScriptEngine.processPostponedActions(JavaScriptEngine.java:707) 
    at com.gargoylesoftware.htmlunit.html.HtmlElement.click(HtmlElement.java:1246) 
    at com.gargoylesoftware.htmlunit.html.HtmlElement.click(HtmlElement.java:1195) 
    at com.gargoylesoftware.htmlunit.html.HtmlElement.click(HtmlElement.java:1158) 
    at com.gargoylesoftware.htmlunit.html.HtmlImageInput.click(HtmlImageInput.java:138) 
    at com.gargoylesoftware.htmlunit.html.HtmlImageInput.click(HtmlImageInput.java:99) 
    at com.tronicguard.discovery.WebsiteManipulatorImplementation.<init>(WebsiteManipulatorImplementation.java:71) 
    at Main.main(Main.java:10) 
+0

HtmlUnitは、アプリケーションのバグが見つかりました。このファイルが利用可能な場合は、利用可能にしてください。このファイルが目的を果たしていない場合は、そのファイルへの参照を削除してください。テストのポイントは、バグを検出して修正し、無視することではありません。 –

+0

私はそれを知っていますが、現時点で私はリモートアクセスを持たない別のサイトで試しています。 – Sim

答えて

3

それは404(見つかりません)エラー状態を処理する必要があり、次の

webClient.setThrowExceptionOnFailingStatusCode(false); 

を試してみてください。

+0

まだ、同じエラーがまだスローされています – Sim

+0

私はそれが接続のリセットを考慮して、サーバーのエラーだと思います。 try catchブロックの中に入れて正常に処理してみませんか? –

+0

stacktraceが印刷された後に私のプログラムが完全に続行するので、私はそれをキャッチすることもできます – Sim

0

またHttpUnitOptions.setExceptionsThrownOnScriptError(false);

+1

[this](http://httpunit.sourceforge.net/doc/api/com/meterware/httpunit/HttpUnitOptions.html)のパッケージは不明ですが、どうすればHttpUnitOptionsクラス/インスタンスを取得できますか? – Sim

+0

これは実際にはcom.meterware.httpunit.HttpUnitOptionsからのものです。 HttpUnitOptions.setScriptingEnabled(true)を呼び出す前にhttpunit jarをダウンロードする必要があります。 – Brijesh

+0

これはどのようにHtmlUnitを参照していますか? – Yura

1

HtmlPage.loadExternalJavaScriptFile()は常にあなたのロギングの設定に応じて、このエラーをログに記録しますHttpUnitは とでJavaScriptを無効にするHttpUnitOptions.setScriptingEnabled(true);を使用することができます。ページのロギングを無効にするか、しきい値を変更する必要があります。あなたがlog4jのを使用している場合

はたとえば、あなたがしかしHTMLページのにログインしたすべてのエラーのログを非表示になりますプロパティlog4j.logger.com.gargoylesoftware.htmlunit.html.HtmlPage = FATAL

これを設定することができます。

2

jkd1.7.0_3でコンパイルした後、Jenkinsのテストハーネスを実行しているときに同様のエラーが発生しました。 JDK1.6.0_30に戻って問題を解決しました。

0

インスタンスTHE htmlUnitドライバは、次のように

ドライバ=新しいSilentHtmlUnitDriver(能力)。

(同じクラスにドライバをインスタンス化)NESTEDクラスとして次の行を追加します。コードは非常に適切でない場合

  protected class SilentHtmlUnitDriver extends HtmlUnitDriver { 
       SilentHtmlUnitDriver() { 
        super(); 
        this.getWebClient().setCssErrorHandler(new SilentCssErrorHandler()); 
        this.getWebClient().getOptions().setThrowExceptionOnFailingStatusCode(false); 
        this.getWebClient().getOptions().setThrowExceptionOnScriptError(false); 

      } 

      SilentHtmlUnitDriver(DesiredCapabilities capabilities) { 
       super(capabilities); 
       this.getWebClient().setCssErrorHandler(new SilentCssErrorHandler()); 
      } 
} 
1

は申し訳ありません(HtmlUnitに迷惑な警告を無効にするには、これを試してみてください - I " )Clojureのから」それを翻訳し、私はあなたが、少なくとも、主要なアイデアを得る願っています:

Import java.util.logging.Logger; 
Import java.util.logging.Level; 

Logger.getLogger("com.gargoylesoftware").setLevel(Level.OFF); 

詳細はTurning HtmlUnit Warnings offを見てみましょう。そこにはもっと複雑な解決策がありますが、この単純なものが私のために働いていました。この

1

用途:JavaScriptファイルは使用できません。

LogFactory.getFactory().setAttribute("org.apache.commons.logging.Log", "org.apache.commons.logging.impl.NoOpLog"); 
     java.util.logging.Logger.getLogger("com.gargoylesoftware.htmlunit").setLevel(Level.OFF); 
     java.util.logging.Logger.getLogger("org.apache.commons.httpclient").setLevel(Level.OFF); 
関連する問題