@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); }
/** * Compiles the selector for the given context (the context will determinate what selectors are natively * supported and what selectors should be handled by SeleniumQuery programatically) and matches elements based on it. */ @Override public List<WebElement> findElements(SearchContext context, String selector) { TagComponentList xPathLocator = XPathComponentCompilerService.compileSelectorList(selector); return xPathLocator.findWebElements(context); }
public static TagComponentList compileSelectorList(String selector) { W3cCssSelectorListWithMap parsedSelectorList = W3cCssSelectorWithMapParser.parseSelector(selector); List<TagComponent> tagComponents = new ArrayList<>(parsedSelectorList.size()); parsedSelectorList.forEach(w3cCssSelectorWithMap -> { tagComponents.add(compileIntoTagComponent(w3cCssSelectorWithMap)); }); return new TagComponentList(tagComponents); }
public static TagComponentList compileSelectorList(String selector) { W3cCssSelectorListWithMap parsedSelectorList = W3cCssSelectorWithMapParser.parseSelector(selector); List<TagComponent> tagComponents = new ArrayList<>(parsedSelectorList.size()); parsedSelectorList.forEach(w3cCssSelectorWithMap -> { tagComponents.add(compileIntoTagComponent(w3cCssSelectorWithMap)); }); return new TagComponentList(tagComponents); }
@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); }
/** * Compiles the selector for the given context (the context will determinate what selectors are natively * supported and what selectors should be handled by SeleniumQuery programatically) and matches elements based on it. */ @Override public List<WebElement> findElements(SearchContext context, String selector) { TagComponentList xPathLocator = XPathComponentCompilerService.compileSelectorList(selector); return xPathLocator.findWebElements(context); }
@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 boolean isPseudoClass(WebDriver driver, WebElement element, PseudoClassSelector pseudoClassSelector) { String hasSelector = pseudoClassSelector.getPseudoClassContent(); TagComponentList compiledSelector = XPathComponentCompilerService.compileSelectorList(hasSelector); List<WebElement> elements = compiledSelector.findWebElements(driver); return !elements.isEmpty(); }
@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 boolean isPseudoClass(WebDriver driver, WebElement element, PseudoClassSelector pseudoClassSelector) { String hasSelector = pseudoClassSelector.getPseudoClassContent(); TagComponentList compiledSelector = XPathComponentCompilerService.compileSelectorList(hasSelector); List<WebElement> elements = compiledSelector.findWebElements(driver); return !elements.isEmpty(); }
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 ConditionSimpleComponent pseudoClassToXPath(PseudoClassSelector pseudoClassSelector) { String notSelector = pseudoClassSelector.getPseudoClassContent(); String insideHasXPath = XPathComponentCompilerService.compileSelectorList(notSelector).toXPath(); insideHasXPath = insideHasXPath.substring(1, insideHasXPath.length()-1); return new ConditionSimpleComponent("[" + insideHasXPath + "]"); }
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 ConditionSimpleComponent pseudoClassToXPath(PseudoClassSelector pseudoClassSelector) { String notSelector = pseudoClassSelector.getPseudoClassContent(); String insideHasXPath = XPathComponentCompilerService.compileSelectorList(notSelector).toXPath(); insideHasXPath = insideHasXPath.substring(1, insideHasXPath.length()-1); return new ConditionSimpleComponent("[" + insideHasXPath + "]"); }
@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 ConditionSimpleComponent pseudoClassToXPath(PseudoClassSelector pseudoClassSelector) { String notSelector = pseudoClassSelector.getPseudoClassContent(); String insideNotXPath = XPathComponentCompilerService.compileSelectorList(notSelector).toXPathCondition(); return new ConditionSimpleComponent("[not(" + insideNotXPath + ")]"); }
@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 ConditionSimpleComponent pseudoClassToXPath(PseudoClassSelector pseudoClassSelector) { String notSelector = pseudoClassSelector.getPseudoClassContent(); String insideNotXPath = XPathComponentCompilerService.compileSelectorList(notSelector).toXPathCondition(); return new ConditionSimpleComponent("[not(" + insideNotXPath + ")]"); }
private static TagComponent compileIntoTagComponent(W3cCssSelectorWithMap w3cCssSelectorWithMap) { return compileSelector(w3cCssSelectorWithMap.getArgumentMap(), w3cCssSelectorWithMap.getSelector()); }
@Test public void toXPath__id() { TagComponentList compileSelectorList = XPathComponentCompilerService.compileSelectorList("#ball"); assertThat(compileSelectorList.toXPath(), is("(.//*[@id = 'ball'])")); }