@Test 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(4, inputs.size()); // there should be two assertEquals("test3", inputs.get(0).getAttribute("value")); assertEquals("Do nothing", inputs.get(1).getAttribute("value")); assertEquals("initial", inputs.get(2).getAttribute("value")); assertEquals("unchanged", inputs.get(3).getAttribute("value")); // test regexps assertMatch("init.+", inputs.get(2).getAttribute("value")); assertNotMatch("^xinitial", inputs.get(2).getAttribute("value")); assertMatch("test regexp with message", "init.+", inputs.get(2).getAttribute("value")); assertNotMatch("test regexp with message", "$xinitial", inputs.get(2).getAttribute("value")); // get parent through xpath IElement parent = element.getElement(".."); assertNotNull(parent); assertEquals("html", parent.getName()); }
/** Test that {@link IElement#equals(Object)} is implemented correctly. */ @Test public void testIElementEquals() { // through getElementById IElement container1 = getElementById("container"); // through IElement.getElement IElement span = getElementByXPath("//span[@class='inline']"); IElement container2 = span.getElement(".."); // through getByXPath IElement container3 = null; for (IElement e : getElementsByXPath("//div")) { if ("container".equals(e.getAttribute("id"))) { container3 = e; } } // should have found all of these assertNotNull(container1); assertNotNull(container2); assertNotNull(container3); // check equality assertEquals(container1, container2); assertEquals(container2, container3); assertEquals(container1, container3); }
/** * Test preceding element XPath. preceding: "Selects everything in the document that is before the * start tag of the current node" */ @Test public void testPreceding() { IElement element = getElementById("first"); // li // should get the first <input>, which is // <input id="test" name="element_name" value="test3"> IElement preceding = element.getElement("preceding::input"); assertEquals(preceding.getName(), "input"); assertEquals(preceding.getAttribute("name"), "element_name"); }