2011-03-04 13 views
15

क्या कुछ वेब पेज पर जावास्क्रिप्ट स्क्रिप्ट/फ़ाइलों को अनदेखा करने के लिए HTMLUnit को पढ़ाना संभव है? उनमें से कुछ सिर्फ मेरे नियंत्रण से बाहर हैं (जैसे jQuery) और मैं उनके साथ कुछ भी नहीं कर सकता। चेतावनी, कष्टप्रद हैं उदाहरण के लिए:HTMLUnit चेतावनियों/jQuery से संबंधित त्रुटियों को अनदेखा कैसे करें?

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

असल में मैं उपयोग कर रहा हूँ JSFUnit और HTMLUnit इसके तहत काम करता है।

+1

HTMLUnit मेलिंग सूची पूछने के लिए एक अच्छी जगह होगी। डेवलपर्स इस पर हैं, और वे आम तौर पर बहुत उपयोगी होते हैं। –

उत्तर

0

WebClient.setScriptPreProcessor पर एक नज़र डालें। यह आपको निष्पादित होने से पहले किसी दिए गए स्क्रिप्ट को संशोधित करने का अवसर देगा (या आपके मामले में, रोकें)।

इसके अलावा, अगर यह केवल आपके तंत्रिकाओं पर होने वाली चेतावनियां है तो मैं changing the log level का सुझाव दूंगा।

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 के लिए मेरे कोड का अनुरोध करेंगे बस एक नकली खाली प्रतिक्रिया वापस होगा। आप अपने उपरोक्त रैपर वर्ग को नीचे HTML Hnit में प्लग-इन कर सकते हैं।

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

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

इस कोड को डालें।

संबंधित मुद्दे