From: Brad C. <yo...@br...> - 2005-03-15 19:22:03
|
It's likely that we're not handling the context properly during the setTimeout: window.setTimeout("formElement.focus();", 400); Could you try re-locating your element instide the setTimeout instead of using the variable? --- Zhenrong Liu <Zhe...@sa...> wrote: > Hey, > > I have a test case which will test invalid text input: after enter an invalid > value in the text input, then click run button, an alert will show up and after > you click OK in the alert wondow, the focus will go back to the input text field > for new input. > .... > final HtmlPage page3 = (HtmlPage)input.click(); > assertEquals(handler.getCollectedAlerts().size(), 1); > .... > The test passed the assertEquals(), but I got JavaScriptException from console: > > ==>> JavaScriptEngine, JavaScriptException occurred: > ======= EXCEPTION START ======== > EcmaError: lineNumber=[1] column=[0] lineSource=[GargoyleWrapper2()] > name=[TypeError] sourceName=[)] message=[TypeError: focus is not a function. > ()#1)] > com.gargoylesoftware.htmlunit.ScriptException: TypeError: focus is not a function. > ()#1) > at > com.gargoylesoftware.htmlunit.javascript.JavaScriptEngine.execute(JavaScriptEngine.java:310) > at > com.gargoylesoftware.htmlunit.html.HtmlPage.executeJavaScriptIfPossible(HtmlPage.java:709) > at com.gargoylesoftware.htmlunit.javascript.host.Window$1.run(Window.java:274) > at java.lang.Thread.run(Unknown Source) > Enclosed exception: > org.mozilla.javascript.EcmaError: TypeError: focus is not a function. ()#1) > at org.mozilla.javascript.ScriptRuntime.constructError(ScriptRuntime.java:3240) > at org.mozilla.javascript.ScriptRuntime.constructError(ScriptRuntime.java:3230) > at org.mozilla.javascript.ScriptRuntime.typeError(ScriptRuntime.java:3246) > at org.mozilla.javascript.ScriptRuntime.typeError1(ScriptRuntime.java:3258) > at org.mozilla.javascript.ScriptRuntime.notFunctionError(ScriptRuntime.java:3317) > at > org.mozilla.javascript.ScriptRuntime.getPropFunctionAndThis(ScriptRuntime.java:1987) > at org.mozilla.javascript.optimizer.OptRuntime.callProp0(OptRuntime.java:114) > at org.mozilla.javascript.gen.c16._c1(Wrapper definition for > Window.setTimeout():1) > at org.mozilla.javascript.gen.c16.call(Wrapper definition for > Window.setTimeout()) > at org.mozilla.javascript.optimizer.OptRuntime.callName0(OptRuntime.java:105) > at org.mozilla.javascript.gen.c17._c0(Window.setTimeout():1) > at org.mozilla.javascript.gen.c17.call(Window.setTimeout()) > at org.mozilla.javascript.ContextFactory.doTopCall(ContextFactory.java:304) > at org.mozilla.javascript.ScriptRuntime.doTopCall(ScriptRuntime.java:2769) > at org.mozilla.javascript.gen.c17.call(Window.setTimeout()) > at org.mozilla.javascript.gen.c17.exec(Window.setTimeout()) > at org.mozilla.javascript.Context.evaluateString(Context.java:1220) > at > com.gargoylesoftware.htmlunit.javascript.JavaScriptEngine.execute(JavaScriptEngine.java:304) > at > com.gargoylesoftware.htmlunit.html.HtmlPage.executeJavaScriptIfPossible(HtmlPage.java:709) > at com.gargoylesoftware.htmlunit.javascript.host.Window$1.run(Window.java:274) > at java.lang.Thread.run(Unknown Source) > == CALLING JAVASCRIPT == > GargoyleWrapper2() > ======= EXCEPTION END ======== > Mar 15, 2005 1:48:17 PM com.gargoylesoftware.htmlunit.javascript.host.Window$1 run > SEVERE: Caught exception in Window.setTimeout() > ======= EXCEPTION START ======== > EcmaError: lineNumber=[1] column=[0] lineSource=[GargoyleWrapper2()] > name=[TypeError] sourceName=[)] message=[TypeError: focus is not a function. > ()#1)] > com.gargoylesoftware.htmlunit.ScriptException: TypeError: focus is not a function. > ()#1) > at > com.gargoylesoftware.htmlunit.javascript.JavaScriptEngine.execute(JavaScriptEngine.java:310) > at > com.gargoylesoftware.htmlunit.html.HtmlPage.executeJavaScriptIfPossible(HtmlPage.java:709) > at com.gargoylesoftware.htmlunit.javascript.host.Window$1.run(Window.java:274) > at java.lang.Thread.run(Unknown Source) > Enclosed exception: > org.mozilla.javascript.EcmaError: TypeError: focus is not a function. ()#1) > at org.mozilla.javascript.ScriptRuntime.constructError(ScriptRuntime.java:3240) > at org.mozilla.javascript.ScriptRuntime.constructError(ScriptRuntime.java:3230) > at org.mozilla.javascript.ScriptRuntime.typeError(ScriptRuntime.java:3246) > at org.mozilla.javascript.ScriptRuntime.typeError1(ScriptRuntime.java:3258) > at org.mozilla.javascript.ScriptRuntime.notFunctionError(ScriptRuntime.java:3317) > at > org.mozilla.javascript.ScriptRuntime.getPropFunctionAndThis(ScriptRuntime.java:1987) > at org.mozilla.javascript.optimizer.OptRuntime.callProp0(OptRuntime.java:114) > at org.mozilla.javascript.gen.c16._c1(Wrapper definition for > Window.setTimeout():1) > at org.mozilla.javascript.gen.c16.call(Wrapper definition for > Window.setTimeout()) > at org.mozilla.javascript.optimizer.OptRuntime.callName0(OptRuntime.java:105) > at org.mozilla.javascript.gen.c17._c0(Window.setTimeout():1) > at org.mozilla.javascript.gen.c17.call(Window.setTimeout()) > at org.mozilla.javascript.ContextFactory.doTopCall(ContextFactory.java:304) > at org.mozilla.javascript.ScriptRuntime.doTopCall(ScriptRuntime.java:2769) > at org.mozilla.javascript.gen.c17.call(Window.setTimeout()) > at org.mozilla.javascript.gen.c17.exec(Window.setTimeout()) > at org.mozilla.javascript.Context.evaluateString(Context.java:1220) > at > com.gargoylesoftware.htmlunit.javascript.JavaScriptEngine.execute(JavaScriptEngine.java:304) > at > com.gargoylesoftware.htmlunit.html.HtmlPage.executeJavaScriptIfPossible(HtmlPage.java:709) > at com.gargoylesoftware.htmlunit.javascript.host.Window$1.run(Window.java:274) > at java.lang.Thread.run(Unknown Source) > == CALLING JAVASCRIPT == > GargoyleWrapper2() > ======= EXCEPTION END ======== > > I checked the JavaScript and I believe the offfending code is: > > if (maxValue != null && elementValue.length != 0 && elementValue > maxValue) { > > alert(SAS_substituteL10N(dynamicPP_validate_msg16,elementName,maxValue,maxValExclusiveMessage)); > showContent(theObject.menuItemName, theObject.menuItemName, > theObject.contentElementName); > window.setTimeout("formElement.focus();", 400); > return true; > } > > But I don't have a clue how to fix this and I was wondering if someone can shed > some light? > > Thanks, > -Zhenrong |