HtmlUnit / htmlunit

HtmlUnit is a "GUI-Less browser for Java programs".
https://www.htmlunit.org
Apache License 2.0
853 stars 168 forks source link

ReferenceError: "WebAssembly" is not defined #448

Open dshetyo opened 2 years ago

dshetyo commented 2 years ago

I am using 2.58.0-SNAPSHOT version and trying to load google.com and am getting error.

My code

WebClient webClient = new WebClient(BrowserVersion.CHROME);

        try {
            Log.d(HTML_TAG, "Loading page");
            webClient.getOptions().setJavaScriptEnabled(true);
            webClient.getOptions().setCssEnabled(true);
            webClient.waitForBackgroundJavaScript(20*1000);
            final HtmlPage page = webClient.getPage("https://google.com");
     }

@rocess: com.mindedges.whatsapptracker, PID: 15821 java.lang.NoClassDefFoundError: Failed resolution of: Ljava/awt/datatransfer/ClipboardOwner; at com.gargoylesoftware.htmlunit.html.parser.neko.HtmlUnitNekoDOMBuilder.handleCharacters(HtmlUnitNekoDOMBuilder.java:593) at com.gargoylesoftware.htmlunit.html.parser.neko.HtmlUnitNekoDOMBuilder.endElement(HtmlUnitNekoDOMBuilder.java:521) at org.apache.xerces.parsers.AbstractSAXParser.endElement(Unknown Source:35) at com.gargoylesoftware.htmlunit.html.parser.neko.HtmlUnitNekoDOMBuilder.endElement(HtmlUnitNekoDOMBuilder.java:511) at net.sourceforge.htmlunit.cyberneko.HTMLTagBalancer.callEndElement(HTMLTagBalancer.java:1247) at net.sourceforge.htmlunit.cyberneko.HTMLTagBalancer.endElement(HTMLTagBalancer.java:1172) at net.sourceforge.htmlunit.cyberneko.filters.DefaultFilter.endElement(DefaultFilter.java:219) at net.sourceforge.htmlunit.cyberneko.filters.NamespaceBinder.endElement(NamespaceBinder.java:312) at net.sourceforge.htmlunit.cyberneko.HTMLScanner$SpecialScanner.scan(HTMLScanner.java:3314) at net.sourceforge.htmlunit.cyberneko.HTMLScanner.scanDocument(HTMLScanner.java:937) at net.sourceforge.htmlunit.cyberneko.HTMLConfiguration.parse(HTMLConfiguration.java:443) at net.sourceforge.htmlunit.cyberneko.HTMLConfiguration.parse(HTMLConfiguration.java:394) at org.apache.xerces.parsers.XMLParser.parse(Unknown Source:5) at com.gargoylesoftware.htmlunit.html.parser.neko.HtmlUnitNekoDOMBuilder.parse(HtmlUnitNekoDOMBuilder.java:758) at com.gargoylesoftware.htmlunit.html.parser.neko.HtmlUnitNekoHtmlParser.parse(HtmlUnitNekoHtmlParser.java:204) at com.gargoylesoftware.htmlunit.DefaultPageCreator.createHtmlPage(DefaultPageCreator.java:298) at com.gargoylesoftware.htmlunit.DefaultPageCreator.createPage(DefaultPageCreator.java:218) at com.gargoylesoftware.htmlunit.WebClient.loadWebResponseInto(WebClient.java:686) at com.gargoylesoftware.htmlunit.WebClient.loadWebResponseInto(WebClient.java:588) at com.gargoylesoftware.htmlunit.WebClient.getPage(WebClient.java:506) at com.gargoylesoftware.htmlunit.WebClient.getPage(WebClient.java:413) at com.gargoylesoftware.htmlunit.WebClient.getPage(WebClient.java:551) at com.gargoylesoftware.htmlunit.WebClient.getPage(WebClient.java:533) at java.lang.Thread.run(Thread.java:923) Caused by: java.lang.ClassNotFoundException: Didn't find class "java.awt.datatransfer.ClipboardOwner" on path: DexPathList

Tried some other website and agin getting error.

