@Override public CssCondition visit(AstCssIdAttributeCondition astCssIdAttributeCondition) { return new CssIdAttributeCondition(astCssIdAttributeCondition); }
@Override public ElementFinder toElementFinder(ElementFinder leftFinder) { CssFinder newCssSelector = leftFinder.getCssFinder().merge(toCSS()); String newXPathExpression = ElementFinderUtils.conditionalSimpleXPathMerge(leftFinder.getXPathExpression(), toXPath()); return new ElementFinder(newCssSelector, newXPathExpression, leftFinder); }
@Test public void toElementFinder() { // given CssIdAttributeCondition idAttributeCondition = new CssIdAttributeCondition(new AstCssIdAttributeCondition("idz")); ElementFinder previous = ElementFinderUtilsTest.UNIVERSAL_SELECTOR_FINDER; // when ElementFinder elementFinder = idAttributeCondition.toElementFinder(previous); // then assertThat(elementFinder.toCssString(), is("#idz")); assertThat(elementFinder.canFetchThroughCssAlone(), is(true)); assertThat(elementFinder.getXPathExpression(), is(".//*[@id = 'idz']")); assertThat(elementFinder.getElementFilterList().getElementFilters(), empty()); }
@Override public CssCondition verifyTranslation(String actualSelector, String expectedId) { // given // selector arg // when CssIdAttributeCondition cssCondition = parseAndAssertFirstCssCondition(prefix + actualSelector, CssIdAttributeCondition.class); // then assertThat(cssCondition.getId(), is(expectedId)); return cssCondition; } }
@Override public ElementFinder toElementFinder(ElementFinder leftFinder) { CssFinder newCssSelector = leftFinder.getCssFinder().merge(toCSS()); String newXPathExpression = ElementFinderUtils.conditionalSimpleXPathMerge(leftFinder.getXPathExpression(), toXPath()); return new ElementFinder(newCssSelector, newXPathExpression, leftFinder); }
@Test public void translate() { // given CssSelector cssSelector = ParseTreeBuilder.parse("#ball").firstSelector(); assertThat(cssSelector, instanceOf(CssConditionalSelector.class)); // when CssSelector sqCssSelector = ((CssConditionalSelector) cssSelector).getCssSelector(); CssCondition cssCondition = ((CssConditionalSelector) cssSelector).getCssCondition(); // then assertThat(sqCssSelector, instanceOf(CssTagNameSelector.class)); assertThat(((CssTagNameSelector) sqCssSelector).getTagName(), is("*")); assertThat(cssCondition, instanceOf(CssIdAttributeCondition.class)); assertThat(((CssIdAttributeCondition) cssCondition).getId(), is("ball")); }
@Override public CssCondition visit(AstCssIdAttributeCondition astCssIdAttributeCondition) { return new CssIdAttributeCondition(astCssIdAttributeCondition); }
@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()); }