@Override public CssCondition visit(AstCssAndCondition astCssAndCondition) { return new CssAndCondition(astCssAndCondition); }
@Override public ElementFinder toElementFinder(ElementFinder leftFinder) { CssCondition firstCondition = this.getFirstCondition(); CssCondition secondCondition = this.getSecondCondition(); ElementFinder elementFinder = firstCondition.toElementFinder(leftFinder); return secondCondition.toElementFinder(elementFinder); }
@Test public void toElementFinder() { // given CssIdAttributeCondition idCondition = new CssIdAttributeCondition(new AstCssIdAttributeCondition("my-id")); CssClassAttributeCondition classCondition = new CssClassAttributeCondition(new AstCssClassAttributeCondition("class-name")); CssAndCondition andCondition = new CssAndCondition(new AstCssAndCondition(idCondition, classCondition)); // when ElementFinder elementFinder = andCondition.toElementFinder(UNIVERSAL_SELECTOR_FINDER); // then assertThat(elementFinder.toCssString(), is("#my-id.class-name")); assertThat(elementFinder.canFetchThroughCssAlone(), is(true)); assertThat(elementFinder.getXPathExpression(), is(".//*[@id = 'my-id' and contains(concat(' ', normalize-space(@class), ' '), ' class-name ')]")); assertThat(elementFinder.getElementFilterList().getElementFilters(), empty()); }
@Override public ElementFinder toElementFinder(ElementFinder leftFinder) { CssCondition firstCondition = this.getFirstCondition(); CssCondition secondCondition = this.getSecondCondition(); ElementFinder elementFinder = firstCondition.toElementFinder(leftFinder); return secondCondition.toElementFinder(elementFinder); }
@Test public void translate__compound_condition() { // given String compoundConditionSelector = "a.conditionA.conditionB"; // when CssSelector cssSelector = ParseTreeBuilder.parse(compoundConditionSelector).firstSelector(); // then assertThat(cssSelector, instanceOf(CssConditionalSelector.class)); CssSelector sqCssSelector = ((CssConditionalSelector) cssSelector).getCssSelector(); CssCondition cssCondition = ((CssConditionalSelector) cssSelector).getCssCondition(); assertThat(sqCssSelector, instanceOf(CssTagNameSelector.class)); assertThat(((CssTagNameSelector) sqCssSelector).getTagName(), is("a")); assertThat(cssCondition, instanceOf(CssAndCondition.class)); CssCondition sqCssFirstCondition = ((CssAndCondition) cssCondition).getFirstCondition(); CssCondition sqCssSecondCondition = ((CssAndCondition) cssCondition).getSecondCondition(); assertThat(sqCssFirstCondition, instanceOf(CssClassAttributeCondition.class)); assertThat(((CssClassAttributeCondition) sqCssFirstCondition).getClassName(), is("conditionA")); assertThat(sqCssSecondCondition, instanceOf(CssClassAttributeCondition.class)); assertThat(((CssClassAttributeCondition) sqCssSecondCondition).getClassName(), is("conditionB")); }
@Override public CssCondition visit(AstCssAndCondition astCssAndCondition) { return new CssAndCondition(astCssAndCondition); }