return valueOf(s.getSelector()) + "+" + valueOf(s.getSiblingSelector());
@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); }
/** * E ~ PRE * * @author acdcjunior * @since 0.10.0 */ CssGeneralAdjacentSelector translateGeneralAdjacent(ArgumentMap argumentMap, SiblingSelector sacSiblingSelector) { CssSelector previousSelector = cssSelectorTranslator.translate(argumentMap, sacSiblingSelector.getSelector()); CssSelector siblingSelector = cssSelectorTranslator.translate(argumentMap, sacSiblingSelector.getSiblingSelector()); return new CssGeneralAdjacentSelector(previousSelector, siblingSelector); }
/** * E ~ PRE * * @author acdcjunior * @since 0.10.0 */ CssGeneralAdjacentSelector translateGeneralAdjacent(ArgumentMap argumentMap, SiblingSelector sacSiblingSelector) { CssSelector previousSelector = cssSelectorTranslator.translate(argumentMap, sacSiblingSelector.getSelector()); CssSelector siblingSelector = cssSelectorTranslator.translate(argumentMap, sacSiblingSelector.getSiblingSelector()); return new CssGeneralAdjacentSelector(previousSelector, siblingSelector); }
@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); }
/** * E + F * * @author acdcjunior * @since 0.10.0 */ CssDirectAdjacentSelector translateDirectAdjacent(ArgumentMap argumentMap, SiblingSelector siblingSelector) { CssSelector cssSelector = cssSelectorTranslator.translate(argumentMap, siblingSelector.getSelector()); CssSelector sqCssSiblingSelector = cssSelectorTranslator.translate(argumentMap, siblingSelector.getSiblingSelector()); return new CssDirectAdjacentSelector(cssSelector, sqCssSiblingSelector); }
/** * E + F * * @author acdcjunior * @since 0.10.0 */ CssDirectAdjacentSelector translateDirectAdjacent(ArgumentMap argumentMap, SiblingSelector siblingSelector) { CssSelector cssSelector = cssSelectorTranslator.translate(argumentMap, siblingSelector.getSelector()); CssSelector sqCssSiblingSelector = cssSelectorTranslator.translate(argumentMap, siblingSelector.getSiblingSelector()); return new CssDirectAdjacentSelector(cssSelector, sqCssSiblingSelector); }
@Override public boolean is(WebDriver driver, WebElement element, ArgumentMap argumentMap, SiblingSelector siblingSelector) { WebElement previousElement = SelectorUtils.getPreviousSibling(element); return aPreviousElementExists(previousElement) && elementMatchesSelector(driver, previousElement, argumentMap, siblingSelector.getSelector()) && elementMatchesSelector(driver, element, argumentMap, siblingSelector.getSiblingSelector()); }
@Override public boolean is(WebDriver driver, WebElement element, ArgumentMap argumentMap, SiblingSelector siblingSelector) { WebElement previousElement = SelectorUtils.getPreviousSibling(element); return aPreviousElementExists(previousElement) && elementMatchesSelector(driver, previousElement, argumentMap, siblingSelector.getSelector()) && elementMatchesSelector(driver, element, argumentMap, siblingSelector.getSiblingSelector()); }
@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); }
/** * http://www.w3.org/TR/css3-selectors/#general-sibling-combinators * <div class="example"> * <p>Example:</p> * * <pre>h1 ~ pre</pre> * * <p>represents a <code>pre</code> element following an <code>h1</code>. It is a correct and valid, but partial, description of:</p> * <pre><h1>Definition of the function a</h1> * <p>Function a(x) has to be applied to all figures in the table.</p> * <pre>function a(x) = 12x/13.5</pre></pre> * </div> */ @Override public boolean is(WebDriver driver, WebElement element, ArgumentMap argumentMap, SiblingSelector siblingSelector) { boolean elementMatchesSelectorSecondPart = CssSelectorMatcherService.elementMatchesSelector(driver, element, argumentMap, siblingSelector.getSiblingSelector()); if (!elementMatchesSelectorSecondPart) { return false; } List<WebElement> previousSiblings = SelectorUtils.getPreviousSiblings(element); for (WebElement previousSibling : previousSiblings) { boolean previousSiblingMatchesSelectorFirstPart = CssSelectorMatcherService.elementMatchesSelector(driver, previousSibling, argumentMap, siblingSelector.getSelector()); if (previousSiblingMatchesSelectorFirstPart) { return true; } } return false; }
@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); }
/** * http://www.w3.org/TR/css3-selectors/#general-sibling-combinators * <div class="example"> * <p>Example:</p> * * <pre>h1 ~ pre</pre> * * <p>represents a <code>pre</code> element following an <code>h1</code>. It is a correct and valid, but partial, description of:</p> * <pre><h1>Definition of the function a</h1> * <p>Function a(x) has to be applied to all figures in the table.</p> * <pre>function a(x) = 12x/13.5</pre></pre> * </div> */ @Override public boolean is(WebDriver driver, WebElement element, ArgumentMap argumentMap, SiblingSelector siblingSelector) { boolean elementMatchesSelectorSecondPart = CssSelectorMatcherService.elementMatchesSelector(driver, element, argumentMap, siblingSelector.getSiblingSelector()); if (!elementMatchesSelectorSecondPart) { return false; } List<WebElement> previousSiblings = SelectorUtils.getPreviousSiblings(element); for (WebElement previousSibling : previousSiblings) { boolean previousSiblingMatchesSelectorFirstPart = CssSelectorMatcherService.elementMatchesSelector(driver, previousSibling, argumentMap, siblingSelector.getSelector()); if (previousSiblingMatchesSelectorFirstPart) { return true; } } return false; }
} else if (selector instanceof DirectAdjacentSelectorImpl) { SiblingSelector siblingSelector = (SiblingSelector) selector; Selector ancestor = siblingSelector.getSelector(); SimpleSelector simpleSelector = siblingSelector .getSiblingSelector(); return factory.createDirectAdjacentSelector( Selector.SAC_DIRECT_ADJACENT_SELECTOR, ancestor,
.getSiblingSelector()) & isValidSelector(selectorName, sibSelector.getSelector()); case Selector.SAC_NEGATIVE_SELECTOR:
return valueOf(s.getSelector()) + "+" + valueOf(s.getSiblingSelector());
return valueOf(s.getSelector()) + "+" + valueOf(s.getSiblingSelector());
final DomNode prev = element.getPreviousSibling(); return prev instanceof HtmlElement && selects(ss.getSelector(), (HtmlElement) prev) && selects(ss.getSiblingSelector(), element); case Selector.SAC_NEGATIVE_SELECTOR: final NegativeSelector ns = (NegativeSelector) selector;
final DomNode prev = element.getPreviousSibling(); return prev instanceof HtmlElement && selects(ss.getSelector(), (HtmlElement) prev) && selects(ss.getSiblingSelector(), element); case Selector.SAC_NEGATIVE_SELECTOR: final NegativeSelector ns = (NegativeSelector) selector;
final DomNode prev = element.getPreviousSibling(); return prev instanceof HtmlElement && selects(ss.getSelector(), (HtmlElement) prev) && selects(ss.getSiblingSelector(), element); case Selector.SAC_NEGATIVE_SELECTOR: final NegativeSelector ns = (NegativeSelector) selector;