2011-03-04 45 views
15

是否可以教HTMLUnit忽略某些 JavaScript脚本/文件在网页上?其中一些只是我的控制权(如jQuery),我无法对他们做任何事情。警告是烦人的,例如:如何忽略与jQuery相关的HTMLUnit警告/错误?

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

其实我使用JSFUnit和HTMLUnit在它下面工作。

+1

HTMLUnit邮件列表将是一个很好的问题。开发人员在上面,他们通常非常有帮助。 – 2011-03-09 00:06:29

回答

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

如果您有兴趣忽略所有的警告日志条目您可以设置日志级别在log4j.properties文件信息的com.gargoylesoftware.htmlunit.javascript.host.html.HTMLDocument。

4

如果你想避免因为任何JavaScript错误的例外:

webClient.setThrowExceptionOnScriptError(false);   
+3

或2.13及以上:'webClient.getOptions()。setThrowExceptionOnScriptError(false);' – Kevin 2013-12-16 05:53:41

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

插入此代码。