Revision: 754
          http://jwebunit.svn.sourceforge.net/jwebunit/?rev=754&view=rev
Author:   jevonwright
Date:     2008-10-29 00:01:40 +0000 (Wed, 29 Oct 2008)

Log Message:
-----------
adding xpath methods to IElement 

Modified Paths:
--------------
    
trunk/jwebunit-commons-tests/src/main/java/net/sourceforge/jwebunit/tests/IElementTest.java
    trunk/jwebunit-core/src/main/java/net/sourceforge/jwebunit/api/IElement.java
    
trunk/jwebunit-htmlunit-plugin/src/main/java/net/sourceforge/jwebunit/htmlunit/HtmlUnitElementImpl.java

Modified: 
trunk/jwebunit-commons-tests/src/main/java/net/sourceforge/jwebunit/tests/IElementTest.java
===================================================================
--- 
trunk/jwebunit-commons-tests/src/main/java/net/sourceforge/jwebunit/tests/IElementTest.java
 2008-10-28 23:50:09 UTC (rev 753)
+++ 
trunk/jwebunit-commons-tests/src/main/java/net/sourceforge/jwebunit/tests/IElementTest.java
 2008-10-29 00:01:40 UTC (rev 754)
@@ -123,4 +123,29 @@
        
     }
     
+    public void testWithXpath() {
+       IElement element = getElementByXPath("//body");
+       assertNotNull(element);
+       assertEquals("body", element.getName());
+       
+       // get first input children
+       IElement input = element.getElement("input");
+       assertNotNull(input);
+       assertEquals("input", input.getName());
+       assertEquals("element_name", input.getAttribute("name"));
+       assertEquals("test3", input.getAttribute("value"));
+       
+       // get all input children
+       List<IElement> inputs = element.getElements("input");
+       assertEquals(2, inputs.size()); // there should be two
+       assertEquals("test3", inputs.get(0).getAttribute("value"));
+       assertEquals("Do nothing", inputs.get(1).getAttribute("value"));
+       
+       // get parent through xpath
+       IElement parent = element.getElement("..");
+       assertNotNull(parent);
+       assertEquals("html", parent.getName());
+       
+    }
+    
 }

Modified: 
trunk/jwebunit-core/src/main/java/net/sourceforge/jwebunit/api/IElement.java
===================================================================
--- 
trunk/jwebunit-core/src/main/java/net/sourceforge/jwebunit/api/IElement.java    
    2008-10-28 23:50:09 UTC (rev 753)
+++ 
trunk/jwebunit-core/src/main/java/net/sourceforge/jwebunit/api/IElement.java    
    2008-10-29 00:01:40 UTC (rev 754)
@@ -51,4 +51,20 @@
         */
        public List<IElement> getChildren();
        
+       /**
+        * Get an element from this element by xpath.
+        * 
+        * @param xpath The xpath to serach
+        * @return an IElement if found, or null
+        */
+       public IElement getElement(String xpath);
+       
+       /**
+        * Get all elements from this element by xpath.
+        * 
+        * @param xpath The xpath to search
+        * @return A list of all matching elements
+        */
+       public List<IElement> getElements(String xpath);
+       
 }

Modified: 
trunk/jwebunit-htmlunit-plugin/src/main/java/net/sourceforge/jwebunit/htmlunit/HtmlUnitElementImpl.java
===================================================================
--- 
trunk/jwebunit-htmlunit-plugin/src/main/java/net/sourceforge/jwebunit/htmlunit/HtmlUnitElementImpl.java
     2008-10-28 23:50:09 UTC (rev 753)
+++ 
trunk/jwebunit-htmlunit-plugin/src/main/java/net/sourceforge/jwebunit/htmlunit/HtmlUnitElementImpl.java
     2008-10-29 00:01:40 UTC (rev 754)
@@ -82,4 +82,26 @@
                return element.getTextContent();
        }
 
+
+       /* (non-Javadoc)
+        * @see 
net.sourceforge.jwebunit.api.IElement#getElement(java.lang.String)
+        */
+       public IElement getElement(String xpath) {
+               // if this fails with a ClassCastException, use 
getElements().get(0) (performance penalty)
+               return new HtmlUnitElementImpl((HtmlElement) 
element.getFirstByXPath(xpath));
+       }
+
+
+       /* (non-Javadoc)
+        * @see 
net.sourceforge.jwebunit.api.IElement#getElements(java.lang.String)
+        */
+       public List<IElement> getElements(String xpath) {
+               List<IElement> elements = new ArrayList<IElement>();
+               for (Object o : element.getByXPath(xpath)) {
+                       if (o instanceof HtmlElement)
+                               elements.add(new 
HtmlUnitElementImpl((HtmlElement) o));
+               }
+               return elements;
+       }
+
 }


This was sent by the SourceForge.net collaborative development platform, the 
world's largest Open Source development site.

-------------------------------------------------------------------------
This SF.Net email is sponsored by the Moblin Your Move Developer's challenge
Build the coolest Linux based applications with Moblin SDK & win great prizes
Grand prize is a trip for two to an Open Source event anywhere in the world
http://moblin-contest.org/redirect.php?banner_id=100&url=/
_______________________________________________
JWebUnit-development mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/jwebunit-development

Reply via email to