[Webtest] <verifyXPath xpath="//*[text()='foo']" regex="true"/> throws ClassCastException

Marc Guillemot Marc Guillemot <mguillemot@yahoo.fr>
Wed, 19 Mar 2008 12:40:47 +0100


Hi Christoph,

the ClassCastException is is surely a bug but:
- your xpath is invalid
- HtmlUnit 2.0 will not use Jaxen anymore therefore it will be unlikely
to occur (no custom DocumentNavigator)

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

Christoph Witych wrote:
> Hi Marc,
> 
>  
> 
> using the step
> 
>  
> 
> <verifyXPath xpath="//***[text()='foo']" regex="true"/>
> 
>  
> 
> results in a ClassCastException (see stacktrace below).
> 
>  
> 
> If I use <verifyXPath xpath="//*span*[text()='foo']" regex="true"/>
> instead everything works fine.
> 
>  
> 
> This occurs with builds 1660 and 1690...
> 
>  
> 
> May be a bug?
> 
>  
> 
>  
> 
> Cheers,
> 
> Christoph
> 
>  
> 
>  
> 
> Unexpected exception caught: java.lang.ClassCastException
> 
>       at com.canoo.webtest.steps.StepUtil.handleException(StepUtil.java:113)
> 
>       at com.canoo.webtest.steps.Step.handleException(Step.java:378)
> 
>       at com.canoo.webtest.steps.Step.execute(Step.java:109)
> 
>       at
> org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:288)
> 
>       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
> org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:105)
> 
>       at org.apache.tools.ant.Task.perform(Task.java:348)
> 
>       at
> com.canoo.webtest.ant.TestStepSequence.executeSteps(TestStepSequence.java:43)
> 
>       at
> com.canoo.webtest.ant.TestStepSequence.doExecute(TestStepSequence.java:31)
> 
>       at com.canoo.webtest.steps.Step.execute(Step.java:101)
> 
>       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
> org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:105)
> 
>       at org.apache.tools.ant.Task.perform(Task.java:348)
> 
>       at com.canoo.webtest.ant.WebtestTask.execute(WebtestTask.java:206)
> 
>       at
> org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:288)
> 
>       [...]
> 
> Caused by: java.lang.ClassCastException:
> com.gargoylesoftware.htmlunit.html.DomComment
> 
>       at
> com.gargoylesoftware.htmlunit.html.xpath.DocumentNavigator.getTextStringValue(DocumentNavigator.java:377)
> 
>       at org.jaxen.function.StringFunction.evaluate(StringFunction.java:255)
> 
>       at
> org.jaxen.expr.DefaultEqualityExpr.evaluateObjectObject(DefaultEqualityExpr.java:147)
> 
>       at
> org.jaxen.expr.DefaultEqualityExpr.evaluateSetSet(DefaultEqualityExpr.java:121)
> 
>       at
> org.jaxen.expr.DefaultEqualityExpr.evaluate(DefaultEqualityExpr.java:93)
> 
>       at org.jaxen.expr.DefaultPredicate.evaluate(DefaultPredicate.java:95)
> 
>       at org.jaxen.expr.PredicateSet.applyPredicate(PredicateSet.java:269)
> 
>       at
> org.jaxen.expr.PredicateSet.evaluatePredicates(PredicateSet.java:244)
> 
>       at org.jaxen.expr.DefaultNameStep.evaluate(DefaultNameStep.java:291)
> 
>       at
> org.jaxen.expr.DefaultLocationPath.evaluate(DefaultLocationPath.java:140)
> 
>       at
> org.jaxen.expr.DefaultAbsoluteLocationPath.evaluate(DefaultAbsoluteLocationPath.java:113)
> 
>       at org.jaxen.expr.DefaultXPathExpr.asList(DefaultXPathExpr.java:102)
> 
>       at org.jaxen.BaseXPath.selectNodesForContext(BaseXPath.java:674)
> 
>       at org.jaxen.BaseXPath.selectNodes(BaseXPath.java:213)
> 
>       at org.jaxen.BaseXPath.selectSingleNode(BaseXPath.java:234)
> 
>       at
> com.canoo.webtest.steps.verify.VerifyXPath.verifyXPath(VerifyXPath.java:89)
> 
>       at
> com.canoo.webtest.steps.verify.VerifyXPath.doExecute(VerifyXPath.java:73)
> 
>       at com.canoo.webtest.steps.Step.execute(Step.java:101)
> 
>       ... 60 more
> 
> --- Nested Exception ---
> 
> java.lang.ClassCastException: com.gargoylesoftware.htmlunit.html.DomComment
> 
>       at
> com.gargoylesoftware.htmlunit.html.xpath.DocumentNavigator.getTextStringValue(DocumentNavigator.java:377)
> 
>       at org.jaxen.function.StringFunction.evaluate(StringFunction.java:255)
> 
>       at
> org.jaxen.expr.DefaultEqualityExpr.evaluateObjectObject(DefaultEqualityExpr.java:147)
> 
>       at
> org.jaxen.expr.DefaultEqualityExpr.evaluateSetSet(DefaultEqualityExpr.java:121)
> 
>       at
> org.jaxen.expr.DefaultEqualityExpr.evaluate(DefaultEqualityExpr.java:93)
> 
>       at org.jaxen.expr.DefaultPredicate.evaluate(DefaultPredicate.java:95)
> 
>       at org.jaxen.expr.PredicateSet.applyPredicate(PredicateSet.java:269)
> 
>       at
> org.jaxen.expr.PredicateSet.evaluatePredicates(PredicateSet.java:244)
> 
>       at org.jaxen.expr.DefaultNameStep.evaluate(DefaultNameStep.java:291)
> 
>       at
> org.jaxen.expr.DefaultLocationPath.evaluate(DefaultLocationPath.java:140)
> 
>       at
> org.jaxen.expr.DefaultAbsoluteLocationPath.evaluate(DefaultAbsoluteLocationPath.java:113)
> 
>       at org.jaxen.expr.DefaultXPathExpr.asList(DefaultXPathExpr.java:102)
> 
>       at org.jaxen.BaseXPath.selectNodesForContext(BaseXPath.java:674)
> 
>       at org.jaxen.BaseXPath.selectNodes(BaseXPath.java:213)
> 
>       at org.jaxen.BaseXPath.selectSingleNode(BaseXPath.java:234)
> 
>       at
> com.canoo.webtest.steps.verify.VerifyXPath.verifyXPath(VerifyXPath.java:89)
> 
>       at
> com.canoo.webtest.steps.verify.VerifyXPath.doExecute(VerifyXPath.java:73)
> 
>       at com.canoo.webtest.steps.Step.execute(Step.java:101)
> 
>       at
> org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:288)
> 
>       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
> org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:105)
> 
>       at org.apache.tools.ant.Task.perform(Task.java:348)
> 
>       at
> com.canoo.webtest.ant.TestStepSequence.executeSteps(TestStepSequence.java:43)
> 
>       at
> com.canoo.webtest.ant.TestStepSequence.doExecute(TestStepSequence.java:31)
> 
>       at com.canoo.webtest.steps.Step.execute(Step.java:101)
> 
>       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
> org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:105)
> 
>       at org.apache.tools.ant.Task.perform(Task.java:348)
> 
>       at com.canoo.webtest.ant.WebtestTask.execute(WebtestTask.java:206)
> 
>       at
> org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:288)
> 
>       [...]
> 
>  
>