получить HTMLUnitDriver обходить проверку ненадежных сертификатов (Selenium 2.0) - PullRequest
2 голосов
/ 21 декабря 2011

Я пытался получить доступ к URL-адресу HTTPS с помощью HTMLUnitDriver API 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");

Я был бы очень признателен за любую помощь, чтобы заставить его работать.

1 Ответ

1 голос
/ 03 января 2012

Проблема была в другом и теперь решена: HtmlUnitDriver использует WaitingRefreshHandler без параметров и, к сожалению, не подходит для некоторых сайтов - например, HtmlUnitDriver висит на http://news.google.com.

Причина и сценарий:

  1. Вы загружаете страницу, которая обновляется сама по себе через некоторое время из-за наличия директивы <meta http-equiv="refresh"...> в заголовке HTML.
  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;
}
...