Subj : Re: JavaScript problems with HttpUnit and JSF To : Michael Borgwardt From : Igor Bukanov Date : Wed Nov 24 2004 09:05 pm Michael Borgwardt wrote: > Hi! > > I'm currently tring to use HttpUnit for writing system tests for a JSF > (java ServerFaces) > application, and failing miserably. HttpUnit uses Rhino 1.5R4.1 for > executing JavaScript, > and JSF uses JavaScript for navigation. > > The result is invariably the same, see below. The Javascript function > looks OK to me, > and the form and elements are definitely present in the page. Is this a > bug in Rhino > or in HttpUnit? AFAICS this is not a Rhino bug: the stack trace points to HttpUnit JavaScript bindings. Regards, Igor > > > > java.lang.NullPointerException > at > com.meterware.httpunit.TextFormControl$Scriptable.set(FormControl.java:793) > at > com.meterware.httpunit.javascript.JavaScript$JavaScriptEngine.put(JavaScript.java:275) > > at org.mozilla.javascript.ScriptRuntime.setProp(ScriptRuntime.java:832) > at org.mozilla.javascript.gen.c1.call(httpunit:2) > at > org.mozilla.javascript.optimizer.OptRuntime.callSimple(OptRuntime.java:281) > at org.mozilla.javascript.gen.c2.call(httpunit:5) > at org.mozilla.javascript.gen.c2.exec(httpunit) > at org.mozilla.javascript.Context.evaluateReader(Context.java:773) > at org.mozilla.javascript.Context.evaluateString(Context.java:737) > at > com.meterware.httpunit.javascript.JavaScript$JavaScriptEngine.executeScript(JavaScript.java:132) > > at > com.meterware.httpunit.scripting.ScriptableDelegate.runScript(ScriptableDelegate.java:65) > > at > com.meterware.httpunit.parsing.ScriptFilter.getTranslatedScript(ScriptFilter.java:151) > > at > com.meterware.httpunit.parsing.ScriptFilter.endElement(ScriptFilter.java:131) > > at org.cyberneko.html.filters.DefaultFilter.endElement(Unknown Source) > at org.cyberneko.html.filters.NamespaceBinder.endElement(Unknown > Source) > at org.cyberneko.html.HTMLTagBalancer.callEndElement(Unknown Source) > at org.cyberneko.html.HTMLTagBalancer.endElement(Unknown Source) > at org.cyberneko.html.HTMLScanner$SpecialScanner.scan(Unknown Source) > at org.cyberneko.html.HTMLScanner.scanDocument(Unknown Source) > at org.cyberneko.html.HTMLConfiguration.parse(Unknown Source) > at org.cyberneko.html.HTMLConfiguration.parse(Unknown Source) > 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:41) > at com.meterware.httpunit.HTMLPage.parse(HTMLPage.java:255) > at > com.meterware.httpunit.WebResponse.getReceivedPage(WebResponse.java:1126) > at > com.meterware.httpunit.WebResponse$Scriptable.load(WebResponse.java:688) > at > com.meterware.httpunit.javascript.JavaScript.load(JavaScript.java:89) > at > com.meterware.httpunit.javascript.JavaScriptEngineFactory.load(JavaScriptEngineFactory.java:58) > > at > com.meterware.httpunit.RequestContext.runScripts(RequestContext.java:44) > at com.meterware.httpunit.WebWindow.getResponse(WebWindow.java:122) > at com.meterware.httpunit.WebWindow.updateWindow(WebWindow.java:144) > at > com.meterware.httpunit.WebWindow.getSubframeResponse(WebWindow.java:130) > at com.meterware.httpunit.WebWindow.getResponse(WebWindow.java:121) > at com.meterware.httpunit.WebClient.getResponse(WebClient.java:113) > at de.ovsag.cool.HttpTest.testHttpUnit(HttpTest.java:42) > at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) > at > sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) > > at > sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) > > at java.lang.reflect.Method.invoke(Method.java:585) > at junit.framework.TestCase.runTest(TestCase.java:154) > at junit.framework.TestCase.runBare(TestCase.java:127) > at junit.framework.TestResult$1.protect(TestResult.java:106) > at junit.framework.TestResult.runProtected(TestResult.java:124) > at junit.framework.TestResult.run(TestResult.java:109) > at junit.framework.TestCase.run(TestCase.java:118) > at junit.framework.TestSuite.runTest(TestSuite.java:208) > at junit.framework.TestSuite.run(TestSuite.java:203) > at > org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:421) > > at > org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:305) > > at > org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:186) > > java.lang.RuntimeException: Script 'function clear_linkDummyForm() { > var f = document.forms['linkDummyForm']; > f.elements['linkDummyForm:_link_hidden_'].value=null; > f.target=''; > } > clear_linkDummyForm(); > //' failed: java.lang.NullPointerException > at > com.meterware.httpunit.javascript.JavaScript$JavaScriptEngine.handleScriptException(JavaScript.java:199) > > at > com.meterware.httpunit.javascript.JavaScript$JavaScriptEngine.executeScript(JavaScript.java:136) > > at > com.meterware.httpunit.scripting.ScriptableDelegate.runScript(ScriptableDelegate.java:65) > > at > com.meterware.httpunit.parsing.ScriptFilter.getTranslatedScript(ScriptFilter.java:151) > > at > com.meterware.httpunit.parsing.ScriptFilter.endElement(ScriptFilter.java:131) > > at org.cyberneko.html.filters.DefaultFilter.endElement(Unknown Source) > at org.cyberneko.html.filters.NamespaceBinder.endElement(Unknown > Source) > at org.cyberneko.html.HTMLTagBalancer.callEndElement(Unknown Source) > at org.cyberneko.html.HTMLTagBalancer.endElement(Unknown Source) > at org.cyberneko.html.HTMLScanner$SpecialScanner.scan(Unknown Source) > at org.cyberneko.html.HTMLScanner.scanDocument(Unknown Source) > at org.cyberneko.html.HTMLConfiguration.parse(Unknown Source) > at org.cyberneko.html.HTMLConfiguration.parse(Unknown Source) > 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:41) > at com.meterware.httpunit.HTMLPage.parse(HTMLPage.java:255) > at > com.meterware.httpunit.WebResponse.getReceivedPage(WebResponse.java:1126) > at > com.meterware.httpunit.WebResponse$Scriptable.load(WebResponse.java:688) > at > com.meterware.httpunit.javascript.JavaScript.load(JavaScript.java:89) > at > com.meterware.httpunit.javascript.JavaScriptEngineFactory.load(JavaScriptEngineFactory.java:58) > > at > com.meterware.httpunit.RequestContext.runScripts(RequestContext.java:44) > at com.meterware.httpunit.WebWindow.getResponse(WebWindow.java:122) > at com.meterware.httpunit.WebWindow.updateWindow(WebWindow.java:144) > at > com.meterware.httpunit.WebWindow.getSubframeResponse(WebWindow.java:130) > at com.meterware.httpunit.WebWindow.getResponse(WebWindow.java:121) > at com.meterware.httpunit.WebClient.getResponse(WebClient.java:113) > at de.ovsag.cool.HttpTest.testHttpUnit(HttpTest.java:42) > at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) > at > sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) > > at > sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) > > at java.lang.reflect.Method.invoke(Method.java:585) > at junit.framework.TestCase.runTest(TestCase.java:154) > at junit.framework.TestCase.runBare(TestCase.java:127) > at junit.framework.TestResult$1.protect(TestResult.java:106) > at junit.framework.TestResult.runProtected(TestResult.java:124) > at junit.framework.TestResult.run(TestResult.java:109) > at junit.framework.TestCase.run(TestCase.java:118) > at junit.framework.TestSuite.runTest(TestSuite.java:208) > at junit.framework.TestSuite.run(TestSuite.java:203) > at > org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:421) > > at > org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:305) > > at > org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:186) > .