@Override public CssCondition visit(AstCssContainsWordAttributeCondition astCssContainsWordAttributeCondition) { return new CssContainsWordAttributeCondition(astCssContainsWordAttributeCondition); }
protected String toXPath() { String escapedAttributeName = AttributeEvaluatorUtils.toXPathAttribute(this.getAttributeName()); String escapedWantedValueSurroundedBySpaces = SelectorUtils.intoEscapedXPathString(" " + this.getWantedValue() + " "); return "contains(concat(' ', normalize-space(" + escapedAttributeName + "), ' '), " + escapedWantedValueSurroundedBySpaces + ")"; }
@Test public void toElementFinder() { // given CssContainsWordAttributeCondition containsWordAttributeCondition = new CssContainsWordAttributeCondition(new AstCssContainsWordAttributeCondition("values", "10")); ElementFinder previous = ElementFinderUtilsTest.UNIVERSAL_SELECTOR_FINDER; // when ElementFinder elementFinder = containsWordAttributeCondition.toElementFinder(previous); // then assertThat(elementFinder.toCssString(), is("[values~='10']")); assertThat(elementFinder.canFetchThroughCssAlone(), is(true)); String attrName = "@*[translate(name(), 'ABCDEFGHIJKLMNOPQRSTUVWXYZ', 'abcdefghijklmnopqrstuvwxyz') = 'values']"; assertThat(elementFinder.getXPathExpression(), is(".//*[contains(concat(' ', normalize-space("+attrName+"), ' '), ' 10 ')]")); assertThat(elementFinder.getElementFilterList().getElementFilters(), empty()); }
protected String toXPath() { String escapedAttributeName = AttributeEvaluatorUtils.toXPathAttribute(this.getAttributeName()); String escapedWantedValueSurroundedBySpaces = SelectorUtils.intoEscapedXPathString(" " + this.getWantedValue() + " "); return "contains(concat(' ', normalize-space(" + escapedAttributeName + "), ' '), " + escapedWantedValueSurroundedBySpaces + ")"; }
@Override public CssCondition visit(AstCssContainsWordAttributeCondition astCssContainsWordAttributeCondition) { return new CssContainsWordAttributeCondition(astCssContainsWordAttributeCondition); }