2011-03-04 28 views
15

¿Es posible enseñar a HTMLUnit a ignorar determinados scripts/archivos de JavaScript en una página web? Algunos de ellos están fuera de mi control (como jQuery) y no puedo hacer nada con ellos. Las advertencias son molestos, por ejemplo:¿Cómo ignorar HTMLUnit advertencias/errores relacionados con jQuery?

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

En realidad, yo estoy usando JSFUnit y HtmlUnit trabaja debajo de ella.

+1

La lista de correo HTMLUnit sería un buen lugar para preguntar. Los desarrolladores están en eso, y en general son muy útiles. –

Respuesta

1

Bueno, todavía tengo que encontrar la manera de hacerlo, pero he encontrado una solución efectiva. Intente implementar FalsifyingWebConnection. Mira el código de ejemplo a continuación.

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

} 

En el código anterior siempre HtmlUnit solicitará para toolbar.js mi código, simplemente devolver una respuesta vacía falso. Puede conectar su clase contenedora anterior en HtmlUnit como a continuación.

final WebClient webClient = new WebClient(BrowserVersion.FIREFOX_3_6); 
new PinConnectionWrapper(webClient); 
0

Si usted está interesado en ignorar todas las entradas de registro de advertencia que puede establecer el nivel de registro a INFO para com.gargoylesoftware.htmlunit.javascript.host.html.HTMLDocument en el archivo log4j.properties.

4

Si se quiere evitar excepciones a causa de los errores de JavaScript:

webClient.setThrowExceptionOnScriptError(false);   
+3

O para 2.13 y superior: 'webClient.getOptions(). SetThrowExceptionOnScriptError (false);' – Kevin

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

Inserta este código.