获取HTMLUnitDriver绕过不受信任的证书验证(Selenium 2.0)

时间:2011-12-21 09:18:25

标签: java selenium https htmlunit

我一直在尝试使用Selenium 2.0的HTMLUnitDriver API访问HTTPS网址,但不知何故执行卡在“此连接不受信任”窗口并且控件不会返回。以下是我在this thread得到一些提示后尝试过的代码:

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");

我非常感谢能帮助它发挥作用。

1 个答案:

答案 0 :(得分:1)

此问题已解决,现在已得到解决:HtmlUnitDriver使用不带参数的WaitingRefreshHandler,不幸的是,这对某些网站不合适 - 例如,HtmlUnitDriver挂起http://news.google.com

原因&情形:

  1. 您加载的页面会在一段时间后自动刷新,因为HTML标题中存在<meta http-equiv="refresh"...>指令。
  2. WaitingRefreshHandler等待指定的时间,但在此时间过后,再次重定向HtmlUnitDriver以获取该页面!
  3. 因此,您将在此重定向过程中永远循环。
  4. <强>解决方案:

    需要扩展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;
    }