我有一个 HttpUnit 代码,我正在尝试访问谷歌的官方网站。这是我的代码:
/** 你需要启动的一切都在 com.meterware.httpunit 包中 **/ import com.meterware.httpunit.*;
/** 这是一个使用 HttpUnit 阅读和理解网页的简单示例。**/ 公共类示例 {
public static void main(String[] params) {
try {
WebConversation wc = new WebConversation();
String url = "https://www.yahoo.com";
WebRequest request = new GetMethodWebRequest(url);
WebResponse response = wc.getResponse(request);
// WebLink httpunitLink = response.getFirstMatchingLink(
// WebLink.MATCH_CONTAINED_TEXT, "HTML" );
// response = httpunitLink.click();
System.out.println("The yahoo main page '" + url + "' contains "
+ response.getLinks().length + " links");
} catch (Exception e) {
System.err.println("Exception: " + e);
}
}
}
我在运行代码时遇到以下异常。我使用 eclipse 作为 IDE。
org.mozilla.javascript.EcmaError: TypeError: Cannot read property "className" from undefined (httpunit#3) at org.mozilla.javascript.ScriptRuntime.constructError(ScriptRuntime.java:3229) at org.mozilla.javascript.ScriptRuntime.constructError (ScriptRuntime.java:3219) 在 org.mozilla.javascript.ScriptRuntime.typeError(ScriptRuntime.java:3235) 在 org.mozilla.javascript.ScriptRuntime.typeError2(ScriptRuntime.java:3254) 在 org.mozilla.javascript.ScriptRuntime。 undefReadError(ScriptRuntime.java:3267) at org.mozilla.javascript.ScriptRuntime.getObjectProp(ScriptRuntime.java:1324) at org.mozilla.javascript.Interpreter.interpretLoop(Interpreter.java:2816) at script(httpunit:3) at org.mozilla.javascript.Interpreter.interpret(Interpreter.java:2251) 在 org.mozilla.javascript.InterpretedFunction。在 org.mozilla.javascript.ScriptRuntime.doTopCall(ScriptRuntime.java:2758) 在 org.mozilla.javascript.ContextFactory.doTopCall(ContextFactory.java:340) 在 org.mozilla.javascript.InterpretedFunction 调用(InterpretedFunction.java:161) .exec(InterpretedFunction.java:172) 在 org.mozilla.javascript.Context.evaluateString(Context.java:1132) 在 com.meterware.httpunit.javascript.ScriptingEngineImpl.runScript(ScriptingEngineImpl.java:92) 在 com.meterware。 httpunit.scripting.ScriptableDelegate.runScript(ScriptableDelegate.java:88) 在 com.meterware.httpunit.parsing.NekoDOMParser.runScript(NekoDOMParser.java:151) 在 com.meterware.httpunit.parsing.ScriptFilter.getTranslatedScript(ScriptFilter.java: 150) 在 com.meterware.httpunit.parsing.ScriptFilter.endElement(ScriptFilter.java:131) 在 org.cyberneko.html.filters。DefaultFilter.endElement(DefaultFilter.java:249) at org.cyberneko.html.filters.NamespaceBinder.endElement(NamespaceBinder.java:367) at org.cyberneko.html.HTMLTagBalancer.callEndElement(HTMLTagBalancer.java:1015) at org.cyberneko .html.HTMLTagBalancer.endElement(HTMLTagBalancer.java:888) 在 org.cyberneko.html.HTMLScanner$SpecialScanner.scan(HTMLScanner.java:2831) 在 org.cyberneko.html.HTMLScanner.scanDocument(HTMLScanner.java:809) 在org.cyberneko.html.HTMLConfiguration.parse(HTMLConfiguration.java:478) at org.cyberneko.html.HTMLConfiguration.parse(HTMLConfiguration.java:431) at org.apache.xerces.parsers.XMLParser.parse(Unknown Source) at org.apache.xerces.parsers.DOMParser.parse(Unknown Source) at com.meterware.httpunit.parsing.NekoHTMLParser.parse(NekoHTMLParser.java:48) at com.meterware.httpunit。HTMLPage.parse(HTMLPage.java:271) 在 com.meterware.httpunit.WebResponse.getReceivedPage(WebResponse.java:1301) 在 com.meterware.httpunit.WebResponse.getFrames(WebResponse.java:1285) 在 com.meterware.httpunit .WebResponse.getFrameRequests(WebResponse.java:1024) 在 com.meterware.httpunit.FrameHolder.updateFrames(FrameHolder.java:179) 在 com.meterware.httpunit.WebWindow.updateFrameContents(WebWindow.java:315) 在 com.meterware。 httpunit.WebClient.updateFrameContents(WebClient.java:526) 在 com.meterware.httpunit.WebWindow.updateWindow(WebWindow.java:201) 在 com.meterware.httpunit.WebWindow.getSubframeResponse(WebWindow.java:183) 在 com.meterware .httpunit.WebWindow.getResponse(WebWindow.java:158) 在 com.meterware.httpunit.WebClient.getResponse(WebClient.java:122) 在 Example.main(Example.java:14) 例外:com.meterware.httpunit.ScriptException: Script '//用于 3pas 中的 perf 信标 rtTop = Number(new Date());
document.documentElement.className += ' jsenabled';
if (!("ontouchstart" in document.documentElement)) {
document.documentElement.className += " no-touch";
}
(function(){var k=13,d=4,j=0,a=document.documentElement,b=[a.className],f,c=navigator.plugins,g=k;if(c&&c.length){f=c["Shockwave Flash"];if(f&&f.description){j=parseInt(f.description.match(/\b(\d+)\.\d+\b/)[1],10)||0}}else{while(g--){try{new ActiveXObject("ShockwaveFlash.ShockwaveFlash."+g);j=g;break}catch(h){}}}b.push("flash-"+j);while(j-->d){b.push("flash-gt"+j)}a.className=b.join(" ")})();
(function(){var j=this,n=/^(on)?load/,b=/^on/,i="addEventListener",f="attachEvent",e="_oc",h="detachEvent",g="removeEventListener",l=j[i],m=j[g],p=j[f],a=j[h],k={},d=0;function c(r,s,q){if(!r||!s){return;}if(n.test(r)){if(!s[e]){var t=++d;s[e]=t;k[t]=s;}}else{if(p&&b.test(r)){p(r,s);}else{if(l){l(r,s,q);}}}}function o(r,s,q){if(!r||!s){return;}if(n.test(r)){var t=s[e];if(t){delete k[t];}}else{if(a&&b.test(r)){a(r,s);}else{if(m){m(r,s,q);}}}}j.OnloadCache={enable:function(){if(l){j[i]=c;j[g]=o;}if(p){j[f]=c;j[h]=o;}},disable:function(){if(l){j[i]=l;j[g]=m;}if(p){j[f]=p;j[h]=a;}},dispatch:function(){var r={type:"load"},q;for(q in k){if(k.hasOwnProperty(q)){k[q](r);}}},reset:function(){k={};}};})();
OnloadCache.enable();
var setJSCookie = true;
(function () {
var cookieName = "FBJSC=";
var cookieValue = "1409123746";
var cookieIndex = document.cookie.indexOf(cookieName);
if(cookieIndex >= 0) {
var oldValue = document.cookie.substr(cookieIndex + cookieName.length, cookieValue.length);
if(cookieValue <= oldValue) {
setJSCookie = false;
}
}
if(setJSCookie) {
document.cookie = cookieName + cookieValue;
}
})();' failed: org.mozilla.javascript.EcmaError: TypeError: Cannot read property "className" from undefined (httpunit#3)
任何帮助将不胜感激。谢谢。enter code here