[JWebUnit-development] SF.net SVN: jwebunit:[754] trunk
Brought to you by:
henryju
|
From: <jev...@us...> - 2008-10-29 00:01:43
|
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.
|