Salut Florent,

you can surely handle this with a small Groovy script for instance, but
I'm not sure if this is really the cause of the problem. I've tested
your example of nested forms and HtmlUnit handles this exactly like
browsers do: it ignores the nested form and puts its children to the
enclosing one.

Perhaps should you look how the page gets parsed:
<groovy>
println step.context.currentResponse.asXml()
</groovy>

Cheers,
Marc.
-- 
Blog: http://mguillem.wordpress.com

Florent Blondeau wrote:
> Merci Marc, really, thanks a lot...
> 
> So, my problem is not solved, but I think you've found the cause.
> 
> The form is nested into another form !!!!!!!!!!!!!! And this form has
> 5 or 6 hidden input fields that appear in the Browser request, but
> not in Webtest request. That's like that
> <form name="parentform">
>     <input type="hidden" name="totohidden"
> value="ahahthisisyoursessionvalue">
>     <form name="childform">
>        <input type="submit" name="totonothidden">
>     </form>
> </form>
> 
> I think the normal browser submit the parent form as well as the
> selected form.
> I don't think it is absolutely "w3c"
> 
> Then, as the solution is very close, I have the last question :
> 
> How can I submit the parent form (post method, with hidden fields, etc)
> and not the childform(get method, no knowledge of hidden fields) ?
> I tried a selectForm on the parent, it worked (form is well selected),
> but when I perform the clickButton method, I have :
> *
> DEBUG (com.canoo.webtest.steps.Step) - <<<< Successful Step: selectForm
> (52/54)
> DEBUG (com.canoo.webtest.reporting.StepExecutionListener) -
> fPreviousCurrentResponse: HtmlPage(http://.....)@31541880
> DEBUG (com.canoo.webtest.reporting.StepExecutionListener) -
> fContext.getCurrentResponse(): HtmlPage(http://....)@31541880
> DEBUG (com.canoo.webtest.reporting.StepExecutionListener) -
> isWorthSaving: false, false
> DEBUG (com.canoo.webtest.ant.TestStepSequence) - Executing step
> clickButton [EMAIL PROTECTED]
>  INFO (com.canoo.webtest.steps.Step) - >>>> Start Step: clickButton (53/54)
> DEBUG (com.canoo.webtest.steps.request.AbstractIdOrLabelTarget) -
> Looking for html element with id: button_id
> DEBUG (com.canoo.webtest.steps.request.ClickButton) - It's an image
> input, that's ok
> DEBUG (com.canoo.webtest.steps.request.ClickButton) - Button passes test
> with label and name
>  INFO (com.canoo.webtest.steps.request.ClickButton) - -> findTarget(by
> input): name=button_name value=
> DEBUG (com.gargoylesoftware.htmlunit.html.HtmlPage) - Page Encoding
> detected: windows-1252
> DEBUG (com.gargoylesoftware.htmlunit.WebClient) - Get page for window
> named '', using WebRequestSettings[<url="http://...";,
> SubmitMethod[name=get],
> EncodingType[name=application/x-www-form-urlencoded], [],
> {Referer=http://...}, null>]
> DEBUG (com.gargoylesoftware.htmlunit.WebClient) - Load response for
> http://...
> DEBUG (org.apache.commons.httpclient.params.DefaultHttpParams) - Set
> parameter http.authentication.credential-provider =
> [EMAIL PROTECTED]
> DEBUG (org.apache.commons.httpclient.methods.GetMethod) - enter
> GetMethod(String)
> DEBUG (org.apache.commons.httpclient.params.DefaultHttpParams) - Set
> parameter http.method.retry-handler =
> [EMAIL PROTECTED]
> DEBUG (org.apache.commons.httpclient.HttpClient) - enter
> HttpClient.executeMethod(HostConfiguration,HttpMethod)
> DEBUG (org.apache.commons.httpclient.HttpClient) - enter
> HttpClient.executeMethod(HostConfiguration,HttpMethod,HttpState)
> DEBUG (org.apache.commons.httpclient.MultiThreadedHttpConnectionManager)
> - enter
> HttpConnectionManager.getConnectionWithTimeout(HostConfiguration, long)
> DEBUG (org.apache.commons.httpclient.MultiThreadedHttpConnectionManager)
> - HttpConnectionManager.getConnection:  config =
> HostConfiguration[host=http://...], timeout = 0
> DEBUG (org.apache.commons.httpclient.MultiThreadedHttpConnectionManager)
> - enter HttpConnectionManager.ConnectionPool.getHostPool(HostConfiguration)
> DEBUG (org.apache.commons.httpclient.MultiThreadedHttpConnectionManager)
> - enter HttpConnectionManager.ConnectionPool.getHostPool(HostConfiguration)
> DEBUG (org.apache.commons.httpclient.MultiThreadedHttpConnectionManager)
> - Getting free connection, hostConfig=HostConfiguration[host=http://...]
> DEBUG (org.apache.commons.httpclient.HttpMethodDirector) - Attempt
> number 1 to process request
> DEBUG (org.apache.commons.httpclient.HttpConnection) - enter
> HttpConnection.open()
> DEBUG (org.apache.commons.httpclient.HttpConnection) - Open connection
> to ...
> DEBUG (org.apache.commons.httpclient.HttpMethodBase) - enter
> HttpMethodBase.execute(HttpState, HttpConnection)
> DEBUG (org.apache.commons.httpclient.HttpMethodBase) - enter
> HttpMethodBase.writeRequest(HttpState, HttpConnection)
> DEBUG (org.apache.commons.httpclient.HttpMethodBase) - enter
> HttpMethodBase.writeRequestLine(HttpState, HttpConnection)
> DEBUG (org.apache.commons.httpclient.HttpMethodBase) - enter
> HttpMethodBase.generateRequestLine(HttpConnection, String, String,
> String, String)
> DEBUG (httpclient.wire.header) - >> "GET http://...?nothiddenfield=toto
> HTTP/1.1[\r][\n]"
> 
> 
> *That is not so weird, I think, since the button may reference its
> parent form, does it ?
> 
> Do you see a workaround ? I'm too close to the goal, then I won't
> surrender !!!!!!!!!
> 
> Thanks for reading
> 
> Marc Guillemot a écrit :
>> Salut Florent,
>>
>> to understand what happens, you can try to look at the post details
>> (url, fields and headers) both in WebTest and in a normal browser for
>> your 9. step.
>>
>>   
>>> ...
>>> Is there a way in Webtest to only trigger the Javascript of abutton
>>> without sumitting the form
>>>     
>>
>> you can modify the html DOM to add inject for instance some onsubmit
>> that returns false in your page, but I don't see what you would achieve
>> with that.
>>
>>   
>>> (I think the navigation error come from the
>>> fact the POST method is not Ajax called ) ?
>>>     
>>
>> ???
>>
>> Marc.
>>   
> 
> 
> -- 
> Pingwy
> 27, rue des arènes
> 49100 Angers
> 

_______________________________________________
WebTest mailing list
[email protected]
http://lists.canoo.com/mailman/listinfo/webtest

Reply via email to