Как игнорировать предупреждения / ошибки HTMLUnit, связанные с jQuery? - PullRequest
15 голосов
/ 04 марта 2011

Можно ли научить HTMLUnit игнорировать определенные сценарии / файлы JavaScript на веб-странице? Некоторые из них находятся вне моего контроля (например, jQuery), и я ничего не могу с ними сделать. Предупреждения раздражают, например:

[WARN] com.gargoylesoftware.htmlunit.javascript.host.html.HTMLDocument:
getElementById(script1299254732492) did a getElementByName for Internet Explorer

На самом деле я использую JSFUnit, и HTMLUnit работает под ним.

Ответы [ 5 ]

4 голосов
/ 08 января 2013

Если вы хотите избежать исключений из-за любых ошибок JavaScript:

 webClient.setThrowExceptionOnScriptError(false);        
1 голос
/ 08 марта 2011

Ну, мне еще предстоит найти способ для этого, но я нашел эффективный обходной путь. Попробуйте реализовать FalsifyingWebConnection. Посмотрите на пример кода ниже.

public class PinConnectionWrapper extends FalsifyingWebConnection {

    public PinConnectionWrapper(WebClient webClient)
            throws IllegalArgumentException {
        super(webClient);
    }

    @Override
    public WebResponse getResponse(WebRequest request) throws IOException {
        WebResponse res = super.getResponse(request);
        if(res.getWebRequest().getUrl().toString().endsWith("/toolbar.js")) {
            return createWebResponse(res.getWebRequest(), "",
"application/javascript", 200, "Ok");
        }
        return res;
    }

}

В приведенном выше коде всякий раз, когда HtmlUnit запрашивает toolbar.js, мой код просто возвращает ложный пустой ответ. Вы можете подключить свой вышеупомянутый класс-оболочку в HtmlUnit, как показано ниже.

final WebClient webClient = new WebClient(BrowserVersion.FIREFOX_3_6);
new PinConnectionWrapper(webClient);
0 голосов
/ 19 декабря 2013

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

Вставьте этот код.

0 голосов
/ 10 мая 2012

Если вы заинтересованы в игнорировании всех записей журнала предупреждений, вы можете установить уровень журнала INFO для com.gargoylesoftware.htmlunit.javascript.host.html.HTMLDocument в файле log4j.properties.

0 голосов
/ 04 марта 2011

Взгляните на WebClient.setScriptPreProcessor .Это даст вам возможность изменить (или, в вашем случае, остановить) данный сценарий перед его выполнением.

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

...