Подтвердить что ты не робот

Отключение HtmlUnit Warnings

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

4b9b3361

Ответ 1

Поместите это где-нибудь в начале вашего кода; он закроет свой грязный рот

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

java.util.logging.Logger.getLogger("com.gargoylesoftware.htmlunit").setLevel(Level.OFF); 
java.util.logging.Logger.getLogger("org.apache.commons.httpclient").setLevel(Level.OFF);

webClient = new WebClient(bv);
webClient.setCssEnabled(false);

webClient.setIncorrectnessListener(new IncorrectnessListener() {

    @Override
    public void notify(String arg0, Object arg1) {
        // TODO Auto-generated method stub

    }
});
webClient.setCssErrorHandler(new ErrorHandler() {

    @Override
    public void warning(CSSParseException exception) throws CSSException {
        // TODO Auto-generated method stub

    }

    @Override
    public void fatalError(CSSParseException exception) throws CSSException {
        // TODO Auto-generated method stub

    }

    @Override
    public void error(CSSParseException exception) throws CSSException {
        // TODO Auto-generated method stub

    }
});
webClient.setJavaScriptErrorListener(new JavaScriptErrorListener() {

    @Override
    public void timeoutError(HtmlPage arg0, long arg1, long arg2) {
        // TODO Auto-generated method stub

    }

    @Override
    public void scriptException(HtmlPage arg0, ScriptException arg1) {
        // TODO Auto-generated method stub

    }

    @Override
    public void malformedScriptURL(HtmlPage arg0, String arg1, MalformedURLException arg2) {
        // TODO Auto-generated method stub

    }

    @Override
    public void loadScriptError(HtmlPage arg0, URL arg1, Exception arg2) {
        // TODO Auto-generated method stub

    }
});
webClient.setHTMLParserListener(new HTMLParserListener() {

    @Override
    public void warning(String arg0, URL arg1, int arg2, int arg3, String arg4) {
        // TODO Auto-generated method stub

    }

    @Override
    public void error(String arg0, URL arg1, int arg2, int arg3, String arg4) {
        // TODO Auto-generated method stub

    }
});

webClient.setThrowExceptionOnFailingStatusCode(false);
webClient.setThrowExceptionOnScriptError(false);

Ответ 2

Код в ответе Арсена Захрея помог удалить почти все журналы, сгенерированные HtmlUnit.

Но одно редактирование помогает удалить их все. Использование:

java.util.logging.Logger.getLogger("com.gargoylesoftware").setLevel(Level.OFF); 

вместо:

java.util.logging.Logger.getLogger("com.gargoylesoftware.htmlunit").setLevel(Level.OFF);

Ответ 3

Чтобы удалить все выходные данные из последней версии HtmlUnit, вам просто нужно добавить эти строки в статическом блоке или в вашем основном классе:

java.util.logging.Logger.getLogger("com.gargoylesoftware").setLevel(Level.OFF); 
System.setProperty("org.apache.commons.logging.Log", "org.apache.commons.logging.impl.NoOpLog");

НЕ требуется переопределять любой метод, как утверждают некоторые другие ответы.

Ответ 4

Здесь вы можете получить информацию о том, как манипулировать журналированием HtmlUnit.

Это то, что я добавил в свои log4j.properties, чтобы отключить подробные сообщения отладки от компонентов HtmlUnit:

# Set specific logger levels.
log4j.logger.org.mortbay.log=fatal
log4j.logger.org.apache.http=fatal
log4j.logger.org.apache.http.headers=fatal
log4j.logger.org.apache.http.wire=fatal
# For HttpClient 3, which is used by FirefoxDriver
log4j.logger.httpclient.wire=fatal
log4j.logger.org.apache.commons=fatal
log4j.logger.com.gargoylesoftware.htmlunit=fatal
log4j.logger.com.gargoylesoftware.htmlunit.WebTestCase=fatal
# Change this to TRACE when enabling the debugger.
log4j.logger.com.gargoylesoftware.htmlunit.javascript.DebugFrameImpl=fatal

Ответ 5

Попробуйте следующий код, чтобы выключить уровень ведения журнала:

java.util.logging.Logger.getLogger("com.gargoylesoftware").setLevel(Level.OFF);

Ответ 6

Я использую код ниже, и он отлично работает:

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

java.util.logging.Logger.getLogger("com.gargoylesoftware.htmlunit").setLevel(Level.OFF);
java.util.logging.Logger.getLogger("org.apache.commons.httpclient").setLevel(Level.OFF);

Ответ 7

Выключите регистраторы. Но это не очень хорошее решение, так как вы можете захотеть иметь некоторые необычные проблемы в журналах.

Я знаю, что HtmlUnit создает много неважных исключений, предупреждений и т.д. Вы можете подавить несколько из тех, кто использует:

client.getOptions().setThrowExceptionOnFailingStatusCode(false);
client.getOptions().setThrowExceptionOnScriptError(false);
client.getOptions().setPrintContentOnFailingStatusCode(false);

Ответ 8

Просто добавьте эту строку в ваш log4.properties:

log4j.logger.com.gargoylesoftware.htmlunit=fatal

Ответ 9

Посмотрите docs.

Существует пример файла log4, который используется тестовым набором, вы можете найти здесь здесь, вы можете отключить все, если хотите.

Ответ 10

Это сработало для меня:

@Test
    public void homePage() throws Exception {
        final WebClient webClient = new WebClient();   
 webClient.setThrowExceptionOnScriptError(false);
    final HtmlPage page = webClient.getPage("http://localhost:8080/web/guest/home");

Ответ 11

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

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

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

Ответ 12

Теперь в 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;
}

Ответ 13

Один из вариантов, который мне пригодился, - это изменить регистратор HtmlUnit для регистрации в другом файле, чтобы у меня были эти ошибки на случай, если мне понадобится обратиться к нему некоторое время, и это также не загромождает мои основные журналы. Ниже log4j изменение 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

Ответ 14

Если вам не нужна поддержка 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.