@Override public CssPseudoClassCondition visit(AstCssNotPseudoClass astCssNotPseudoClass) { return new CssNotPseudoClass(astCssNotPseudoClass); }
@Override public CssPseudoClassCondition visit(AstCssNotPseudoClass astCssNotPseudoClass) { return new CssNotPseudoClass(astCssNotPseudoClass); }
@Test(expected = io.github.seleniumquery.by.firstgen.css.pseudoclasses.UnsupportedPseudoClassException.class) public void toElementFinder__not_and_direct_ancestor() { assertPseudoClassHasElementFinderWhenNativelySupported( ":not(div)", new CssNotPseudoClass(new AstCssNotPseudoClass(ParseTreeBuilder.parse("h3>h4"))), // :not(h3>h4) "*", PseudoClassAssertFinderUtils.PURE_CSS_IS_NOT_SUPPORTED, ".//*[not(self::h4 and DIRECT-ANCESTOR/*[self::h3])]", empty() ); }
@Test(expected = io.github.seleniumquery.by.firstgen.css.pseudoclasses.UnsupportedPseudoClassException.class) public void toElementFinder__not_and_general_sibling() { assertPseudoClassHasElementFinderWhenNativelySupported( ":not(div)", new CssNotPseudoClass(new AstCssNotPseudoClass(ParseTreeBuilder.parse("h3+h4"))), // :not(h3~h4) "*", PseudoClassAssertFinderUtils.PURE_CSS_IS_NOT_SUPPORTED, ".//*[not(self::h4 and GENERAL-SIBLING/*[self::h3])]", empty() ); }
@Test(expected = io.github.seleniumquery.by.firstgen.css.pseudoclasses.UnsupportedPseudoClassException.class) public void toElementFinder__not_and_direct_sibling() { assertPseudoClassHasElementFinderWhenNativelySupported( ":not(div)", new CssNotPseudoClass(new AstCssNotPseudoClass(ParseTreeBuilder.parse("h3+h4"))), // :not(h3+h4) "*", PseudoClassAssertFinderUtils.PURE_CSS_IS_NOT_SUPPORTED, ".//*[not(self::h4 and DIRECT-SIBLING/*[self::h3])]", empty() ); }
@Test public void toElementFinder__when_driver_has_native_support() { assertPseudoClassHasElementFinderWhenNativelySupported( ":not(div)", new CssNotPseudoClass(new AstCssNotPseudoClass(ParseTreeBuilder.parse("span"))), // :not(span) ":not(span)", PseudoClassAssertFinderUtils.PURE_CSS_IS_SUPPORTED, ".//*[not(self::span)]", empty() ); }
@Test public void toElementFinder__when_driver_has_native_support_BUT_inner_css_can_be_separated() { assertPseudoClassHasElementFinderWhenNativelySupported( ":not(div)", new CssNotPseudoClass(new AstCssNotPseudoClass(ParseTreeBuilder.parse("h1,h2"))), // :not(h1,h2) ":not(h1):not(h2)", PseudoClassAssertFinderUtils.PURE_CSS_IS_SUPPORTED, ".//*[not(self::h1 | self::h2)]", empty() ); }
@Test(expected = io.github.seleniumquery.by.firstgen.css.pseudoclasses.UnsupportedPseudoClassException.class) public void toElementFinder__not_and_general_ancestor() { assertPseudoClassHasElementFinderWhenNativelySupported( ":not(div)", new CssNotPseudoClass(new AstCssNotPseudoClass(ParseTreeBuilder.parse("h3 h4"))), // :not(h3 h4) "*", PseudoClassAssertFinderUtils.PURE_CSS_IS_NOT_SUPPORTED, ".//*[not(self::h4 and ANY-ANCESTOR/*[self::h3])]", empty() ); }
@Test public void toElementFinder__when_driver_does_NOT_have_native_support() { CssNotPseudoClass notTag = new CssNotPseudoClass(new AstCssNotPseudoClass(ParseTreeBuilder.parse("tag"))); // :not(tag) assertPseudoClass(notTag).whenNotNativelySupported().translatesToPureXPath(".//*[not(self::tag)]"); }