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