Subj : JavaScript problems with HttpUnit and JSF To : netscape.public.mozilla.jseng From : Michael Borgwardt Date : Wed Nov 24 2004 05:04 pm 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? 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) .