2011-12-21 17 views
2

HTMLUnitDriver APIのSelenium 2.0でHTTPS URLにアクセスしようとしましたが、「この接続は信頼できません」ウィンドウで何とか実行が停止し、戻りません。HTMLUnitDriverが信頼できない証明書の検証(Selenium 2.0)をバイパスする

WebDriver driver = new HtmlUnitDriver() { 
    protected WebClient modifyWebClient(final WebClient client) { 
     try { 
      client.setUseInsecureSSL(true); 
     } catch (GeneralSecurityException e) { 
      e.printStackTrace(); 
     } 
     return client; 
    } 
}; 
driver.get("https://172.25.194.91:8443/meta/homeScreen.do"); 

私は非常にそれが仕事を得るために、任意の助けをいただければと思います。以下は、私はthis threadからいくつかのヒントを得た後、私が取り組んでしようとしているコードです。

+0

SOS SOS ... desp。助けを必要としている。 –

答えて

1

問題は何か他のものだったと今で解決されます。HtmlUnitDriverは、パラメータなしでWaitingRefreshHandlerを使用しており、残念ながらそれはいくつかのサイトには不適切である - 例えば、HtmlUnitDriverhttp://news.google.comにハングアップします。

原因&シナリオ:

  1. あなたはあなたのためにHTMLヘッダー内<meta http-equiv="refresh"...>ディレクティブが存在する、一定期間後にそれ自体に更新さページをロードします。
  2. WaitingRefreshHandler指定された時間待機した後、その時間が経過した後、は再びそのページを取得するためにHtmlUnitDriverをリダイレクトします。
  3. したがって、このリダイレクト処理では永遠にループします。

ソリューション:リフレッシュハンドラ:

一つはHtmlUnitDriverを拡張し、(クリアするために読んで)新しいを設定するmodifyWebClientメソッドをオーバーライドする必要があります。

@Override 
protected WebClient modifyWebClient(WebClient client) { 
    RefreshHandler rh = new RefreshHandler() { 
     public void handleRefresh(final Page page, final URL url, final int seconds) { } 
    }; 
    client.setRefreshHandler(rh); 
    return client; 
} 
+0

私はHtmlUnitDriver 2.28.2を使用していますが、この解決策は機能しません: 'org.openqa.selenium.WebDriverException:javax.net.ssl.SSLException:java.lang.SecurityException:JCEはプロバイダSunJCE'を認証できません – cbaldan

関連する問題