Hi everyone,

I have a very simple page that contains a checkbox. On this, I put an
Event observer to catch all click events.  When a simulate a click
with HtmlUnit, an exception is raised (the stack trace is at the end
of this message). I think it's a bug of prototype because this problem
only occurs when i create my webclient with the
BrowserVersion.FIREFOX_3, not with BrowserVersion.IE.

Any idea ???

Thanks in advance ;)


Here is my JSP :
----------------------------------------------- BEGINNING OF THE JSP
------------------------------------------------
<html>
    <head>
        <script type="text/javascript" src="/tutu/js/prototype.js"></
script>
                <script type="text/javascript" language="javascript">
                <!--
                        Event.observe(window, "load", function() {
                                Event.observe("chkAll", "click", 
function(event) {
                                        var element = event.element();
                                        $$("input.chk").each(function(aCheck) {
                                                aCheck.checked = 
element.checked;
                                        });
                                });
                        });

                  //-->
                </script>
    </head>
    <body>

       <input type="checkbox" id="chkAll"/> Select All
       <input type="checkbox" id="chk1" class="chk"/> Value 1
       <input type="checkbox" id="chk2" class="chk"/> Value 2
       <input type="checkbox" id="chk3" class="chk"/> Value 3

    </body>
</html>

---------------------------------------------------- END OF THE JSP
------------------------------------------------------


And the Junit test :

----------------------------------------------- BEGINNING OF THE TEST
------------------------------------------------
public class IndexTest extends TestCase {

