/** * 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); }
/** * {@code PARENT > ELEMENT} * * @author acdcjunior * @since 0.10.0 */ CssDirectDescendantSelector translateDirectDescendant(ArgumentMap argumentMap, DescendantSelector sacDescendantSelector) { CssSelector ancestorSelector = cssSelectorTranslator.translate(argumentMap, sacDescendantSelector.getAncestorSelector()); CssSelector descendantSelector = cssSelectorTranslator.translate(argumentMap, sacDescendantSelector.getSimpleSelector()); return new CssDirectDescendantSelector(ancestorSelector, descendantSelector); }
/** * E ~ PRE * * @author acdcjunior * @since 0.10.0 */ CssGeneralAdjacentSelector translateGeneralAdjacent(ArgumentMap argumentMap, SiblingSelector sacSiblingSelector) { CssSelector previousSelector = cssSelectorTranslator.translate(argumentMap, sacSiblingSelector.getSelector()); CssSelector siblingSelector = cssSelectorTranslator.translate(argumentMap, sacSiblingSelector.getSiblingSelector()); return new CssGeneralAdjacentSelector(previousSelector, siblingSelector); }
@Test public void toElementFinder_multiple() { // given CssTagNameSelector firstSelector = new CssTagNameSelector("a"); CssTagNameSelector secondSelector = new CssTagNameSelector("b"); CssDescendantSelector firstAndSecondSelectors = new CssDescendantSelector(firstSelector, secondSelector); CssTagNameSelector thirdSelector = new CssTagNameSelector("c"); CssDescendantSelector descendantSelector = new CssDescendantSelector(firstAndSecondSelectors, thirdSelector); // when ElementFinder elementFinder = descendantSelector.toElementFinder(createWebDriverDummy()); // then assertThat(elementFinder.toCssString(), is("a b c")); assertThat(elementFinder.canFetchThroughCssAlone(), is(true)); assertThat(elementFinder.getXPathExpression(), is(".//*[self::a]//*[self::b]//*[self::c]")); assertThat(elementFinder.getElementFilterList().getElementFilters(), empty()); }
@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 toElementFinder() { // given CssTagNameSelector aTagSelector = new CssTagNameSelector("a"); CssTagNameSelector bTagSelector = new CssTagNameSelector("b"); CssGeneralAdjacentSelector generalAdjacentSelector = new CssGeneralAdjacentSelector(aTagSelector, bTagSelector); // when ElementFinder elementFinder = generalAdjacentSelector.toElementFinder(createWebDriverDummy()); // then assertThat(elementFinder.toCssString(), is("a~b")); assertThat(elementFinder.canFetchThroughCssAlone(), is(true)); assertThat(elementFinder.getXPathExpression(), is(".//*[self::a]/following-sibling::*[self::b]")); assertThat(elementFinder.getElementFilterList().getElementFilters(), empty()); }
@Test public void toElementFinder() { // given CssTagNameSelector aTagSelector = new CssTagNameSelector("a"); CssTagNameSelector bTagSelector = new CssTagNameSelector("b"); CssDirectDescendantSelector directDescendantSelector = new CssDirectDescendantSelector(aTagSelector, bTagSelector); // when ElementFinder elementFinder = directDescendantSelector.toElementFinder(createWebDriverDummy()); // then assertThat(elementFinder.toCssString(), is("a>b")); assertThat(elementFinder.canFetchThroughCssAlone(), is(true)); assertThat(elementFinder.getXPathExpression(), is(".//*[self::a]/*[self::b]")); assertThat(elementFinder.getElementFilterList().getElementFilters(), empty()); }
/** * E F * * @author acdcjunior * @since 0.10.0 */ CssDescendantSelector translateDescendant(ArgumentMap argumentMap, DescendantSelector sacDescendantSelector) { Selector ancestorCSSSelector = sacDescendantSelector.getAncestorSelector(); CssSelector ancestorSelector = cssSelectorTranslator.translate(argumentMap, ancestorCSSSelector); SimpleSelector descendantCSSSelector = sacDescendantSelector.getSimpleSelector(); CssSelector descendantSelector = cssSelectorTranslator.translate(argumentMap, descendantCSSSelector); return new CssDescendantSelector(ancestorSelector, descendantSelector); }
@Test public void translate() { // given CssSelector cssSelector = ParseTreeBuilder.parse("a b").firstSelector(); assertThat(cssSelector, instanceOf(CssDescendantSelector.class)); // when CssSelector ancestorSelector = ((CssDescendantSelector) cssSelector).getAncestorSelector(); CssSelector descendantSelector = ((CssDescendantSelector) cssSelector).getDescendantSelector(); // then assertThat(ancestorSelector, instanceOf(CssTagNameSelector.class)); assertThat(((CssTagNameSelector) ancestorSelector).getTagName(), is("a")); assertThat(descendantSelector, instanceOf(CssTagNameSelector.class)); assertThat(((CssTagNameSelector) descendantSelector).getTagName(), is("b")); }
@Test public void translate() { // given CssSelector cssSelector = ParseTreeBuilder.parse("a ~ b").firstSelector(); assertThat(cssSelector, instanceOf(CssGeneralAdjacentSelector.class)); // when CssSelector ancestorSelector = ((CssGeneralAdjacentSelector) cssSelector).getLeftSideSelector(); CssSelector descendantSelector = ((CssGeneralAdjacentSelector) 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")); }
@Test public void translate() { // given CssSelector cssSelector = ParseTreeBuilder.parse("a > b").firstSelector(); assertThat(cssSelector, instanceOf(CssDirectDescendantSelector.class)); // when CssSelector ancestorSelector = ((CssDirectDescendantSelector) cssSelector).getAncestorSelector(); CssSelector descendantSelector = ((CssDirectDescendantSelector) cssSelector).getDescendantSelector(); // then assertThat(ancestorSelector, instanceOf(CssTagNameSelector.class)); assertThat(((CssTagNameSelector) ancestorSelector).getTagName(), is("a")); assertThat(descendantSelector, instanceOf(CssTagNameSelector.class)); assertThat(((CssTagNameSelector) descendantSelector).getTagName(), is("b")); }
@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")); }
@Test public void toElementFinder() { // given CssTagNameSelector aTagSelector = new CssTagNameSelector("a"); CssTagNameSelector bTagSelector = new CssTagNameSelector("b"); CssDescendantSelector descendantSelector = new CssDescendantSelector(aTagSelector, bTagSelector); // when ElementFinder elementFinder = descendantSelector.toElementFinder(createWebDriverDummy()); // then assertThat(elementFinder.toCssString(), is("a b")); assertThat(elementFinder.canFetchThroughCssAlone(), is(true)); assertThat(elementFinder.getXPathExpression(), is(".//*[self::a]//*[self::b]")); assertThat(elementFinder.getElementFilterList().getElementFilters(), empty()); }
/** * 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); }
/** * {@code PARENT > ELEMENT} * * @author acdcjunior * @since 0.10.0 */ CssDirectDescendantSelector translateDirectDescendant(ArgumentMap argumentMap, DescendantSelector sacDescendantSelector) { CssSelector ancestorSelector = cssSelectorTranslator.translate(argumentMap, sacDescendantSelector.getAncestorSelector()); CssSelector descendantSelector = cssSelectorTranslator.translate(argumentMap, sacDescendantSelector.getSimpleSelector()); return new CssDirectDescendantSelector(ancestorSelector, descendantSelector); }
/** * E ~ PRE * * @author acdcjunior * @since 0.10.0 */ CssGeneralAdjacentSelector translateGeneralAdjacent(ArgumentMap argumentMap, SiblingSelector sacSiblingSelector) { CssSelector previousSelector = cssSelectorTranslator.translate(argumentMap, sacSiblingSelector.getSelector()); CssSelector siblingSelector = cssSelectorTranslator.translate(argumentMap, sacSiblingSelector.getSiblingSelector()); return new CssGeneralAdjacentSelector(previousSelector, siblingSelector); }
/** * E F * * @author acdcjunior * @since 0.10.0 */ CssDescendantSelector translateDescendant(ArgumentMap argumentMap, DescendantSelector sacDescendantSelector) { Selector ancestorCSSSelector = sacDescendantSelector.getAncestorSelector(); CssSelector ancestorSelector = cssSelectorTranslator.translate(argumentMap, ancestorCSSSelector); SimpleSelector descendantCSSSelector = sacDescendantSelector.getSimpleSelector(); CssSelector descendantSelector = cssSelectorTranslator.translate(argumentMap, descendantCSSSelector); return new CssDescendantSelector(ancestorSelector, descendantSelector); }
/** * "a b c" becomes: * * /\ * /\ \ * a b c */ @Test public void translate_with_another_descendant() { // given CssSelector cssSelector = ParseTreeBuilder.parse("a b c").firstSelector(); assertThat(cssSelector, instanceOf(CssDescendantSelector.class)); // when CssSelector ancestorSelector = ((CssDescendantSelector) cssSelector).getAncestorSelector(); CssSelector descendantSelector = ((CssDescendantSelector) cssSelector).getDescendantSelector(); // then assertThat(ancestorSelector, instanceOf(CssDescendantSelector.class)); CssSelector ancestorAncestorSelector = ((CssDescendantSelector) ancestorSelector).getAncestorSelector(); CssSelector ancestorDescendantSelector = ((CssDescendantSelector) ancestorSelector).getDescendantSelector(); assertThat(ancestorAncestorSelector, instanceOf(CssTagNameSelector.class)); assertThat(((CssTagNameSelector) ancestorAncestorSelector).getTagName(), is("a")); assertThat(ancestorAncestorSelector, instanceOf(CssTagNameSelector.class)); assertThat(((CssTagNameSelector) ancestorDescendantSelector).getTagName(), is("b")); assertThat(descendantSelector, instanceOf(CssTagNameSelector.class)); assertThat(((CssTagNameSelector) descendantSelector).getTagName(), is("c")); }
@Test public void toElementFinder__with_ElementFinder_arg() { // given CssTagNameSelector aTagSelector = new CssTagNameSelector("a"); CssTagNameSelector bTagSelector = new CssTagNameSelector("b"); CssClassAttributeCondition classAttributeCondition = new CssClassAttributeCondition(new AstCssClassAttributeCondition("condition")); CssConditionalSelector conditionalSelector = new CssConditionalSelector(bTagSelector, classAttributeCondition); // a b.condition CssDescendantSelector descendantSelector = new CssDescendantSelector(aTagSelector, conditionalSelector); // when ElementFinder elementFinder = descendantSelector.toElementFinder(createWebDriverDummy()); // then assertThat(elementFinder.toCssString(), is("a b.condition")); assertThat(elementFinder.canFetchThroughCssAlone(), is(true)); assertThat(elementFinder.getXPathExpression(), is(".//*[self::a]//*[self::b and contains(concat(' ', normalize-space(@class), ' '), ' condition ')]")); assertThat(elementFinder.getElementFilterList().getElementFilters(), empty()); }
@Test public void translate_with_condition() { // given CssSelector cssSelector = ParseTreeBuilder.parse("a b.condition").firstSelector(); assertThat(cssSelector, instanceOf(CssDescendantSelector.class)); // when CssSelector ancestorSelector = ((CssDescendantSelector) cssSelector).getAncestorSelector(); CssSelector descendantSelector = ((CssDescendantSelector) cssSelector).getDescendantSelector(); // then assertThat(ancestorSelector, instanceOf(CssTagNameSelector.class)); assertThat(((CssTagNameSelector) ancestorSelector).getTagName(), is("a")); assertThat(descendantSelector, instanceOf(CssConditionalSelector.class)); CssSelector sqCssSelector = ((CssConditionalSelector) descendantSelector).getCssSelector(); CssCondition cssCondition = ((CssConditionalSelector) descendantSelector).getCssCondition(); assertThat(sqCssSelector, instanceOf(CssTagNameSelector.class)); assertThat(((CssTagNameSelector) sqCssSelector).getTagName(), is("b")); assertThat(cssCondition, instanceOf(CssClassAttributeCondition.class)); assertThat(((CssClassAttributeCondition) cssCondition).getClassName(), is("condition")); }