2009-07-22 9 views
3

Ich überweise ein Formular mit dem Java HtmlUnit-Paket. Ich kann Seiten abrufen und Formulare senden, aber auf einer Seite erhalte ich einen ScriptException-Fehler. Die Botschaft ist, „kann nicht eingestellt Eigenschaft‚disabled‘undefinierter auf‚0‘“HtmlUnit Eigenschaft undefinierter Skriptfehler

ich denke, es könnte durch eine Javascript-Methode verursacht werden, die eine Variable zu setzen versucht, die in der Form nicht erklärt hat, aber ich bin nicht sicher.

tempForm = MyPage.getFormByName("menu_form"); 
tempForm.getInputByName("userId").setValueAttribute("myusername"); 
HtmlPage editSubscriberPage = (HtmlPage) 
tempForm.getInputByName("submit_button").click(); 



EcmaError: lineNumber=[824] column=[0] lineSource=[null] name=[TypeError] sourceName=[script in https://labserver.comp.com/mcwebadm/cgi-bin/edit_local.pl?operation=edit&return_address=%2Fmcwebadm%2Fcgi-bin%2Fmenu.pl&selected=2322020c341b11de96c3000423d43f1d from (9, 32) to (840, 15)] message=[TypeError: Cannot set property "disabled" of undefined to "0" (script in https://myserver.company.com/mcwebadm/cgi-bin/edit_local.pl?operation=edit&return_address=%2Fmcwebadm%2Fcgi-bin%2Fmenu.pl&selected=22020c341b11de96c3000423d43f1d from (9, 32) to (840, 15)#824)] 
com.gargoylesoftware.htmlunit.ScriptException: TypeError: Cannot set property "disabled" of undefined to "0" (script in https://labserver.comp.com/mcwebadm/cgi-bin/edit_local.pl?operation=edit&return_address=%2Fmcwebadm%2Fcgi-bin%2Fmenu.pl&selected=22020c341b11de96c3000423d43f1d from (9, 32) to (840, 15)#824) 
    at com.gargoylesoftware.htmlunit.javascript.JavaScriptEngine$HtmlUnitContextAction.run(JavaScriptEngine.java:534) 
    at net.sourceforge.htmlunit.corejs.javascript.Context.call(Context.java:515) 
    at net.sourceforge.htmlunit.corejs.javascript.ContextFactory.call(ContextFactory.java:507) 
    at com.gargoylesoftware.htmlunit.javascript.JavaScriptEngine.callFunction(JavaScriptEngine.java:464) 
    at com.gargoylesoftware.htmlunit.html.HtmlPage.executeJavaScriptFunctionIfPossible(HtmlPage.java:992) 
    at com.gargoylesoftware.htmlunit.javascript.host.EventListenersContainer.executeEventHandler(EventListenersContainer.java:164) 
    at com.gargoylesoftware.htmlunit.javascript.host.EventListenersContainer.executeBubblingListeners(EventListenersContainer.java:177) 
    at com.gargoylesoftware.htmlunit.javascript.host.Node.fireEvent(Node.java:584) 
    at com.gargoylesoftware.htmlunit.html.HtmlElement$2.run(HtmlElement.java:936) 
    at net.sourceforge.htmlunit.corejs.javascript.Context.call(Context.java:515) 
    at net.sourceforge.htmlunit.corejs.javascript.ContextFactory.call(ContextFactory.java:507) 
    at com.gargoylesoftware.htmlunit.html.HtmlElement.fireEvent(HtmlElement.java:941) 
    at com.gargoylesoftware.htmlunit.html.HtmlPage.executeEventHandlersIfNeeded(HtmlPage.java:1237) 
    at com.gargoylesoftware.htmlunit.html.HtmlPage.initialize(HtmlPage.java:183) 
    at com.gargoylesoftware.htmlunit.WebClient.loadWebResponseInto(WebClient.java:449) 
    at com.gargoylesoftware.htmlunit.WebClient.getPage(WebClient.java:329) 
    at com.gargoylesoftware.htmlunit.WebClient.getPage(WebClient.java:354) 
    at com.gargoylesoftware.htmlunit.html.HtmlForm.submit(HtmlForm.java:179) 
    at com.gargoylesoftware.htmlunit.html.HtmlSubmitInput.doClickAction(HtmlSubmitInput.java:82) 
    at com.gargoylesoftware.htmlunit.html.HtmlElement.click(HtmlElement.java:1329) 
    at com.gargoylesoftware.htmlunit.html.HtmlElement.click(HtmlElement.java:1288) 
    at com.gargoylesoftware.htmlunit.html.HtmlElement.click(HtmlElement.java:1257) 
    at TestOne.run(TestOne.java:77) 
    at TestOne.main(TestOne.java:215) 
+0

Ist die Anzeige der gleichen Seite in einem Browser erzeugen einen JS Fehler entdeckt? – seth

+0

Ich habe es gerade noch einmal getestet und habe gerade bemerkt, dass die Seite, die geladen wird, einen JS-Fehler hat. Gibt es eine Möglichkeit, wie ich HtmlUnit so weitermachen kann? – Ben

Antwort

3

Dies wurde mein Javascript Fehler auf der Seite verursacht, die geladen wurde. I setzen die

webClient.getOptions() setThrowExceptionOnScriptError (false).

aber es war immer noch die Ausnahme.

LÖSUNG: Wenn Sie die ScriptException abfangen, ist die Seite noch voll geladen und Sie können einfach weiterarbeiten und die Ausnahme ignorieren.

Beispiel von HTML, die fehlschlägt:

<html> 
<Head><title>JS Test</title> 
    <script type="text/javascript"> 
     function run_js() 
     { 
       form.myinput.value = "from on body"; 
//    document.myform.myinput.value = "from body"; 
     } 
     </script> 
    </head> 

<body onload="run_js()"> 
    The Body. 
    <form name="myform"> 
     <input name="myinput" type="text"/> 
    </form> 
</body> 
</html> 
0

Können Sie eine öffentliche Website zum Testen bereitstellen? Da ich den JS nicht in https://mmlab1msslnx.fmr.com/mcwebadm/cgi-bin/edit_local.pl?operation=edit&return_address=%2Fmcwebadm%2Fcgi-bin%2Fmenu.pl&selected=22020c341b11de96c3000423d43f1d

laden kann, verwenden Sie bitte die neueste HtmlUnit 2.5 Version.

+0

Ich kann keinen öffentlichen Testfall bereitstellen. Ich arbeite daran, einen zu erstellen. Ich habe überprüft und ich benutze Version 2.5. Ich hatte gehofft, jemand hätte etwas ähnliches gesehen. – Ben

Verwandte Themen