Отключение предупреждений HtmlUnit - PullRequest
57 голосов
/ 30 августа 2010

Знаете ли вы, как отключить предупреждения, заметки, ошибки в HtmlUnit?

Ответы [ 14 ]

1 голос
/ 22 декабря 2015

Теперь в HtmlUnit 2.9 WebClient.setCssErrorHandler(new SilentCssErrorHandler()) может легко игнорировать предупреждения и ошибки. Например:

@Override
protected WebClient modifyWebClient(WebClient client) {
    // currently does nothing, but may be changed in future versions
    WebClient modifiedClient = super.modifyWebClient(client);

    modifiedClient.getOptions().setThrowExceptionOnScriptError(false);
    modifiedClient.setCssErrorHandler(new SilentCssErrorHandler());

    return modifiedClient;
}
1 голос
/ 13 мая 2013

Попробуйте добавить это к своему коду:

LogFactory.getFactory().setAttribute("org.apache.commons.logging.Log", "org.apache.commons.logging.impl.NoOpLog");

По сути, это делает журнал регистрации на NoOpLog, который нигде не записывает информацию журнала.

0 голосов
/ 13 апреля 2019

Если вам не нужна поддержка JavaScript, это самый простой способ отключить ее:

WebClient client = new WebClient(BrowserVersion.BEST_SUPPORTED);
client.getOptions().setThrowExceptionOnFailingStatusCode(false);
client.getOptions().setPrintContentOnFailingStatusCode(false);
client.getOptions().setThrowExceptionOnScriptError(false);
client.getOptions().setJavaScriptEnabled(false);
client.setCssErrorHandler(new SilentCssErrorHandler());
client.setHTMLParserListener(new HTMLParserListener() {
    @Override
    public void error(String message, URL url, String html, int line, int column, String key) {
    }

    @Override
    public void warning(String message, URL url, String html, int line, int column, String key) {
    }
});

Вы также отключаете исключения и регистрируете ошибочные коды состояния, ошибки JavaScript, CSS и ошибки синтаксического анализа HTML.

Если вам нужна поддержка JavaScript, вы можете использовать пользовательскую реализацию для ошибок JavaScript:

client.setJavaScriptErrorListener(new JavaScriptErrorListener() {
    @Override
    public void timeoutError(HtmlPage arg0, long arg1, long arg2) {
    }

    @Override
    public void scriptException(HtmlPage arg0, ScriptException arg1) {
    }

    @Override
    public void malformedScriptURL(HtmlPage arg0, String arg1, MalformedURLException arg2) {
    }

    @Override
    public void loadScriptError(HtmlPage arg0, URL arg1, Exception arg2) {
    }
});

Если вам не нужно, вы также можете просто отключить ее:

client.getOptions().setCssEnabled(false);

Таким образом, нет необходимости настраивать любой другой Logger.

0 голосов
/ 15 декабря 2016

Один из вариантов, который мне пригодился, - это изменить регистратор HtmlUnit для записи в другой файл, чтобы у меня были эти ошибки на случай, если мне понадобится обратиться к нему некоторое время, и это также не загромождает мои основные журналы.Ниже приведено log4j изменение, которое я внес в log4j.properties:

log4j.logger.com.gargoylesoftware.htmlunit=ERROR, HTMLUNIT
log4j.additivity.com.gargoylesoftware.htmlunit=false
log4j.appender.HTMLUNIT = org.apache.log4j.RollingFileAppender
log4j.appender.HTMLUNIT.layout=org.apache.log4j.PatternLayout
log4j.appender.HTMLUNIT.layout.ConversionPattern=%m%n
log4j.appender.HTMLUNIT.File=logs/HtmlUnitLog4j.log
log4j.appender.HTMLUNIT.MaxFileSize=5MB
log4j.appender.HTMLUNIT.MaxBackupIndex=5
...