2017-03-10 1 views
0

Mein Code wie folgt lesen:Htmlunit net.sourceforge.htmlunit.corejs.javascript.EcmaError: Typeerror: Kann nicht das Objekt „GetLoginJsonInfo“ von undefined

WebClient webClient = new WebClient(BrowserVersion.CHROME); 
webClient.setAjaxController(new NicelyResynchronizingAjaxController()); 
webClient.getOptions().setCssEnabled(false); 
webClient.getOptions().setJavaScriptEnabled(true); 
webClient.getOptions().setThrowExceptionOnScriptError(false); 
webClient.getOptions().setThrowExceptionOnFailingStatusCode(false); 
webClient.getOptions().setTimeout(100000); 
HtmlPage page = null; 
try { 
    page = webClient.getPage("http://www.iqiyi.com/a_19rrharlvd.html"); 
    HtmlAnchor ha = page.getFirstByXPath("//a[@data-avlist-page='2']"); 
    page = ha.click(); 
    saveStringToFile("E://abcHtml.txt", page.asXml()); 
} catch (FailingHttpStatusCodeException e) { 
    e.printStackTrace(); 
} catch (MalformedURLException e) { 
    e.printStackTrace(); 
} catch (IOException e) { 
    e.printStackTrace(); 
} 
webClient.closeAllWindows(); 

Und ich dieses Projekt laufen, dann wirft es einige js Ausnahmen und das ha.click() funktioniert nicht (ich bekomme die Datei gleich, ha.click() nicht zu machen). Ausnahmen wie diese:

Nun, was kann ich tun, um es nicht kümmern die js-Ausnahme, und Run-Click-Funktion? Ich versuche andere Seite, wenn es keine Ausnahmen auslösen, ist die Funktion des Klicks Arbeit.Aber wenn die Ausnahmen zu werfen, wird es keine Arbeit ... ----------- --------------------------------- Trennlinie --------------- ------------------------------------ Danke für Hilfe. Wenn ich die htmlUnit Version auf 2.25 ändere, wird diese Ausnahme gelöst. Aber werfen Sie es eine neue Ausnahme wie die:

