2016年3月8日 星期二

使用 Selenium 與 HtmlUnit 時,忽略 script error 和 http statuscode 的方法

在 Java 上要呼叫 Selenium,並且指定使用 HtmlUnit 時,在某些網站可能會遇到兩種問題:

  1. 網站的 JavaScript 在解析過程有錯誤。
  2. 網頁本身失連、或者網頁內的任一連結(包含 JavaScript 檔、CSS 檔、圖片等外部連結)失連。
 在上面這兩種問題之下,HtmlUnit 預設都會直接丟 Exception,導致沒有辦法繼續運作。
如果想要讓 HtmlUnit 略過這些錯誤時,可以參考 [1] 的方法
對 HtmlUnit 設定忽略即可。

WebClient webClient = new WebClient(BrowserVersion.FIREFOX_38) :
// Ignore the HTTP status code and script error.
webClient.getOptions().setJavaScriptEnabled(true);
webClient.getOptions().setThrowExceptionOnFailingStatusCode(false);
webClient.getOptions().setThrowExceptionOnScriptError(false);
// Reduce the error logs showed by HtmlUnit.
webClient.getOptions().setPrintContentOnFailingStatusCode(false);


參考資料:
  1. Is it possible to ignore JavaScript exceptions when working with WebDriver (HtmlUnit, Ruby bindings)
  2. Selenium WebDriver

沒有留言: