public ConditionalCssSelectorFactory(ConditionalCssSelector conditionalCssSelector) { this.andConditionalCssSelector = new AndConditionalCssSelector(conditionalCssSelector); }
ConditionComponent conditionToXPath(ArgumentMap argumentMap, Selector simpleSelector, Condition condition) { @SuppressWarnings("unchecked") CssConditionalSelector<Condition, ConditionComponent> evaluator = (CssConditionalSelector<Condition, ConditionComponent>) conditionalCssSelectorFactory.getSelector(condition); return evaluator.conditionToXPath(argumentMap, simpleSelector, condition); }
@Override public boolean isCondition(WebDriver driver, WebElement element, ArgumentMap argumentMap, Selector selectorUpToThisPoint, CombinatorCondition combinatorCondition) { ConditionalSelectorImpl selectorUpToThisPointPlusFirstCondition = new ConditionalSelectorImpl( (SimpleSelector) selectorUpToThisPoint, combinatorCondition.getFirstCondition()); return conditionalEvaluator.isCondition(driver, element, argumentMap, selectorUpToThisPoint, combinatorCondition.getFirstCondition()) && conditionalEvaluator.isCondition(driver, element, argumentMap, selectorUpToThisPointPlusFirstCondition, combinatorCondition.getSecondCondition()); }
@Override public ConditionComponent conditionToXPath(ArgumentMap argumentMap, Selector selectorUpToThisPoint, CombinatorCondition combinatorCondition) { ConditionalSelectorImpl selectorUpToThisPointPlusFirstCondition = new ConditionalSelectorImpl( (SimpleSelector) selectorUpToThisPoint, combinatorCondition.getFirstCondition() ); ConditionComponent firstCondition = conditionalEvaluator.conditionToXPath( argumentMap, selectorUpToThisPoint, combinatorCondition.getFirstCondition() ); ConditionComponent secondCondition = conditionalEvaluator.conditionToXPath( argumentMap, selectorUpToThisPointPlusFirstCondition, combinatorCondition.getSecondCondition() ); return firstCondition.cloneAndCombineTo(secondCondition); }
return new UnknownConditionalCssSelector<>(condition.getConditionType());
@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 ')")); }
/** * Gets the given condition's CssSelector and tests if the element matches it. */ boolean isCondition(WebDriver driver, WebElement element, ArgumentMap argumentMap, Selector simpleSelector, Condition condition) { @SuppressWarnings("unchecked") CssConditionalSelector<Condition, ConditionComponent> evaluator = (CssConditionalSelector<Condition, ConditionComponent>) conditionalCssSelectorFactory.getSelector(condition); return evaluator.isCondition(driver, element, argumentMap, simpleSelector, condition); }
@Override public boolean isCondition(WebDriver driver, WebElement element, ArgumentMap argumentMap, Selector selectorUpToThisPoint, CombinatorCondition combinatorCondition) { ConditionalSelectorImpl selectorUpToThisPointPlusFirstCondition = new ConditionalSelectorImpl( (SimpleSelector) selectorUpToThisPoint, combinatorCondition.getFirstCondition()); return conditionalEvaluator.isCondition(driver, element, argumentMap, selectorUpToThisPoint, combinatorCondition.getFirstCondition()) && conditionalEvaluator.isCondition(driver, element, argumentMap, selectorUpToThisPointPlusFirstCondition, combinatorCondition.getSecondCondition()); }
@Override public ConditionComponent conditionToXPath(ArgumentMap argumentMap, Selector selectorUpToThisPoint, CombinatorCondition combinatorCondition) { ConditionalSelectorImpl selectorUpToThisPointPlusFirstCondition = new ConditionalSelectorImpl( (SimpleSelector) selectorUpToThisPoint, combinatorCondition.getFirstCondition() ); ConditionComponent firstCondition = conditionalEvaluator.conditionToXPath( argumentMap, selectorUpToThisPoint, combinatorCondition.getFirstCondition() ); ConditionComponent secondCondition = conditionalEvaluator.conditionToXPath( argumentMap, selectorUpToThisPointPlusFirstCondition, combinatorCondition.getSecondCondition() ); return firstCondition.cloneAndCombineTo(secondCondition); }
public ConditionalCssSelectorFactory(ConditionalCssSelector conditionalCssSelector) { this.andConditionalCssSelector = new AndConditionalCssSelector(conditionalCssSelector); }
return new UnknownConditionalCssSelector<>(condition.getConditionType());
/** * Gets the given condition's CssSelector and tests if the element matches it. */ boolean isCondition(WebDriver driver, WebElement element, ArgumentMap argumentMap, Selector simpleSelector, Condition condition) { @SuppressWarnings("unchecked") CssConditionalSelector<Condition, ConditionComponent> evaluator = (CssConditionalSelector<Condition, ConditionComponent>) conditionalCssSelectorFactory.getSelector(condition); return evaluator.isCondition(driver, element, argumentMap, simpleSelector, condition); }
@Override public boolean is(WebDriver driver, WebElement element, ArgumentMap argumentMap, ConditionalSelector conditionalSelector) { Condition condition = conditionalSelector.getCondition(); SimpleSelector simpleSelector = conditionalSelector.getSimpleSelector(); return CssSelectorMatcherService.elementMatchesSelector(driver, element, argumentMap, simpleSelector) && isCondition(driver, element, argumentMap, simpleSelector, condition); }
@Override public TagComponent toXPath(ArgumentMap argumentMap, ConditionalSelector conditionalSelector) { Condition condition = conditionalSelector.getCondition(); SimpleSelector simpleSelector = conditionalSelector.getSimpleSelector(); TagComponent tagComponent = XPathComponentCompilerService.compileSelector(argumentMap, simpleSelector); ConditionComponent compiledCondition = conditionToXPath(argumentMap, simpleSelector, condition); return tagComponent.cloneAndCombineTo(compiledCondition); }
ConditionComponent conditionToXPath(ArgumentMap argumentMap, Selector simpleSelector, Condition condition) { @SuppressWarnings("unchecked") CssConditionalSelector<Condition, ConditionComponent> evaluator = (CssConditionalSelector<Condition, ConditionComponent>) conditionalCssSelectorFactory.getSelector(condition); return evaluator.conditionToXPath(argumentMap, simpleSelector, condition); }
@Override public boolean is(WebDriver driver, WebElement element, ArgumentMap argumentMap, ConditionalSelector conditionalSelector) { Condition condition = conditionalSelector.getCondition(); SimpleSelector simpleSelector = conditionalSelector.getSimpleSelector(); return CssSelectorMatcherService.elementMatchesSelector(driver, element, argumentMap, simpleSelector) && isCondition(driver, element, argumentMap, simpleSelector, condition); }
@Override public TagComponent toXPath(ArgumentMap argumentMap, ConditionalSelector conditionalSelector) { Condition condition = conditionalSelector.getCondition(); SimpleSelector simpleSelector = conditionalSelector.getSimpleSelector(); TagComponent tagComponent = XPathComponentCompilerService.compileSelector(argumentMap, simpleSelector); ConditionComponent compiledCondition = conditionToXPath(argumentMap, simpleSelector, condition); return tagComponent.cloneAndCombineTo(compiledCondition); }