如何忽略与jQuery相关的HTMLUnit警告/错误?

时间:2011-03-04 16:11:00

标签: java htmlunit

是否可以教HTMLUnit忽略网页上的某些 javascript脚本/文件?其中一些只是我的控制(如jQuery),我不能对它们做任何事情。警告很烦人,例如:

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

实际上我正在使用JSFUnit,HTMLUnit在它下面工作。

5 个答案:

答案 0 :(得分:4)

如果您因任何JavaScript错误而想避免异常:

 webClient.setThrowExceptionOnScriptError(false);        

答案 1 :(得分:1)

我还没有找到办法,但我找到了一个有效的解决方法。尝试实施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);

答案 2 :(得分:0)

看看WebClient.setScriptPreProcessor。它将使您有机会在执行之前修改(或在您的情况下,停止)给定脚本。

此外,如果只是警告让你紧张,我会建议changing the log level

答案 3 :(得分:0)

如果您对忽略所有警告日志条目感兴趣,可以在log4j.properties文件中为com.gargoylesoftware.htmlunit.javascript.host.html.HTMLDocument将日志级别设置为INFO。

答案 4 :(得分:0)

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

插入此代码。