2011-10-31 18 views
0

我試圖使用HTMLUnit登錄到一個站點,但是每當我提交我的登錄詳細信息時,我都會遇到大量錯誤。我把代碼分解成小塊,所以我可以看到它是在點擊提交按鈕之後,但在發生其他事情之前;它需要一段時間,因爲它是一個相當緩慢的網站。因爲它發生在登錄後,所以我不能告訴你它是什麼意思。我可以說,一個成功的登錄有幾個重定向,並且因爲它給了我一個頁面沒有找到錯誤,我假設它是導致麻煩的重定向之一。我以前在Chrome中遇到過重定向問題,雖然不在這個特定的頁面上,現在Chrome和IE8都爲我加載了。Java中的HtmlUnit在瀏覽器工作正常時返回錯誤

節約了您的完整的堆棧跟蹤,這裏似乎是最重要的東西:

SEVERE: Error loading JavaScript from [http://servicedeskmt.det.nsw.edu.au:8090/kinetic/displayPage.jsp/../resources/js/jquery/jquery-1.3.2.js]. 
com.gargoylesoftware.htmlunit.FailingHttpStatusCodeException: 404 /kinetic/resources/js/jquery/jquery-1.3.2.js for http://servicedeskmt.det.nsw.edu.au:8090/kinetic/resources/js/jquery/jquery-1.3.2.js 
at com.gargoylesoftware.htmlunit.WebClient.throwFailingHttpStatusCodeExceptionIfNecessary(WebClient.java:535) 
INFO: statusCode=[404] contentType=[text/html] 
Oct 31, 2011 2:31:29 PM com.gargoylesoftware.htmlunit.WebClient printContentIfNecessary 
INFO: <html> 
<head> 
<title>Page cannot be found</title> 
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> 


</head> 

<body bgcolor="#FFFFFF" text="#000000"> 
<div align="center"> 
    <p>&nbsp;</p> 
    <p>&nbsp;</p> 
    <p><b><font face="Verdana, Arial, Helvetica, sans-serif" size="2">There was 
    an error on the page you were attempting to reach or the page could not be 
    found.</font></b> <br> 
    </p> 
    <p><br> 
    <br> 
    <a href="http://www.kineticdata.com"><img src="resources/poweredByKS.gif" width="131" height="45" border="0"></a> 
    </p> 
    </div> 
</body> 
</html> 

任何意見將不勝感激。 謝謝。

編輯:添加一些更詳細的信息 loginButton.click(),是否將結果設置爲等於新頁面時發生錯誤。一條只是loginButton.click()的行會導致很長的停頓(就像我說的,頁面需要一段時間才能加載),然後拋出錯誤。如果我捕捉到異常,然後嘗試加載登錄版本的頁面,則會發生同樣的情況,這會告訴我,我的登錄嘗試成功,但加載已登錄的頁面會導致問題。 將憑據存儲在DefaultCredentialsProvider中,然後直接進入登錄頁面,會出現相同的錯誤。我想我可以放心地說這是頁面,而不是登錄。

加載頁面,並在運行javascript或單擊按鈕的同一語句中具有相同的效果。我希望頁面的其他部分沒有正確加載,但我仍然可以燒掉我想要的那一點,但沒有運氣。

+0

錯誤404意味着資源(網頁和腳本)沒有被發現。嘗試確保HtmlUnit注意到8090端口號。你的細節太少,很難知道什麼是錯的。但是從錯誤中,它表明嘗試以某種方式連接到您的網頁時出現問題。 – thotheolh

+0

有沒有什麼理由HtmlUnit會給404錯誤,當IE和Chrome罰款?我如何確保HtmlUnit通知8090?我真的不知道你的意思。如果您需要任何額外的信息,我會給它,但顯然,我無法給出我登錄的頁面的任何詳細信息。感謝您的迴應。 – user1021379

+0

@ user1021379你有沒有得到這個工作? – Kris

回答

2

使用

webClient.setThrowExceptionOnFailingStatusCode(false); 
+0

+1謝謝,這對我有用。 – ashes999

4

我遇到過類似的問題,並得到它的工作使用下面的代碼:

webClient.setThrowExceptionOnFailingStatusCode(false); 
webClient.setThrowExceptionOnScriptError(false); 
相關問題