/** * E + F * * @author acdcjunior * @since 0.10.0 */ CssDirectAdjacentSelector translateDirectAdjacent(ArgumentMap argumentMap, SiblingSelector siblingSelector) { CssSelector cssSelector = cssSelectorTranslator.translate(argumentMap, siblingSelector.getSelector()); CssSelector sqCssSiblingSelector = cssSelectorTranslator.translate(argumentMap, siblingSelector.getSiblingSelector()); return new CssDirectAdjacentSelector(cssSelector, sqCssSiblingSelector); }
@Test public void toElementFinder() { // given CssTagNameSelector aTagSelector = new CssTagNameSelector("a"); CssTagNameSelector bTagSelector = new CssTagNameSelector("b"); CssDirectAdjacentSelector directAdjacentSelector = new CssDirectAdjacentSelector(aTagSelector, bTagSelector); // when ElementFinder elementFinder = directAdjacentSelector.toElementFinder(createWebDriverDummy()); // then assertThat(elementFinder.toCssString(), is("a+b")); assertThat(elementFinder.canFetchThroughCssAlone(), is(true)); assertThat(elementFinder.getXPathExpression(), is(".//*[self::a]/following-sibling::*[position() = 1 and self::b]")); assertThat(elementFinder.getElementFilterList().getElementFilters(), empty()); }
@Test public void translate() { // given CssSelector cssSelector = ParseTreeBuilder.parse("a + b").firstSelector(); assertThat(cssSelector, instanceOf(CssDirectAdjacentSelector.class)); // when CssSelector ancestorSelector = ((CssDirectAdjacentSelector) cssSelector).getLeftSideSelector(); CssSelector descendantSelector = ((CssDirectAdjacentSelector) cssSelector).getRightSideSelector(); // then assertThat(ancestorSelector, instanceOf(CssTagNameSelector.class)); assertThat(((CssTagNameSelector) ancestorSelector).getTagName(), is("a")); assertThat(descendantSelector, instanceOf(CssTagNameSelector.class)); assertThat(((CssTagNameSelector) descendantSelector).getTagName(), is("b")); }
/** * E + F * * @author acdcjunior * @since 0.10.0 */ CssDirectAdjacentSelector translateDirectAdjacent(ArgumentMap argumentMap, SiblingSelector siblingSelector) { CssSelector cssSelector = cssSelectorTranslator.translate(argumentMap, siblingSelector.getSelector()); CssSelector sqCssSiblingSelector = cssSelectorTranslator.translate(argumentMap, siblingSelector.getSiblingSelector()); return new CssDirectAdjacentSelector(cssSelector, sqCssSiblingSelector); }