Enclosed exception: 
net.sourceforge.htmlunit.corejs.javascript.EvaluatorException: missing ; before statement (http://nlwl.iqiyi.com/apis/urc/getqd?authcookie=null&containsUgc=1&agent_type=1&subTypes=1%2C7%2C9&channelIds=1%2C2&callback=window.Q.__callbacks__.cbd1dmvj#1) 
    at com.gargoylesoftware.htmlunit.javascript.StrictErrorReporter.error(StrictErrorReporter.java:65) 
    at net.sourceforge.htmlunit.corejs.javascript.Parser.addError(Parser.java:188) 
    at net.sourceforge.htmlunit.corejs.javascript.Parser.addError(Parser.java:167) 
    at net.sourceforge.htmlunit.corejs.javascript.Parser.reportError(Parser.java:255) 
    at net.sourceforge.htmlunit.corejs.javascript.Parser.reportError(Parser.java:244) 
    at net.sourceforge.htmlunit.corejs.javascript.Parser.reportError(Parser.java:237) 
    at net.sourceforge.htmlunit.corejs.javascript.Parser.autoInsertSemicolon(Parser.java:1089) 
    at net.sourceforge.htmlunit.corejs.javascript.Parser.statementHelper(Parser.java:1066) 
    at net.sourceforge.htmlunit.corejs.javascript.Parser.statement(Parser.java:928) 
    at net.sourceforge.htmlunit.corejs.javascript.Parser.statements(Parser.java:888) 
    at net.sourceforge.htmlunit.corejs.javascript.Parser.block(Parser.java:1701) 
    at net.sourceforge.htmlunit.corejs.javascript.Parser.statementHelper(Parser.java:1032) 
    at net.sourceforge.htmlunit.corejs.javascript.Parser.statement(Parser.java:928) 
    at net.sourceforge.htmlunit.corejs.javascript.Parser.parse(Parser.java:572) 
    at net.sourceforge.htmlunit.corejs.javascript.Parser.parse(Parser.java:492) 
    at net.sourceforge.htmlunit.corejs.javascript.Context.compileImpl(Context.java:2660) 
    at net.sourceforge.htmlunit.corejs.javascript.Context.compileString(Context.java:1623) 
    at com.gargoylesoftware.htmlunit.javascript.HtmlUnitContextFactory$TimeoutContext.compileString(HtmlUnitContextFactory.java:184) 
    at net.sourceforge.htmlunit.corejs.javascript.Context.compileString(Context.java:1615) 
    at com.gargoylesoftware.htmlunit.javascript.JavaScriptEngine$2.doRun(JavaScriptEngine.java:709) 
    at com.gargoylesoftware.htmlunit.javascript.JavaScriptEngine$HtmlUnitContextAction.run(JavaScriptEngine.java:879) 
    at net.sourceforge.htmlunit.corejs.javascript.Context.call(Context.java:628) 
    at net.sourceforge.htmlunit.corejs.javascript.ContextFactory.call(ContextFactory.java:515) 
    at com.gargoylesoftware.htmlunit.javascript.JavaScriptEngine.compile(JavaScriptEngine.java:718) 
    at com.gargoylesoftware.htmlunit.javascript.JavaScriptEngine.compile(JavaScriptEngine.java:683) 
    at com.gargoylesoftware.htmlunit.html.HtmlPage.loadJavaScriptFromUrl(HtmlPage.java:1069) 
    at com.gargoylesoftware.htmlunit.html.HtmlPage.loadExternalJavaScriptFile(HtmlPage.java:966) 
    at com.gargoylesoftware.htmlunit.html.HtmlScript.executeScriptIfNeeded(HtmlScript.java:352) 
    at com.gargoylesoftware.htmlunit.html.HtmlScript$2.execute(HtmlScript.java:239) 
    at com.gargoylesoftware.htmlunit.javascript.JavaScriptEngine.doProcessPostponedActions(JavaScriptEngine.java:939) 
    at com.gargoylesoftware.htmlunit.javascript.JavaScriptEngine.access$500(JavaScriptEngine.java:100) 
    at com.gargoylesoftware.htmlunit.javascript.JavaScriptEngine$HtmlUnitContextAction.run(JavaScriptEngine.java:889) 
    at net.sourceforge.htmlunit.corejs.javascript.Context.call(Context.java:628) 
    at net.sourceforge.htmlunit.corejs.javascript.ContextFactory.call(ContextFactory.java:515) 
    at com.gargoylesoftware.htmlunit.javascript.JavaScriptEngine.callFunction(JavaScriptEngine.java:824) 
    at com.gargoylesoftware.htmlunit.javascript.JavaScriptEngine.callFunction(JavaScriptEngine.java:796) 
    at com.gargoylesoftware.htmlunit.html.HtmlPage.executeJavaScriptFunctionIfPossible(HtmlPage.java:2454) 
    at com.gargoylesoftware.htmlunit.javascript.host.event.EventListenersContainer.executeEventHandler(EventListenersContainer.java:298) 
    at com.gargoylesoftware.htmlunit.javascript.host.event.EventListenersContainer.executeListeners(EventListenersContainer.java:383) 
    at com.gargoylesoftware.htmlunit.javascript.host.event.EventTarget.executeEventLocally(EventTarget.java:107) 
    at com.gargoylesoftware.htmlunit.html.HtmlScript.executeEvent(HtmlScript.java:379) 
    at com.gargoylesoftware.htmlunit.html.HtmlScript.executeScriptIfNeeded(HtmlScript.java:354) 
    at com.gargoylesoftware.htmlunit.html.HtmlScript$2.execute(HtmlScript.java:239) 
    at com.gargoylesoftware.htmlunit.javascript.JavaScriptEngine.doProcessPostponedActions(JavaScriptEngine.java:939) 
    at com.gargoylesoftware.htmlunit.javascript.JavaScriptEngine.access$500(JavaScriptEngine.java:100) 
    at com.gargoylesoftware.htmlunit.javascript.JavaScriptEngine$HtmlUnitContextAction.run(JavaScriptEngine.java:889) 
    at net.sourceforge.htmlunit.corejs.javascript.Context.call(Context.java:628) 
    at net.sourceforge.htmlunit.corejs.javascript.ContextFactory.call(ContextFactory.java:515) 
    at com.gargoylesoftware.htmlunit.javascript.JavaScriptEngine.callFunction(JavaScriptEngine.java:824) 
    at com.gargoylesoftware.htmlunit.javascript.JavaScriptEngine.callFunction(JavaScriptEngine.java:796) 
    at com.gargoylesoftware.htmlunit.html.HtmlPage.executeJavaScriptFunctionIfPossible(HtmlPage.java:2454) 
    at com.gargoylesoftware.htmlunit.javascript.host.event.EventListenersContainer.executeEventHandler(EventListenersContainer.java:298) 
    at com.gargoylesoftware.htmlunit.javascript.host.event.EventListenersContainer.executeListeners(EventListenersContainer.java:383) 
    at com.gargoylesoftware.htmlunit.javascript.host.event.EventTarget.executeEventLocally(EventTarget.java:107) 
    at com.gargoylesoftware.htmlunit.html.HtmlScript.executeEvent(HtmlScript.java:379) 
    at com.gargoylesoftware.htmlunit.html.HtmlScript.executeScriptIfNeeded(HtmlScript.java:354) 
    at com.gargoylesoftware.htmlunit.html.HtmlScript$2.execute(HtmlScript.java:239) 
    at com.gargoylesoftware.htmlunit.javascript.JavaScriptEngine.doProcessPostponedActions(JavaScriptEngine.java:939) 
    at com.gargoylesoftware.htmlunit.javascript.JavaScriptEngine.access$500(JavaScriptEngine.java:100) 
    at com.gargoylesoftware.htmlunit.javascript.JavaScriptEngine$HtmlUnitContextAction.run(JavaScriptEngine.java:889) 
    at net.sourceforge.htmlunit.corejs.javascript.Context.call(Context.java:628) 
    at net.sourceforge.htmlunit.corejs.javascript.ContextFactory.call(ContextFactory.java:515) 
    at com.gargoylesoftware.htmlunit.javascript.JavaScriptEngine.callFunction(JavaScriptEngine.java:824) 
    at com.gargoylesoftware.htmlunit.javascript.JavaScriptEngine.callFunction(JavaScriptEngine.java:796) 
    at com.gargoylesoftware.htmlunit.html.HtmlPage.executeJavaScriptFunctionIfPossible(HtmlPage.java:2454) 
    at com.gargoylesoftware.htmlunit.javascript.host.event.EventListenersContainer.executeEventHandler(EventListenersContainer.java:298) 
    at com.gargoylesoftware.htmlunit.javascript.host.event.EventListenersContainer.executeListeners(EventListenersContainer.java:383) 
    at com.gargoylesoftware.htmlunit.javascript.host.event.EventTarget.executeEventLocally(EventTarget.java:107) 
    at com.gargoylesoftware.htmlunit.html.HtmlScript.executeEvent(HtmlScript.java:379) 
    at com.gargoylesoftware.htmlunit.html.HtmlScript.executeScriptIfNeeded(HtmlScript.java:354) 
    at com.gargoylesoftware.htmlunit.html.HtmlScript$2.execute(HtmlScript.java:239) 
    at com.gargoylesoftware.htmlunit.javascript.JavaScriptEngine.doProcessPostponedActions(JavaScriptEngine.java:939) 
    at com.gargoylesoftware.htmlunit.javascript.JavaScriptEngine.access$500(JavaScriptEngine.java:100) 
    at com.gargoylesoftware.htmlunit.javascript.JavaScriptEngine$HtmlUnitContextAction.run(JavaScriptEngine.java:889) 
    at net.sourceforge.htmlunit.corejs.javascript.Context.call(Context.java:628) 
    at net.sourceforge.htmlunit.corejs.javascript.ContextFactory.call(ContextFactory.java:515) 
    at com.gargoylesoftware.htmlunit.javascript.JavaScriptEngine.execute(JavaScriptEngine.java:775) 
    at com.gargoylesoftware.htmlunit.javascript.JavaScriptEngine.execute(JavaScriptEngine.java:751) 
    at com.gargoylesoftware.htmlunit.javascript.JavaScriptEngine.execute(JavaScriptEngine.java:739) 
    at com.gargoylesoftware.htmlunit.html.HtmlPage.executeJavaScriptIfPossible(HtmlPage.java:910) 
    at com.gargoylesoftware.htmlunit.html.HtmlScript.executeInlineScriptIfNeeded(HtmlScript.java:307) 
    at com.gargoylesoftware.htmlunit.html.HtmlScript.executeScriptIfNeeded(HtmlScript.java:368) 
    at com.gargoylesoftware.htmlunit.html.HtmlScript$2.execute(HtmlScript.java:239) 
    at com.gargoylesoftware.htmlunit.html.HtmlScript.onAllChildrenAddedToPage(HtmlScript.java:258) 
    at com.gargoylesoftware.htmlunit.html.HTMLParser$HtmlUnitDOMBuilder.endElement(HTMLParser.java:781) 
    at org.apache.xerces.parsers.AbstractSAXParser.endElement(Unknown Source) 
    at com.gargoylesoftware.htmlunit.html.HTMLParser$HtmlUnitDOMBuilder.endElement(HTMLParser.java:738) 
    at net.sourceforge.htmlunit.cyberneko.HTMLTagBalancer.callEndElement(HTMLTagBalancer.java:1243) 
    at net.sourceforge.htmlunit.cyberneko.HTMLTagBalancer.endElement(HTMLTagBalancer.java:1143) 
    at net.sourceforge.htmlunit.cyberneko.filters.DefaultFilter.endElement(DefaultFilter.java:226) 
    at net.sourceforge.htmlunit.cyberneko.filters.NamespaceBinder.endElement(NamespaceBinder.java:345) 
    at net.sourceforge.htmlunit.cyberneko.HTMLScanner$ContentScanner.scanEndElement(HTMLScanner.java:3154) 
    at net.sourceforge.htmlunit.cyberneko.HTMLScanner$ContentScanner.scan(HTMLScanner.java:2117) 
    at net.sourceforge.htmlunit.cyberneko.HTMLScanner.scanDocument(HTMLScanner.java:945) 
    at net.sourceforge.htmlunit.cyberneko.HTMLConfiguration.parse(HTMLConfiguration.java:521) 
    at net.sourceforge.htmlunit.cyberneko.HTMLConfiguration.parse(HTMLConfiguration.java:472) 
    at org.apache.xerces.parsers.XMLParser.parse(Unknown Source) 
    at com.gargoylesoftware.htmlunit.html.HTMLParser$HtmlUnitDOMBuilder.parse(HTMLParser.java:988) 
    at com.gargoylesoftware.htmlunit.html.HTMLParser.parse(HTMLParser.java:246) 
    at com.gargoylesoftware.htmlunit.html.HTMLParser.parseHtml(HTMLParser.java:188) 
    at com.gargoylesoftware.htmlunit.DefaultPageCreator.createHtmlPage(DefaultPageCreator.java:267) 
    at com.gargoylesoftware.htmlunit.DefaultPageCreator.createPage(DefaultPageCreator.java:155) 
    at com.gargoylesoftware.htmlunit.WebClient.loadWebResponseInto(WebClient.java:517) 
    at com.gargoylesoftware.htmlunit.WebClient.getPage(WebClient.java:391) 
    at com.gargoylesoftware.htmlunit.WebClient.getPage(WebClient.java:309) 
    at com.gargoylesoftware.htmlunit.WebClient.getPage(WebClient.java:456) 
    at com.gargoylesoftware.htmlunit.WebClient.getPage(WebClient.java:441) 
    at TestMain.main(TestMain.java:42) 
== CALLING JAVASCRIPT == 
{"code":"A00101","come":"no_uid","count":0,"data":{}} 
======= EXCEPTION END ======== 

bin nicht, was ich einige Bedingungen ignoriert habe? Kann wie das json Format unterstützen?

+0

'window.external' ist undefiniert. Ziemlich selbsterklärend. – Xufox

+0

Also ich denke, wenn WebClient diese Ausnahme nicht kümmern und fortfahren kann. Die Funktion des Klicks kann Arbeit sein. Jetzt weiß ich nicht, wie ich diese Ausnahme ignorieren kann, wenn ich HtmlUnit benutze. – Evlix

+0

Verwenden Sie die neueste HtmlUnit-Version? window.external wird soweit unterstützt, wie ich sehen kann. – RBRi

Antwort

1

Haben Sie einen kurzen Check gemacht; Ihr Code funktioniert ohne Probleme mit Version 2.25 (solange saveStringToFile nichts Besonderes macht).

+0

ja..danke Ihnen ~ es kann funktionieren, aber es gibt andere Ausnahmen. – Evlix

+0

saveStringToFile nur HTML-Quellcode in eine Datei einfügen. – Evlix

+0

Ich hatte ein Problem, bei dem "HtmlUnit" 'com.gargoylesoftware.htmlunit.ScriptException: net.sourceforge.htmlunit.corejs.javascript.UniqueTag geworfen hat, kann nicht in net.sourceforge.htmlunit.corejs.javascript.BaseFunction umgewandelt werden, wenn ich benutze 'client.getOptions(). setUseInsecureSSL (true)', und dank dieser Antwort habe ich 'HtmlUnit 2.25' getestet und es hat funktioniert. Dieses Problem betrifft auch Version 2.28 und 2.29. Ich benutze 2,27 ftw! – cbaldan

Verwandte Themen