Salut Florent,

can you show the xpath expression you use? Do you use "id(...) " in it?
In this case HtmlUnit incorrectly throws an ElementNotFoundException
when evaluating it. This has been fixed and will be available in
HtmlUnit-1.14.

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


Florent Blondeau wrote:
> Hi,
> 
> some time hase passed since I posted this message...
> I've been in the sources, and I saw two things :
> 1) ifStep is designed to pass if an inner StepFailedException is thrown
> (as I expected). So a little explanation is required :
> I perform in the <condition> step a <verifyXPath> step.
> In my test plan, the step fails with an ElementNotFoundException from
> htmlUnit (that's normal, i search for an Element to be present or not).
> 
> That leads us to the other point :
> 2) there might be a non handled use case in VerifyXPath.verifyXPath
> The code from verifyXPath doesn't catch the
> HtmlUnit.ElementNotFoundException :
> 
> *    protected void verifyXPath(final XPath xpath, final Object
> document) throws JaxenException, StepFailedException {
>         if (isComparingPathAndValue()) {
>             final String actualValue = xpath.stringValueOf(document);
>             if (!verifyText(actualValue)) {
>                 throw new StepFailedException("Wrong result for xpath >"
> + fXpath + "<", getText(), actualValue, this);
>             }
>         }
>         else
>         {
>                 final Object singleNode =
> xpath.selectSingleNode(document); // <-- that fails  with an
> HtmlUnit.ElementNotFoundException
> 
>                 if (singleNode == null)
> {                                                                             
>                                             
> |
>                     throw new StepFailedException("xpath test: " +
> fXpath + " matched no nodes", this);        |
>                
> }                                                                             
>                                                                               
>           
> ;  |            
>                 else if
> (Boolean.FALSE.equals(singleNode))                                            
>                                          
> |        <-- the Exception is not handled and make the ifStep fail
>                
> {                                                                             
>                                                                               
>           
> ;  |
>                     throw new StepFailedException("xpath test: " +
> fXpath + " evaluates to false", this);        |
>                 }
>         }
>     }
> 
> *An ElementNotFoundException is precisely (in my mind) what we expect to
> make the step fail, so why isn't it used
> to rethrow a StepFailedException ?
> 
> But maybe I understand badly the purpose of the design
> 
> Thanks for reading me
> 
> Florent
> 
> 
> 
> Florent Blondeau a écrit :
>> Hi everybody !
>>
>> I keep having a lot of fun using Webtest ...
>> I've got a question that is more related to my "newbiness" (nice word,
>> huh ?) than
>> to a bug or something like that.
>>
>> I want to have some tests execute only if a special condition appear.
>> I've tested the ifSTep, but
>> It seems like I don't understand the philosophy...
>>
>> I thought it was something like a "if" control structure in Java
>>
>> //do some tests
>> ...
>>
>> if (conditions){
>>        //do some other tests
>> }
>>
>> //do the end of your tests
>> ...
>>
>> For example, i have an html page that contains a form. If the form is
>> badly fill in, another field appear to be click on. Then the
>> navigation follows its route.
>> But with my test plan, the ifStep claims to fail (despite the fact
>> only the "condition" fail, not really the ifstep itself) and then the
>> end of my tests are not executed
>>
>> Show you a chunk of code:
>> *setInputField(forLabel: "label_1 :", value: value_1)
>>               clickButton(label: "label_2")
>>               ifStep(){
>>                   condition(){
>>                       verifyXPath(xpath:"id('Error_block')")
>>                   }
>>                   groovy(file:"script_1.groovy")
>>                  
>> setSelectField(htmlId:"optional_field",text:"#{groovy_property}")
>>                   clickButton(label: "label_opt")
>>               }
>> setRadioButton(description: "Check radio button ", name: "radio_1",
>> value: value_2)
>>
>> *Does Someone can help me to do what I want ?
>>
>> Thanks to all
>>                 
>> -- 
>> Pingwy
>> 27, rue des arènes
>> 49100 Angers
>>   
> 
> 
> -- 
> Pingwy
> 27, rue des arènes
> 49100 Angers
> 

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

Reply via email to