@Test public void testConditionToXPath() { W3cCssSelectorListWithMap w3cCssSelectorListWithMap = W3cCssSelectorWithMapParser.parseSelector("span.a.b"); SelectorList selectorList = w3cCssSelectorListWithMap.getSelectorList(); ConditionalSelector selector = (ConditionalSelector) selectorList.item(0); ArgumentMap argumentMap = w3cCssSelectorListWithMap.getArgumentMap(); SimpleSelector simpleSelector = selector.getSimpleSelector(); TagComponent spanTagComponent = XPathComponentCompilerService.compileSelector(argumentMap, simpleSelector); CombinatorCondition combinatorCondition = (CombinatorCondition) selector.getCondition(); ConditionComponent compiledCondition = andConditionalCssSelector.conditionToXPath(argumentMap, simpleSelector, combinatorCondition); TagComponent cs = spanTagComponent.cloneAndCombineTo(compiledCondition); assertThat(cs.toXPath(), is("(.//*[self::span and contains(concat(' ', normalize-space(@class), ' '), ' a ') and contains(concat(' ', normalize-space(@class), ' '), ' b ')])")); assertThat(cs.toXPathCondition(), is("local-name() = 'span' and contains(concat(' ', normalize-space(@class), ' '), ' a ') and contains(concat(' ', normalize-space(@class), ' '), ' b ')")); }