HtmlUnit / htmlunit

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

ScriptException (missing formal parameter) when trying to access a simple page #158

Open LucasLaacerda opened 4 years ago

LucasLaacerda commented 4 years ago

I need to load a page but it is returning failures

Code: `import org.jsoup.Jsoup; import org.jsoup.nodes.Document; import org.junit.Test;

import com.gargoylesoftware.htmlunit.WebClient; import com.gargoylesoftware.htmlunit.html.HtmlDivision; import com.gargoylesoftware.htmlunit.html.HtmlPage; import com.gargoylesoftware.htmlunit.javascript.host.dom.NodeList;

public class WebCaptura {

 public static void main(String[] args){

     //String url = "https://g1.globo.com/";

    try(final WebClient webClient = new WebClient()) {
         final HtmlPage page = webClient.getPage("https://g1.globo.com/");

    }catch (Exception e) {
        e.printStackTrace();
    }

}

} `

log:

03:33:06.166 [main] ERROR com.gargoylesoftware.htmlunit.javascript.DefaultJavaScriptErrorListener - Error during JavaScript execution com.gargoylesoftware.htmlunit.ScriptException: missing formal parameter (script in https://g1.globo.com/ from (60, 66) to (77, 981)#60) at com.gargoylesoftware.htmlunit.javascript.JavaScriptEngine$HtmlUnitContextAction.run(JavaScriptEngine.java:883) at net.sourceforge.htmlunit.corejs.javascript.Context.call(Context.java:617) at net.sourceforge.htmlunit.corejs.javascript.ContextFactory.call(ContextFactory.java:534) at com.gargoylesoftware.htmlunit.javascript.HtmlUnitContextFactory.callSecured(HtmlUnitContextFactory.java:336) at com.gargoylesoftware.htmlunit.javascript.JavaScriptEngine.compile(JavaScriptEngine.java:714) at com.gargoylesoftware.htmlunit.javascript.JavaScriptEngine.compile(JavaScriptEngine.java:680) at com.gargoylesoftware.htmlunit.javascript.JavaScriptEngine.execute(JavaScriptEngine.java:726) at com.gargoylesoftware.htmlunit.html.HtmlPage.executeJavaScript(HtmlPage.java:922) at com.gargoylesoftware.htmlunit.html.HtmlScript.executeInlineScriptIfNeeded(HtmlScript.java:306) at com.gargoylesoftware.htmlunit.html.HtmlScript.executeScriptIfNeeded(HtmlScript.java:396) at com.gargoylesoftware.htmlunit.html.HtmlScript$2.execute(HtmlScript.java:236) at com.gargoylesoftware.htmlunit.html.HtmlScript.onAllChildrenAddedToPage(HtmlScript.java:257) at com.gargoylesoftware.htmlunit.html.HTMLParser$HtmlUnitDOMBuilder.endElement(HTMLParser.java:792) at org.apache.xerces.parsers.AbstractSAXParser.endElement(Unknown Source) at com.gargoylesoftware.htmlunit.html.HTMLParser$HtmlUnitDOMBuilder.endElement(HTMLParser.java:748) at net.sourceforge.htmlunit.cyberneko.HTMLTagBalancer.callEndElement(HTMLTagBalancer.java:1175) at net.sourceforge.htmlunit.cyberneko.HTMLTagBalancer.endElement(HTMLTagBalancer.java:1115) at net.sourceforge.htmlunit.cyberneko.filters.DefaultFilter.endElement(DefaultFilter.java:219) at net.sourceforge.htmlunit.cyberneko.filters.NamespaceBinder.endElement(NamespaceBinder.java:303) at net.sourceforge.htmlunit.cyberneko.HTMLScanner$ContentScanner.scanEndElement(HTMLScanner.java:3146) at net.sourceforge.htmlunit.cyberneko.HTMLScanner$ContentScanner.scan(HTMLScanner.java:2074) at net.sourceforge.htmlunit.cyberneko.HTMLScanner.scanDocument(HTMLScanner.java:922) at net.sourceforge.htmlunit.cyberneko.HTMLConfiguration.parse(HTMLConfiguration.java:438) at net.sourceforge.htmlunit.cyberneko.HTMLConfiguration.parse(HTMLConfiguration.java:389) at org.apache.xerces.parsers.XMLParser.parse(Unknown Source) at com.gargoylesoftware.htmlunit.html.HTMLParser$HtmlUnitDOMBuilder.parse(HTMLParser.java:991) at com.gargoylesoftware.htmlunit.html.HTMLParser.parse(HTMLParser.java:246) at com.gargoylesoftware.htmlunit.html.HTMLParser.parseHtml(HTMLParser.java:190) at com.gargoylesoftware.htmlunit.DefaultPageCreator.createHtmlPage(DefaultPageCreator.java:269) at com.gargoylesoftware.htmlunit.DefaultPageCreator.createPage(DefaultPageCreator.java:160) at com.gargoylesoftware.htmlunit.WebClient.loadWebResponseInto(WebClient.java:534) at com.gargoylesoftware.htmlunit.WebClient.getPage(WebClient.java:400) at com.gargoylesoftware.htmlunit.WebClient.getPage(WebClient.java:317) at com.gargoylesoftware.htmlunit.WebClient.getPage(WebClient.java:469) at com.gargoylesoftware.htmlunit.WebClient.getPage(WebClient.java:450) at br.com.noticias.g1.WebCaptura.main(WebCaptura.java:27) Caused by: net.sourceforge.htmlunit.corejs.javascript.EvaluatorException: missing formal parameter (script in https://g1.globo.com/ from (60, 66) to (77, 981)#60) at com.gargoylesoftware.htmlunit.javascript.HtmlUnitContextFactory$HtmlUnitErrorReporter.error(HtmlUnitContextFactory.java:420) at net.sourceforge.htmlunit.corejs.javascript.Parser.addError(Parser.java:259) at net.sourceforge.htmlunit.corejs.javascript.Parser.reportError(Parser.java:327) at net.sourceforge.htmlunit.corejs.javascript.Parser.reportError(Parser.java:321) at net.sourceforge.htmlunit.corejs.javascript.Parser.arrowFunctionParams(Parser.java:1068) at net.sourceforge.htmlunit.corejs.javascript.Parser.arrowFunctionParams(Parser.java:1051) at net.sourceforge.htmlunit.corejs.javascript.Parser.arrowFunctionParams(Parser.java:1050) at net.sourceforge.htmlunit.corejs.javascript.Parser.arrowFunctionParams(Parser.java:1050) at net.sourceforge.htmlunit.corejs.javascript.Parser.arrowFunction(Parser.java:1005) at net.sourceforge.htmlunit.corejs.javascript.Parser.assignExpr(Parser.java:2379)

rbri commented 4 years ago

Hi Lucas,

looks like a problem with the js in the page. There is code like b=new Map([...o(e.ex),...o(e.im)]) in fact this uses the javascript rest operator and this is unfortunately not supported by rhino so far.

And btw: The page is not simple, is like any other news page a horrible monster filled with tons of js to confuse and track the user....

twendelmuth commented 4 years ago

Issue on rhino side: https://github.com/mozilla/rhino/issues/652

rbri commented 5 months ago

see #755