On 31/01/2008, Ronan Klyne <[EMAIL PROTECTED]> wrote: > sebb wrote: > > On 31/01/2008, Ronan Klyne <[EMAIL PROTECTED]> wrote: > >> Hello all, > >> > >> I'm having a little trouble with the XPath Extractor. > >> The problem presents itself whenspecified element is not present in the > >> page. Instead of the expression returning my default value of "ERROR", > >> it returns "". This looks to me like a bug in the substring-* functions. > >> > >> This expression works as expected: > >> //[EMAIL PROTECTED]"tabLinkFunc"]/@href > >> There is no such element, so it returns "ERROR". Correct. > >> > >> The second, which does not: > >> substring-before(substring-after(//[EMAIL PROTECTED]"tabLinkFunc"]/@href, > >> "@as_id="), "&") > >> There is no such element, so it should also return "ERROR". But it > >> returns "" instead. > >> > >> Any thoughts/suggestions, anyone? > >> > > > > Are there any errors reported in jmeter.log? > > > > If not, then it is most likely that the behaviour is determined by the > > XPath implementation. > > > There are no related errors in jmeter.log. > > I observe (in XPathExtractor.java) that unless the XPath library returns > an XObject identifying itself as a CLASS_NODESET, the result is > converted to a string and stored in the appropriate variable. The > default is only used in exceptional cases.
I tried checking the type for the second example, and it came up as CLASS_STRING, so I don't think there is any way to handle this particular example. > > There are classes of XPath object which are not 'successful' responses > which do not throw exceptions. > > These are the XPath types that the Xalan library defines: > CLASS_BOOLEAN > CLASS_NODESET > CLASS_NUMBER > CLASS_RTREEFRAG > CLASS_STRING > CLASS_NULL > CLASS_UNKNOWN > CLASS_UNRESOLVEDVARIABLE > > I think that the last three should result in either an error condition > or the default value being used. > That's a good idea (even if it won't solve your particular problem). > > I believe I saw the behaviour I did because the final result of my XPath > expression was coming from applying a function to an empty nodeset, > rather than returning said nodeset. > > > # r > > -- > Ronan Klyne > Business Collaborator Developer > Tel: +44 01189 028518 > [EMAIL PROTECTED] > www.groupbc.com > > --------------------------------------------------------------------- > To unsubscribe, e-mail: [EMAIL PROTECTED] > For additional commands, e-mail: [EMAIL PROTECTED] > > --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]

