@Override public XPathAndFilterFinder toXPath(WebDriver webDriver) { int index = astCssLtPseudoClass.getArgument(); if (index >= 0) { return XPathAndFilterFinder.pureXPath("position() < " + (index + 1)); } return XPathAndFilterFinder.pureXPath("position() < (last()-" + (-index - 1) + ")"); }
@Test public void visitCssLtPseudoClass() { assertVisitorVisitsCorrectClass(new AstCssLtPseudoClass(55)); }
private void assertLtArgumentGeneratesXPath(int ltArgument, String ltXPathExpression) { assertPseudoClass(new CssLtPseudoClass(new AstCssLtPseudoClass(ltArgument))).whenNotNativelySupported().translatesToPureXPath(ltXPathExpression); }
pseudoClassesF.put(AstCssLangPseudoClass.PSEUDO_PURE_LANG, a -> new AstCssLangPseudoClass(a)); pseudoClassesF.put(AstCssLastPseudoClass.PSEUDO, a -> new AstCssLastPseudoClass()); pseudoClassesF.put(AstCssLtPseudoClass.PSEUDO, a -> new AstCssLtPseudoClass(extractIndexArgument(a, AstCssLtPseudoClass.PSEUDO))); pseudoClassesF.put(AstCssNotPseudoClass.PSEUDO, a -> new AstCssNotPseudoClass(parseFunctionalPseudoClassSelectorArgument(AstCssNotPseudoClass.PSEUDO_PURE_NOT, a))); pseudoClassesF.put(AstCssNotPseudoClass.PSEUDO_PURE_NOT, a -> new AstCssNotPseudoClass(parseFunctionalPseudoClassSelectorArgument(AstCssNotPseudoClass.PSEUDO_PURE_NOT, a)));
@Override public XPathAndFilterFinder toXPath(WebDriver webDriver) { int index = astCssLtPseudoClass.getArgument(); if (index >= 0) { return XPathAndFilterFinder.pureXPath("position() < " + (index + 1)); } return XPathAndFilterFinder.pureXPath("position() < (last()-" + (-index - 1) + ")"); }
pseudoClassesF.put(AstCssLangPseudoClass.PSEUDO_PURE_LANG, a -> new AstCssLangPseudoClass(a)); pseudoClassesF.put(AstCssLastPseudoClass.PSEUDO, a -> new AstCssLastPseudoClass()); pseudoClassesF.put(AstCssLtPseudoClass.PSEUDO, a -> new AstCssLtPseudoClass(extractIndexArgument(a, AstCssLtPseudoClass.PSEUDO))); pseudoClassesF.put(AstCssNotPseudoClass.PSEUDO, a -> new AstCssNotPseudoClass(parseFunctionalPseudoClassSelectorArgument(AstCssNotPseudoClass.PSEUDO_PURE_NOT, a))); pseudoClassesF.put(AstCssNotPseudoClass.PSEUDO_PURE_NOT, a -> new AstCssNotPseudoClass(parseFunctionalPseudoClassSelectorArgument(AstCssNotPseudoClass.PSEUDO_PURE_NOT, a)));