[Webtest] AJAX Support

Marc Guillemot Marc Guillemot <mguillemot@yahoo.fr>
Thu, 07 Jun 2007 14:09:35 +0200


Hi Michal,

this has been fixed in htmlunit since 1.11. You can try to replace the
lib/htmlunit-1.11.jar with the latest htmlunit build (for instance from
http://build.canoo.com/htmlunit/artifacts/).

Marc.

Michal wrote:
> I updated webtest to R_1574 and the problem still persists.
> 
> There are 2 simple select boxes, first one changes, second one is
> reloaded using AJAX.
> 
>                                 <setSelectField
>                                         description="Select offering type"
>                                         htmlid="fOfferingType"
>                                         text="Application Support"
>                                 />
>                                 <sleep description="12s pause"
> seconds="12" />
>                                 <setSelectField
>                                         description="Select offering
> subtype"
>                                         htmlid="fOfferingSubtype"
>                                         value="Other"
>                                 />
> 
> Relevant log:
> 
> [setSelectField]  INFO (com.canoo.webtest.steps.Step) - >>>> Start Step:
> setSelectField "Select offering type" (13/15)
>     [sleep] java.lang.NullPointerException
>     [sleep]     at
> com.gargoylesoftware.htmlunit.javascript.OptionsArray.get(OptionsArray.java:102)
>     [sleep]     at
> org.mozilla.javascript.ScriptableObject.getProperty(ScriptableObject.java:1343)
>     [sleep]     at
> org.mozilla.javascript.ScriptRuntime.getObjectElem(ScriptRuntime.java:1304)
>     [sleep]     at
> org.mozilla.javascript.ScriptRuntime.getObjectElem(ScriptRuntime.java:1288)
>     [sleep]     at
> org.mozilla.javascript.Interpreter.interpretLoop(Interpreter.java(Compiled
> Code))
>     [sleep]     at
> org.mozilla.javascript.Interpreter.interpret(Interpreter.java:2251)
>     [sleep]     at
> org.mozilla.javascript.InterpretedFunction.call(InterpretedFunction.java:161)
>     [sleep]     at
> org.mozilla.javascript.ContextFactory.doTopCall(ContextFactory.java:340)
>     [sleep]     at
> com.gargoylesoftware.htmlunit.javascript.HtmlUnitContextFactory.doTopCall(HtmlUnitContextFactory.java:151)
>     [sleep]     at
> org.mozilla.javascript.ScriptRuntime.doTopCall(ScriptRuntime.java:2758)
>     [sleep]     at
> org.mozilla.javascript.InterpretedFunction.call(InterpretedFunction.java:159)
>     [sleep]     at
> com.gargoylesoftware.htmlunit.javascript.JavaScriptEngine.callFunction(JavaScriptEngine.java:363)
>     [sleep]     at
> com.gargoylesoftware.htmlunit.javascript.host.XMLHttpRequest.setState(XMLHttpRequest.java:145)
>     [sleep]     at
> com.gargoylesoftware.htmlunit.javascript.host.XMLHttpRequest.doSend(XMLHttpRequest.java:375)
>     [sleep]     at
> com.gargoylesoftware.htmlunit.javascript.host.XMLHttpRequest.access$000(XMLHttpRequest.java:72)
>     [sleep]     at
> com.gargoylesoftware.htmlunit.javascript.host.XMLHttpRequest$1.run(XMLHttpRequest.java:328)
>     [sleep]     at java.lang.Thread.run(Thread.java:570)
>     [sleep]     at
> com.gargoylesoftware.htmlunit.ThreadManager$1.run(ThreadManager.java:118)
> [setSelectField]  INFO (com.canoo.webtest.steps.Step) - >>>> Start Step:
> setSelectField "Select offering subtype" (15/15)
> [setSelectField]  INFO (com.canoo.webtest.steps.Step) - Running with:
> Canoo Webtest: R_1574.
> [setSelectField]  INFO (com.canoo.webtest.steps.Step) - Exception thrown
> from this class: com.canoo.webtest.engine.StepFailedException
> [setSelectField]  INFO (com.canoo.webtest.steps.Step) - Message was: No
> option found matching criteria in select HtmlSelect[<select
> name="fOfferingSubtype" id="fOfferingSubtype" class="body-text-small "
> onchange="showRelevantCountries();">]
>  INFO (com.canoo.webtest.steps.Step) - Running with: Canoo Webtest: R_1574.
>  INFO (com.canoo.webtest.steps.Step) - Exception thrown from this class:
> com.canoo.webtest.engine.StepFailedException
>  INFO (com.canoo.webtest.steps.Step) - Message was: No option found
> matching criteria in select HtmlSelect[<select name="fOfferingSubtype"
> id="fOfferingSubtype" class="body-text-small "
> onchange="showRelevantCountries();">]
>  
> 
> Any ideas why it doesn't work?
> You can replicate on the simplest example:
> <select name="offType" onchange="populatesubOffType();">
>     <options>....</options>
> </select>
> <select name="subOffType">
>     <options>....</options>
> </select>
> 
> uhmm wrote:
>> I searched using find / -iname "*htmlunit*" and I found only one on
>> the whole disk. Version 1.11
>>
>>
>> Thursday, April 5, 2007, 9:01:13 AM, you wrote:
>>
>> MG> Have you searched on your whole disk for htmlunit*.jar?
>>
>> MG> Marc.
>>
>> MG> uhmm@1234.sk wrote:
>>   
>>>> How can I find out if it is a classpath problem? There so no
>>>> other htmlunit code on the machine.
>>>>
>>>>
>>>> ----- Original Message -----
>>>> From: Marc Guillemot <mguillemot@yahoo.fr>
>>>> To: webtest@lists.canoo.com
>>>> Subject: Re: [Webtest] AJAX Support
>>>> Date: Wed, 4 Apr 2007 06:05:56 -0700 (PDT)
>>>>
>>>>       
>>>>> Hi,
>>>>>
>>>>> I think that you have some classpath problem and that an
>>>>> older version of htmlunit is used because in htmlunit 1.11
>>>>> (the one now provided with WebTest) no
>>>>> NullPointerException can occur at line 102 of
>>>>> OptionsArray.
>>>>>
>>>>> Marc.
>>>>>
>>>>>
>>>>> uhmm@1234.sk wrote:
>>>>>         
>>>>>> Hey there,
>>>>>> I've been looking around internet for ajax support in
>>>>>> webtest, but
>>>>>> haven't found anything what would help me. Hope people
>>>>>> here can...
>>>>>>
>>>>>> I have school example of ajax usage. 2 dropdowns, first
>>>>>> one is
>>>>>> changed, second one is updated. How shall I create test
>>>>>> steps?
>>>>>>
>>>>>> Easy it may seem, but it's not. Here is my try:
>>>>>>
>>>>>> <setSelectField
>>>>>>        description="Select offering type"
>>>>>>        htmlid="fOfferingType"
>>>>>>        text="Application Support"
>>>>>> />
>>>>>> <sleep description="12s pause" seconds="12" />
>>>>>> <setSelectField
>>>>>>        description="Select offering subtype"
>>>>>>        htmlid="fOfferingSubtype"
>>>>>>        value="Other"
>>>>>> />
>>>>>>
>>>>>> Errors I'm getting:
>>>>>> [setSelectField]  INFO (com.canoo.webtest.steps.Step) -
>>>>>>           
>>>>>>>>>> Start
>>>>>>>>>>                   
>>>>>> Step: setSelectField "Select offering type" (13/15)
>>>>>>    [sleep] java.lang.NullPointerException
>>>>>>    [sleep]     at
>>>>>>
>>>>>>           
>>>>> com.gargoylesoftware.htmlunit.javascript.OptionsArray.get(
>>>>>         
>>>>>>    OptionsArray.java:102) [sleep]     at
>>>>>>
>>>>>>           
>>>>> org.mozilla.javascript.ScriptableObject.getProperty(Script
>>>>>         
>>>>>>    ableObject.java:1343) [sleep]     at
>>>>>>
>>>>>>           
>>>>> org.mozilla.javascript.ScriptRuntime.getObjectElem(ScriptR
>>>>>         
>>>>>>    untime.java:1304) [sleep]     at
>>>>>>
>>>>>>           
>>>>> org.mozilla.javascript.ScriptRuntime.getObjectElem(ScriptR
>>>>>         
>>>>>>    untime.java:1288) [sleep]     at
>>>>>>
>>>>>>           
>>>>> org.mozilla.javascript.Interpreter.interpretLoop(Interpret
>>>>>         
>>>>>> er.java(Compiled Code))
>>>>>>    [sleep]     at
>>>>>>
>>>>>>           
>>>>> org.mozilla.javascript.Interpreter.interpret(Interpreter.j
>>>>>         
>>>>>>    ava:2251) [sleep]     at
>>>>>>
>>>>>>           
>>>>> org.mozilla.javascript.InterpretedFunction.call(Interprete
>>>>>         
>>>>>>    dFunction.java:161) [sleep]     at
>>>>>>
>>>>>>           
>>>>> org.mozilla.javascript.ContextFactory.doTopCall(ContextFac
>>>>>         
>>>>>>    tory.java:340) [sleep]     at
>>>>>>
>>>>>>           
>>>>> com.gargoylesoftware.htmlunit.javascript.HtmlUnitContextFa
>>>>>         
>>>>>>    ctory.doTopCall(HtmlUnitContextFactory.java:151)
>>>>>> [sleep]     at
>>>>>>           
>>>>> org.mozilla.javascript.ScriptRuntime.doTopCall(ScriptRunti
>>>>>         
>>>>>>    me.java:2758) [sleep]     at
>>>>>>
>>>>>>           
>>>>> org.mozilla.javascript.InterpretedFunction.call(Interprete
>>>>>         
>>>>>>    dFunction.java:159) [sleep]     at
>>>>>>
>>>>>>           
>>>>> com.gargoylesoftware.htmlunit.javascript.JavaScriptEngine.
>>>>>         
>>>>>>    callFunction(JavaScriptEngine.java:363) [sleep]    
>>>>>> at
>>>>>>           
>>>>> com.gargoylesoftware.htmlunit.javascript.host.XMLHttpReque
>>>>>         
>>>>>>    st.setState(XMLHttpRequest.java:145) [sleep]     at
>>>>>>
>>>>>>           
>>>>> com.gargoylesoftware.htmlunit.javascript.host.XMLHttpReque
>>>>>         
>>>>>>    st.doSend(XMLHttpRequest.java:375) [sleep]     at
>>>>>>
>>>>>>           
>>>>> com.gargoylesoftware.htmlunit.javascript.host.XMLHttpReque
>>>>>         
>>>>>>    st.access$000(XMLHttpRequest.java:72) [sleep]     at
>>>>>>
>>>>>>           
>>>>> com.gargoylesoftware.htmlunit.javascript.host.XMLHttpReque
>>>>>         
>>>>>>    st$1.run(XMLHttpRequest.java:328) [sleep]     at
>>>>>>    java.lang.Thread.run(Thread.java:570) [sleep]     at
>>>>>>
>>>>>>           
>>>>> com.gargoylesoftware.htmlunit.ThreadManager$1.run(ThreadMa
>>>>>         
>>>>>> nager.java:118) [setSelectField]  INFO
>>>>>> (com.canoo.webtest.steps.Step) - >>>> Start
>>>>>> Step: setSelectField "Select offering subtype" (15/15)
>>>>>> [setSelectField]  INFO (com.canoo.webtest.steps.Step) -
>>>>>> Running with:
>>>>>> Canoo Webtest: R_1537.
>>>>>> [setSelectField]  INFO (com.canoo.webtest.steps.Step) -
>>>>>> Exception
>>>>>> thrown from this class:
>>>>>> com.canoo.webtest.engine.StepFailedException
>>>>>> [setSelectField]  INFO (com.canoo.webtest.steps.Step) -
>>>>>> Message was:
>>>>>> No option found matching criteria in select
>>>>>> HtmlSelect[<select
>>>>>> name="fOfferingSubtype" id="fOfferingSubtype"
>>>>>> class="body-text-small "
>>>>>> onchange="showRelevantCountries();">]
>>>>>>  INFO (com.canoo.webtest.steps.Step) - Running with:
>>>>>> Canoo Webtest: R_1537.
>>>>>>  INFO (com.canoo.webtest.steps.Step) - Exception thrown
>>>>>> from this
>>>>>> class: com.canoo.webtest.engine.StepFailedException
>>>>>>  INFO (com.canoo.webtest.steps.Step) - Message was: No
>>>>>> option found
>>>>>> matching criteria in select HtmlSelect[<select
>>>>>> name="fOfferingSubtype"
>>>>>> id="fOfferingSubtype" class="body-text-small "
>>>>>> onchange="showRelevantCountries();">]
>>>>>>
>>>>>>
>>>>>> What is wrong? As you can see I have the latest Webtest
>>>>>> revision with
>>>>>> latest HtmlUnit...
>>>>>> Exception coming out of sleep?
>>>>>>
>>>>>> Your help is very appreciated!

-- 
Blog: http://mguillem.wordpress.com