  public void testValidateFailure() throws Exception {
    WebClient wc = new WebClient(BrowserVersion.FIREFOX_3);

    HtmlPage page = (HtmlPage) wc.getPage("http://localhost:8080/tutu/
index.jsp");

    HtmlCheckBoxInput selectAll = (HtmlCheckBoxInput)
page.getHtmlElementById("chkAll");
    HtmlCheckBoxInput chk1 = (HtmlCheckBoxInput)
page.getHtmlElementById("chk1");
    HtmlCheckBoxInput chk2 = (HtmlCheckBoxInput)
page.getHtmlElementById("chk2");
    HtmlCheckBoxInput chk3 = (HtmlCheckBoxInput)
page.getHtmlElementById("chk3");

    selectAll.click();

    assertFalse(selectAll.isChecked());
    assertFalse(chk1.isChecked());
    assertFalse(chk2.isChecked());
    assertFalse(chk3.isChecked());

  }

}

---------------------------------------------------- END OF THE TEST
------------------------------------------------------







And, to finish, the stack trace :

======= EXCEPTION START ========
EcmaError: lineNumber=[3743] column=[0] lineSource=[null]
name=[TypeError] sourceName=[http://localhost:8080/tutu/js/
prototype.js] message=[TypeError: Cannot read property "target" from
undefined (http://localhost:8080/tutu/js/prototype.js#3743)]
com.gargoylesoftware.htmlunit.ScriptException: TypeError: Cannot read
property "target" from undefined (http://localhost:8080/tutu/js/
prototype.js#3743)
        at com.gargoylesoftware.htmlunit.javascript.JavaScriptEngine
$HtmlUnitContextAction.run(JavaScriptEngine.java:528)
        at org.mozilla.javascript.Context.call(Context.java:502)
        at org.mozilla.javascript.ContextFactory.call(ContextFactory.java:
511)
        at
com.gargoylesoftware.htmlunit.javascript.JavaScriptEngine.callFunction(JavaScriptEngine.java:
437)
        at
com.gargoylesoftware.htmlunit.html.HtmlPage.executeJavaScriptFunctionIfPossible(HtmlPage.java:
917)
        at
com.gargoylesoftware.htmlunit.javascript.host.EventListenersContainer.executeEventListeners(EventListenersContainer.java:
126)
        at
com.gargoylesoftware.htmlunit.javascript.host.EventListenersContainer.executeBubblingListeners(EventListenersContainer.java:
163)
        at
com.gargoylesoftware.htmlunit.javascript.host.Node.fireEvent(Node.java:
550)
        at com.gargoylesoftware.htmlunit.html.HtmlElement
$2.run(HtmlElement.java:1251)
        at org.mozilla.javascript.Context.call(Context.java:502)
        at org.mozilla.javascript.ContextFactory.call(ContextFactory.java:
511)
        at
com.gargoylesoftware.htmlunit.html.HtmlElement.fireEvent(HtmlElement.java:
1255)
        at
com.gargoylesoftware.htmlunit.html.ClickableElement.click(ClickableElement.java:
136)
        at
com.gargoylesoftware.htmlunit.html.ClickableElement.click(ClickableElement.java:
107)
        at
com.gargoylesoftware.htmlunit.html.ClickableElement.click(ClickableElement.java:
76)
        at IndexTest.testValidateFailure(IndexTest.java:20)
        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:
478)
        at
org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:
344)
        at
org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:
196)
Caused by: org.mozilla.javascript.EcmaError: TypeError: Cannot read
property "target" from undefined (http://localhost:8080/tutu/js/
prototype.js#3743)
        at
org.mozilla.javascript.ScriptRuntime.constructError(ScriptRuntime.java:
3558)
        at
org.mozilla.javascript.ScriptRuntime.constructError(ScriptRuntime.java:
3536)
        at org.mozilla.javascript.ScriptRuntime.typeError(ScriptRuntime.java:
3564)
        at org.mozilla.javascript.ScriptRuntime.typeError2(ScriptRuntime.java:
3583)
        at
org.mozilla.javascript.ScriptRuntime.undefReadError(ScriptRuntime.java:
3596)
        at
org.mozilla.javascript.ScriptRuntime.getObjectProp(ScriptRuntime.java:
1382)
        at org.mozilla.javascript.Interpreter.interpretLoop(Interpreter.java:
3054)
        at org.mozilla.javascript.Interpreter.interpret(Interpreter.java:
2484)
        at
org.mozilla.javascript.InterpretedFunction.call(InterpretedFunction.java:
164)
        at
org.mozilla.javascript.ContextFactory.doTopCall(ContextFactory.java:
401)
        at
com.gargoylesoftware.htmlunit.javascript.HtmlUnitContextFactory.doTopCall(HtmlUnitContextFactory.java:
170)
        at org.mozilla.javascript.ScriptRuntime.doTopCall(ScriptRuntime.java:
3004)
        at
org.mozilla.javascript.InterpretedFunction.call(InterpretedFunction.java:
162)
        at
com.gargoylesoftware.htmlunit.javascript.JavaScriptEngine.callFunction(JavaScriptEngine.java:
465)
        at com.gargoylesoftware.htmlunit.javascript.JavaScriptEngine
$6.doRun(JavaScriptEngine.java:430)
        at com.gargoylesoftware.htmlunit.javascript.JavaScriptEngine
$HtmlUnitContextAction.run(JavaScriptEngine.java:522)
        ... 30 more
Enclosed exception:
org.mozilla.javascript.EcmaError: TypeError: Cannot read property
"target" from undefined (http://localhost:8080/tutu/js/
prototype.js#3743)
        at
org.mozilla.javascript.ScriptRuntime.constructError(ScriptRuntime.java:
3558)
        at
org.mozilla.javascript.ScriptRuntime.constructError(ScriptRuntime.java:
3536)
        at org.mozilla.javascript.ScriptRuntime.typeError(ScriptRuntime.java:
3564)
        at org.mozilla.javascript.ScriptRuntime.typeError2(ScriptRuntime.java:
3583)
        at
org.mozilla.javascript.ScriptRuntime.undefReadError(ScriptRuntime.java:
3596)
        at
org.mozilla.javascript.ScriptRuntime.getObjectProp(ScriptRuntime.java:
1382)
        at org.mozilla.javascript.Interpreter.interpretLoop(Interpreter.java:
3054)
        at script(http://localhost:8080/tutu/js/prototype.js:3743)
        at script(script in http://localhost:8080/tutu/index.jsp from (5, 56)
to (17, 12):9)
        at script(http://localhost:8080/tutu/js/prototype.js:3842)
        at org.mozilla.javascript.Interpreter.interpret(Interpreter.java:
2484)
        at
org.mozilla.javascript.InterpretedFunction.call(InterpretedFunction.java:
164)
        at
org.mozilla.javascript.ContextFactory.doTopCall(ContextFactory.java:
401)
        at
com.gargoylesoftware.htmlunit.javascript.HtmlUnitContextFactory.doTopCall(HtmlUnitContextFactory.java:
170)
        at org.mozilla.javascript.ScriptRuntime.doTopCall(ScriptRuntime.java:
3004)
        at
org.mozilla.javascript.InterpretedFunction.call(InterpretedFunction.java:
162)
        at
com.gargoylesoftware.htmlunit.javascript.JavaScriptEngine.callFunction(JavaScriptEngine.java:
465)
        at com.gargoylesoftware.htmlunit.javascript.JavaScriptEngine
$6.doRun(JavaScriptEngine.java:430)
        at com.gargoylesoftware.htmlunit.javascript.JavaScriptEngine
$HtmlUnitContextAction.run(JavaScriptEngine.java:522)
        at org.mozilla.javascript.Context.call(Context.java:502)
        at org.mozilla.javascript.ContextFactory.call(ContextFactory.java:
511)
        at
com.gargoylesoftware.htmlunit.javascript.JavaScriptEngine.callFunction(JavaScriptEngine.java:
437)
        at
com.gargoylesoftware.htmlunit.html.HtmlPage.executeJavaScriptFunctionIfPossible(HtmlPage.java:
917)
        at
com.gargoylesoftware.htmlunit.javascript.host.EventListenersContainer.executeEventListeners(EventListenersContainer.java:
126)
        at
com.gargoylesoftware.htmlunit.javascript.host.EventListenersContainer.executeBubblingListeners(EventListenersContainer.java:
163)
        at
com.gargoylesoftware.htmlunit.javascript.host.Node.fireEvent(Node.java:
550)
        at com.gargoylesoftware.htmlunit.html.HtmlElement
$2.run(HtmlElement.java:1251)
        at org.mozilla.javascript.Context.call(Context.java:502)
        at org.mozilla.javascript.ContextFactory.call(ContextFactory.java:
511)
        at
com.gargoylesoftware.htmlunit.html.HtmlElement.fireEvent(HtmlElement.java:
1255)
        at
com.gargoylesoftware.htmlunit.html.ClickableElement.click(ClickableElement.java:
136)
        at
com.gargoylesoftware.htmlunit.html.ClickableElement.click(ClickableElement.java:
107)
        at
com.gargoylesoftware.htmlunit.html.ClickableElement.click(ClickableElement.java:
76)
        at IndexTest.testValidateFailure(IndexTest.java:20)
        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:
478)
        at
org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:
344)
        at
org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:
196)
== CALLING JAVASCRIPT ==

  function (event) {
      if (!Event || !Event.extend || (event.eventName &&
event.eventName != eventName)) {
          return false;
      }
      Event.extend(event);
      handler.call(element, event);
  }

======= EXCEPTION END ========


Thanks a lot

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"Prototype & script.aculo.us" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/prototype-scriptaculous?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to