This might be useful to others.

The syntax of the accessor for "getXPathHelper()" is slightly odd: 
probably because it has two caps initially, they both have to appear 
(whereas the references to the older threads (see below) show 
"xPathHelper" which results in a null pointer).

If you do much with namespaces (verifying XML), this macro might be of 
interest:

<macrodef name="namespace" 
          description="define namespace for xpath">
    <attribute name="prefix" />
    <attribute name="uri" />
    <sequential>
        <groovy>
            
step.context.XPathHelper.namespaceContext.addNamespace("@{prefix}", 
"@{uri}")
        </groovy>
    </sequential>
</macrodef>

You can then use it like this:

<webtest>
    <config ... />
    <namespace prefix="ex" namespace="http://www.example.com/"; />
    <invoke ... />
    <verifyXPath xpath="ex:a/ex:b/ex:etc" />
</webtest>

This is less apt to produce typos (the groovy bit is only specified 
once, and then the parameters are fed to it as needed).

Amy!
On Wed, 22 Apr 2009 22:12:02 -0400, Amelia A Lewis wrote:
> Heyo.
> 
> I see from WT-253 that the issue around namespaces in XPath 
> verification has been closed.  I cannot figure out how to make it work.
> 
> In a relatively simple XML document with a default namespace 
> (xmlns="http://www.example.com/"; on the root element, "response"), none 
> of the following work:
> 
> <verifyXpath xpath="/response/getCurrentUser/name" value="name" />
> 
> (error: no node matched)
> (this is expected; it shouldn't match)
> 
> <verifyXpath xmlns:ex="http://www.example.com/"; 
> xpath="/response/getCurrentUser/name" value="name" />
> 
> (error: prefix must be declared)
> 
> Similarly if the namespace declaration is promoted to the containing 
> "webtest" element and beyond.
> 
> This thread: 
> http://lists.canoo.com/pipermail/webtest/2006q4/007358.html (from 2006) 
> points at other threads that suggest solving things with a small groovy 
> script.  The pointed-at script is no longer correct (null pointer), but 
> a little patience leads one to 
> step.context.getXPathHelper().registerGlobalNamespace("ex", 
> "http://www.example.com/";), which also yields: prefix must be declared.
> 
> And yet the issue was closed, for 2.5.  I can't find any examples of 
> how to do it "right", though.  Anyone have a pointer?
> 
> It would be nice to have <namespace prefix="ex" 
> uri="http://www.example.com/"; /> as child elements of "config", but I 
> don't see any indication that it might be so straightforward.  I might 
> have to patch it to do that (that way the namespaces would be defined 
> in a reasonably predictable location, and valid for all the documents 
> processed within the containing webtest element, presumably), but I 
> thought that I should ask first, and see if someone can point me at an 
> existing solution.
> 
> Oh, I'm using the 3.0 distribution, rather than the nightly.
> 
> Amy!
> -- 
> Amelia A. Lewis                    amyzing {at} talsever.org
> According to Business Week, in the 1990s the ratio between a chief
> executive's salary and the takehome pay of the typical, feckless, 
> whining grunt on the shopfloor rose from 85:1 to 475:1. (In the UK, 
> which is seeing a vigorous popular backlash against "fat cat" pay 
> packets, the ratio is 24:1).
>                -- The Register
> _______________________________________________
> WebTest mailing list
> [email protected]
> http://lists.canoo.com/mailman/listinfo/webtest
_______________________________________________
WebTest mailing list
[email protected]
http://lists.canoo.com/mailman/listinfo/webtest

Reply via email to