@Override public XPathAndFilterFinder toXPath(WebDriver webDriver) { int index = astCssEqPseudoClass.getArgument(); if (index >= 0) { return XPathAndFilterFinder.pureXPath("position() = " + (index + 1)); } int positionFromLast = -index - 1; if (positionFromLast == 0) { return XPathAndFilterFinder.pureXPath("position() = last()"); } return XPathAndFilterFinder.pureXPath("position() = (last()-" + positionFromLast + ")"); }
@Test public void visitCssEqPseudoClass() { assertVisitorVisitsCorrectClass(new AstCssEqPseudoClass(99)); }
private void assertEqArgumentGeneratesXPath(int eqArgument, String eqXPathExpression) { assertPseudoClass(new CssEqPseudoClass(new AstCssEqPseudoClass(eqArgument))).whenNotNativelySupported().translatesToPureXPath(eqXPathExpression); }
pseudoClassesF.put(AstCssEqPseudoClass.PSEUDO, a -> new AstCssEqPseudoClass(extractIndexArgument(a, AstCssEqPseudoClass.PSEUDO))); pseudoClassesF.put(AstCssEvenPseudoClass.PSEUDO, a -> new AstCssEvenPseudoClass()); pseudoClassesF.put(AstCssFirstPseudoClass.PSEUDO, a -> new AstCssFirstPseudoClass());
@Override public XPathAndFilterFinder toXPath(WebDriver webDriver) { int index = astCssEqPseudoClass.getArgument(); if (index >= 0) { return XPathAndFilterFinder.pureXPath("position() = " + (index + 1)); } int positionFromLast = -index - 1; if (positionFromLast == 0) { return XPathAndFilterFinder.pureXPath("position() = last()"); } return XPathAndFilterFinder.pureXPath("position() = (last()-" + positionFromLast + ")"); }
pseudoClassesF.put(AstCssEqPseudoClass.PSEUDO, a -> new AstCssEqPseudoClass(extractIndexArgument(a, AstCssEqPseudoClass.PSEUDO))); pseudoClassesF.put(AstCssEvenPseudoClass.PSEUDO, a -> new AstCssEvenPseudoClass()); pseudoClassesF.put(AstCssFirstPseudoClass.PSEUDO, a -> new AstCssFirstPseudoClass());