/** * 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); }
/** * 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 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"); 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()); }
@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()); }