@Override public CssCondition visit(AstCssContainsPrefixAttributeCondition astCssContainsPrefixAttributeCondition) { return new CssContainsPrefixAttributeCondition(astCssContainsPrefixAttributeCondition); }
protected String toXPath() { String attrName = AttributeEvaluatorUtils.toXPathAttribute(this.getAttributeName()); String attrValue = SelectorUtils.intoEscapedXPathString(this.getWantedValue()); String attrValueWithSuffix = SelectorUtils.intoEscapedXPathString(this.getWantedValue() + "-"); return "("+attrName+" = "+attrValue+" or starts-with("+ attrName+", "+attrValueWithSuffix+"))"; }
@Test public void toElementFinder() { // given CssContainsPrefixAttributeCondition containsPrefixAttributeCondition = new CssContainsPrefixAttributeCondition(new AstCssContainsPrefixAttributeCondition("hreflang", "en")); ElementFinder previous = ElementFinderUtilsTest.UNIVERSAL_SELECTOR_FINDER; // when ElementFinder elementFinder = containsPrefixAttributeCondition.toElementFinder(previous); // then assertThat(elementFinder.toCssString(), is("[hreflang|='en']")); assertThat(elementFinder.canFetchThroughCssAlone(), is(true)); String hreflang = "@*[translate(name(), 'ABCDEFGHIJKLMNOPQRSTUVWXYZ', 'abcdefghijklmnopqrstuvwxyz') = 'hreflang']"; assertThat(elementFinder.getXPathExpression(), is(String.format(".//*[(%s = 'en' or starts-with(%s, 'en-'))]", hreflang, hreflang))); assertThat(elementFinder.getElementFilterList().getElementFilters(), empty()); }
protected String toXPath() { String attrName = AttributeEvaluatorUtils.toXPathAttribute(this.getAttributeName()); String attrValue = SelectorUtils.intoEscapedXPathString(this.getWantedValue()); String attrValueWithSuffix = SelectorUtils.intoEscapedXPathString(this.getWantedValue() + "-"); return "("+attrName+" = "+attrValue+" or starts-with("+ attrName+", "+attrValueWithSuffix+"))"; }
@Override public CssCondition visit(AstCssContainsPrefixAttributeCondition astCssContainsPrefixAttributeCondition) { return new CssContainsPrefixAttributeCondition(astCssContainsPrefixAttributeCondition); }