2022-02-18 17:36:42.943 15961-16024/com.mindedges.whatsapptracker E/JavaScriptErrorListener: Error during JavaScript execution
    ======= EXCEPTION START ========
    EcmaError: lineNumber=[1] column=[0] lineSource=[<no source>] name=[ReferenceError] sourceName=[https://web.whatsapp.com/libsignal-protocol-d27cee2.min.js] message=[ReferenceError: "WebAssembly" is not defined. (https://web.whatsapp.com/libsignal-protocol-d27cee2.min.js#1)]
    com.gargoylesoftware.htmlunit.ScriptException: ReferenceError: "WebAssembly" is not defined. (https://web.whatsapp.com/libsignal-protocol-d27cee2.min.js#1)
        at com.gargoylesoftware.htmlunit.javascript.JavaScriptEngine$HtmlUnitContextAction.run(JavaScriptEngine.java:956)
        at net.sourceforge.htmlunit.corejs.javascript.Context.call(Context.java:582)
        at net.sourceforge.htmlunit.corejs.javascript.ContextFactory.call(ContextFactory.java:481)
        at com.gargoylesoftware.htmlunit.javascript.HtmlUnitContextFactory.callSecured(HtmlUnitContextFactory.java:349)
        at com.gargoylesoftware.htmlunit.javascript.JavaScriptEngine.execute(JavaScriptEngine.java:834)
        at com.gargoylesoftware.htmlunit.javascript.JavaScriptEngine.execute(JavaScriptEngine.java:810)
        at com.gargoylesoftware.htmlunit.javascript.JavaScriptEngine.execute(JavaScriptEngine.java:112)
        at com.gargoylesoftware.htmlunit.html.HtmlPage.loadExternalJavaScriptFile(HtmlPage.java:1037)
        at com.gargoylesoftware.htmlunit.html.ScriptElementSupport.executeScriptIfNeeded(ScriptElementSupport.java:196)
        at com.gargoylesoftware.htmlunit.html.ScriptElementSupport$1.execute(ScriptElementSupport.java:120)
        at com.gargoylesoftware.htmlunit.html.ScriptElementSupport.onAllChildrenAddedToPage(ScriptElementSupport.java:143)
        at com.gargoylesoftware.htmlunit.html.HtmlScript.onAllChildrenAddedToPage(HtmlScript.java:191)
        at com.gargoylesoftware.htmlunit.html.parser.neko.HtmlUnitNekoDOMBuilder.endElement(HtmlUnitNekoDOMBuilder.java:559)
        at org.apache.xerces.parsers.AbstractSAXParser.endElement(Unknown Source:35)
        at com.gargoylesoftware.htmlunit.html.parser.neko.HtmlUnitNekoDOMBuilder.endElement(HtmlUnitNekoDOMBuilder.java:511)
        at net.sourceforge.htmlunit.cyberneko.HTMLTagBalancer.callEndElement(HTMLTagBalancer.java:1247)
        at net.sourceforge.htmlunit.cyberneko.HTMLTagBalancer.endElement(HTMLTagBalancer.java:1172)
        at net.sourceforge.htmlunit.cyberneko.filters.DefaultFilter.endElement(DefaultFilter.java:219)
        at net.sourceforge.htmlunit.cyberneko.filters.NamespaceBinder.endElement(NamespaceBinder.java:312)
        at net.sourceforge.htmlunit.cyberneko.HTMLScanner$ContentScanner.scanEndElement(HTMLScanner.java:3189)
        at net.sourceforge.htmlunit.cyberneko.HTMLScanner$ContentScanner.scan(HTMLScanner.java:2114)
        at net.sourceforge.htmlunit.cyberneko.HTMLScanner.scanDocument(HTMLScanner.java:937)
        at net.sourceforge.htmlunit.cyberneko.HTMLConfiguration.parse(HTMLConfiguration.java:443)
        at net.sourceforge.htmlunit.cyberneko.HTMLConfiguration.parse(HTMLConfiguration.java:394)
        at org.apache.xerces.parsers.XMLParser.parse(Unknown Source:5)
        at com.gargoylesoftware.htmlunit.html.parser.neko.HtmlUnitNekoDOMBuilder.parse(HtmlUnitNekoDOMBuilder.java:758)
        at com.gargoylesoftware.htmlunit.html.parser.neko.HtmlUnitNekoHtmlParser.parse(HtmlUnitNekoHtmlParser.java:204)
        at com.gargoylesoftware.htmlunit.DefaultPageCreator.createHtmlPage(DefaultPageCreator.java:298)
        at com.gargoylesoftware.htmlunit.DefaultPageCreator.createPage(DefaultPageCreator.java:218)
        at com.gargoylesoftware.htmlunit.WebClient.loadWebResponseInto(WebClient.java:686)
        at com.gargoylesoftware.htmlunit.WebClient.loadWebResponseInto(WebClient.java:588)
        at com.gargoylesoftware.htmlunit.WebClient.getPage(WebClient.java:506)
        at com.gargoylesoftware.htmlunit.WebClient.getPage(WebClient.java:413)
        at com.gargoylesoftware.htmlunit.WebClient.getPage(WebClient.java:551)
        at com.gargoylesoftware.htmlunit.WebClient.getPage(WebClient.java:533)
        at com.mindedges.whatsapptracker.FirstFragment.testHtmlUnit(FirstFragment.java:74)
        at com.mindedges.whatsapptracker.FirstFragment.access$000(FirstFragment.java:27)
2022-02-18 17:36:42.943 15961-16024/com.mindedges.whatsapptracker E/JavaScriptErrorListener:     at com.mindedges.whatsapptracker.FirstFragment$1.run(FirstFragment.java:48)
        at java.lang.Thread.run(Thread.java:923)
     Caused by: net.sourceforge.htmlunit.corejs.javascript.EcmaError: ReferenceError: "WebAssembly" is not defined. (https://web.whatsapp.com/libsignal-protocol-d27cee2.min.js#1)
        at net.sourceforge.htmlunit.corejs.javascript.ScriptRuntime.constructError(ScriptRuntime.java:4610)
        at net.sourceforge.htmlunit.corejs.javascript.ScriptRuntime.constructError(ScriptRuntime.java:4591)
        at net.sourceforge.htmlunit.corejs.javascript.ScriptRuntime.notFoundError(ScriptRuntime.java:4679)
        at net.sourceforge.htmlunit.corejs.javascript.ScriptRuntime.nameOrFunction(ScriptRuntime.java:2024)
        at net.sourceforge.htmlunit.corejs.javascript.ScriptRuntime.name(ScriptRuntime.java:1962)
        at net.sourceforge.htmlunit.corejs.javascript.Interpreter.interpretLoop(Interpreter.java:1977)
        at net.sourceforge.htmlunit.corejs.javascript.Interpreter.interpret(Interpreter.java:1053)
        at net.sourceforge.htmlunit.corejs.javascript.InterpretedFunction.call(InterpretedFunction.java:92)
        at net.sourceforge.htmlunit.corejs.javascript.ContextFactory.doTopCall(ContextFactory.java:389)
        at com.gargoylesoftware.htmlunit.javascript.HtmlUnitContextFactory.doTopCall(HtmlUnitContextFactory.java:335)
        at net.sourceforge.htmlunit.corejs.javascript.ScriptRuntime.doTopCall(ScriptRuntime.java:3913)
        at net.sourceforge.htmlunit.corejs.javascript.InterpretedFunction.exec(InterpretedFunction.java:105)
        at com.gargoylesoftware.htmlunit.javascript.JavaScriptEngine$2.doRun(JavaScriptEngine.java:825)
        at com.gargoylesoftware.htmlunit.javascript.JavaScriptEngine$HtmlUnitContextAction.run(JavaScriptEngine.java:939)
            ... 38 more
    Enclosed exception: 
    net.sourceforge.htmlunit.corejs.javascript.EcmaError: ReferenceError: "WebAssembly" is not defined. (https://web.whatsapp.com/libsignal-protocol-d27cee2.min.js#1)
        at net.sourceforge.htmlunit.corejs.javascript.ScriptRuntime.constructError(ScriptRuntime.java:4610)
        at net.
rbri commented 2 years ago

Yes have seen this already - two points

  1. Failed resolution of: Ljava/awt/datatransfer/ClipboardOwner This is one of the remaining problems because not all classes of the standard jdk are available on Android. Good news, i have already fixed that. Please use the latest snapshot build of htmlunit-android 2.59.0-SNAPSHOT. This build no longer requires this class.

  2. ReferenceError: "WebAssembly" is not defined. This is (more or less) expected. HtmlUnit has not support for WebAssembly so far. But usually this in no real problem, the only thing you have to do is to set the WebClientOption setThrowExceptionOnScriptError() to false (if not already done). The exception will still be visible in the log but the js is processed.