Java 如何忽略与jQuery相关的HTMLUnit警告/错误?
可以教HTMLUnit忽略网页上的某些javascript脚本/文件吗?其中一些是我无法控制的(比如jQuery),我对它们无能为力。警告很烦人,例如:Java 如何忽略与jQuery相关的HTMLUnit警告/错误?,java,htmlunit,Java,Htmlunit,可以教HTMLUnit忽略网页上的某些javascript脚本/文件吗?其中一些是我无法控制的(比如jQuery),我对它们无能为力。警告很烦人,例如: [WARN] com.gargoylesoftware.htmlunit.javascript.host.html.HTMLDocument: getElementById(script1299254732492) did a getElementByName for Internet Explorer 实际上,我使用的是JSFUnit和HT
[WARN] com.gargoylesoftware.htmlunit.javascript.host.html.HTMLDocument:
getElementById(script1299254732492) did a getElementByName for Internet Explorer
实际上,我使用的是JSFUnit和HTMLUnit,它在JSFUnit下工作。看一看。它将使您有机会在执行给定脚本之前修改(或者在您的情况下停止)该脚本
另外,如果只是警告让你紧张的话,我建议你。我还没有找到解决方法,但我已经找到了一个有效的解决办法。尝试实现
伪造网络连接
。请看下面的示例代码
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);
如果您想忽略所有警告日志条目,可以将日志级别设置为log4j.properties文件中com.gargoylesoftware.htmlunit.javascript.host.html.HTMLDocument的INFO。如果您想避免因任何javascript错误而出现异常:
webClient.setThrowExceptionOnScriptError(false);
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);
getLogger(“org.apache.commons.httpclient”).setLevel(Level.OFF)
插入此代码。HTMLUnit邮件列表是一个询问的好地方。开发人员也参与其中,他们通常非常有帮助。对于2.13及以上版本:
webClient.getOptions().setThroweExceptionOnScriptorror(false)代码>