@Override public TagComponent toXPath(ArgumentMap argumentMap, SiblingSelector siblingSelector) { TagComponent previousElementCompiled = XPathComponentCompilerService.compileSelector(argumentMap, siblingSelector.getSelector()); TagComponent siblingElementCompiled = XPathComponentCompilerService.compileSelector(argumentMap, siblingSelector.getSiblingSelector()); return AdjacentComponent.combine(previousElementCompiled, siblingElementCompiled); }
@Override public TagComponent toXPath(ArgumentMap argumentMap, DescendantSelector descendantSelector) { TagComponent parentComponent = XPathComponentCompilerService.compileSelector(argumentMap, descendantSelector.getAncestorSelector()); TagComponent childComponent = XPathComponentCompilerService.compileSelector(argumentMap, descendantSelector.getSimpleSelector()); return DescendantDirectComponent.combine(parentComponent, childComponent); }
@Override public TagComponent toXPath(ArgumentMap argumentMap, SiblingSelector siblingSelector) { TagComponent previousElementCompiled = XPathComponentCompilerService.compileSelector(argumentMap, siblingSelector.getSelector()); TagComponent siblingElementCompiled = XPathComponentCompilerService.compileSelector(argumentMap, siblingSelector.getSiblingSelector()); return AdjacentComponent.combine(previousElementCompiled, siblingElementCompiled); }
@Override public TagComponent toXPath(ArgumentMap argumentMap, DescendantSelector descendantSelector) { Selector ancestorCSSSelector = descendantSelector.getAncestorSelector(); TagComponent ancestorCompiled = XPathComponentCompilerService.compileSelector(argumentMap, ancestorCSSSelector); SimpleSelector descendantCSSSelector = descendantSelector.getSimpleSelector(); TagComponent childrenCompiled = XPathComponentCompilerService.compileSelector(argumentMap, descendantCSSSelector); return DescendantGeneralComponent.combine(ancestorCompiled, childrenCompiled); }
static boolean isEq(WebDriver driver, WebElement element, PseudoClassSelector pseudoClassSelector, int index) { TagComponent compiledSelector = XPathComponentCompilerService.compileSelector(pseudoClassSelector.getArgumentMap(), pseudoClassSelector.getSelector()); List<WebElement> elements = compiledSelector.findWebElements(driver); if (index < 0) { return elements.size() >= -index && elements.get(elements.size() + index).equals(element); } return elements.size() > index && elements.get(index).equals(element); }
static boolean isEq(WebDriver driver, WebElement element, PseudoClassSelector pseudoClassSelector, int index) { TagComponent compiledSelector = XPathComponentCompilerService.compileSelector(pseudoClassSelector.getArgumentMap(), pseudoClassSelector.getSelector()); List<WebElement> elements = compiledSelector.findWebElements(driver); if (index < 0) { return elements.size() >= -index && elements.get(elements.size() + index).equals(element); } return elements.size() > index && elements.get(index).equals(element); }
@Override public TagComponent toXPath(ArgumentMap argumentMap, DescendantSelector descendantSelector) { Selector ancestorCSSSelector = descendantSelector.getAncestorSelector(); TagComponent ancestorCompiled = XPathComponentCompilerService.compileSelector(argumentMap, ancestorCSSSelector); SimpleSelector descendantCSSSelector = descendantSelector.getSimpleSelector(); TagComponent childrenCompiled = XPathComponentCompilerService.compileSelector(argumentMap, descendantCSSSelector); return DescendantGeneralComponent.combine(ancestorCompiled, childrenCompiled); }
@Override public TagComponent toXPath(ArgumentMap argumentMap, DescendantSelector descendantSelector) { TagComponent parentComponent = XPathComponentCompilerService.compileSelector(argumentMap, descendantSelector.getAncestorSelector()); TagComponent childComponent = XPathComponentCompilerService.compileSelector(argumentMap, descendantSelector.getSimpleSelector()); return DescendantDirectComponent.combine(parentComponent, childComponent); }
private static TagComponent compileIntoTagComponent(W3cCssSelectorWithMap w3cCssSelectorWithMap) { return compileSelector(w3cCssSelectorWithMap.getArgumentMap(), w3cCssSelectorWithMap.getSelector()); }
@Override public boolean isPseudoClass(WebDriver driver, WebElement element, PseudoClassSelector pseudoClassSelector) { TagComponent compiledSelector = XPathComponentCompilerService.compileSelector(pseudoClassSelector.getArgumentMap(), pseudoClassSelector.getSelector()); List<WebElement> elements = compiledSelector.findWebElements(driver); return elements.indexOf(element) % 2 == 1; }
@Override public boolean isPseudoClass(WebDriver driver, WebElement element, PseudoClassSelector pseudoClassSelector) { TagComponent compiledSelector = XPathComponentCompilerService.compileSelector(pseudoClassSelector.getArgumentMap(), pseudoClassSelector.getSelector()); List<WebElement> elements = compiledSelector.findWebElements(driver); return elements.indexOf(element) % 2 == 1; }
private static TagComponent compileIntoTagComponent(W3cCssSelectorWithMap w3cCssSelectorWithMap) { return compileSelector(w3cCssSelectorWithMap.getArgumentMap(), w3cCssSelectorWithMap.getSelector()); }
@Override public boolean isPseudoClass(WebDriver driver, WebElement element, PseudoClassSelector pseudoClassSelector) { TagComponent compiledSelector = XPathComponentCompilerService.compileSelector(pseudoClassSelector.getArgumentMap(), pseudoClassSelector.getSelector()); List<WebElement> elements = compiledSelector.findWebElements(driver); return elements.indexOf(element) % 2 == 0; }
@Override public boolean isPseudoClass(WebDriver driver, WebElement element, PseudoClassSelector pseudoClassSelector) { TagComponent compiledSelector = XPathComponentCompilerService.compileSelector(pseudoClassSelector.getArgumentMap(), pseudoClassSelector.getSelector()); List<WebElement> elements = compiledSelector.findWebElements(driver); return elements.indexOf(element) % 2 == 0; }
@Override public TagComponent toXPath(ArgumentMap argumentMap, SiblingSelector siblingSelector) { TagComponent previousCompiledExpression = XPathComponentCompilerService.compileSelector(argumentMap, siblingSelector.getSelector()); TagComponent siblingSelectorCompiledAdjacentExpression = XPathComponentCompilerService.compileSelector(argumentMap, siblingSelector.getSiblingSelector()); ConditionSimpleComponent positionOne = new ConditionSimpleComponent("[position() = 1]"); TagComponent siblingAtPositionOne = siblingSelectorCompiledAdjacentExpression.cloneAndCombineTo(positionOne); return AdjacentComponent.combine(previousCompiledExpression, siblingAtPositionOne); }
@Override public TagComponent toXPath(ArgumentMap argumentMap, SiblingSelector siblingSelector) { TagComponent previousCompiledExpression = XPathComponentCompilerService.compileSelector(argumentMap, siblingSelector.getSelector()); TagComponent siblingSelectorCompiledAdjacentExpression = XPathComponentCompilerService.compileSelector(argumentMap, siblingSelector.getSiblingSelector()); ConditionSimpleComponent positionOne = new ConditionSimpleComponent("[position() = 1]"); TagComponent siblingAtPositionOne = siblingSelectorCompiledAdjacentExpression.cloneAndCombineTo(positionOne); return AdjacentComponent.combine(previousCompiledExpression, siblingAtPositionOne); }
@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); }
@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); }
public static TagComponent selectorToExpression(String selector) { W3cCssSelectorListWithMap cssParsedSelectors = W3cCssSelectorWithMapParser.parseSelector(selector); SelectorList selectorList = cssParsedSelectors.getSelectorList(); return XPathComponentCompilerService.compileSelector(cssParsedSelectors.getArgumentMap(), selectorList.item(0)); }
@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 ')")); }