@Test public void conditionalSimpleXPathMerge__should_remove_last_previous_condition_if_it_was_just_true_ALTERNATE() { assertLeftAndRightExpressionsAreSimplyMergedTo(".//*[self::a]/*[true()]", "newStuff", ".//*[self::a]/*[newStuff]"); }
private static void assertPseudoClassHasFinderWhenNotNativelySupported(CssCondition pseudoClassObject, String expectedCss, boolean canPureCss, String expectedXPath, Matcher<? super List<ElementFilter>> elementFilterMatcher) { ElementFinder previousFinder = universalSelectorFinder(createWebDriverWithNativeSupportForNoPseudoClass()); assertPseudoClassHasFinder( pseudoClassObject, previousFinder, expectedCss, canPureCss, expectedXPath, elementFilterMatcher ); }
public static void assertPseudoClassHasElementFinderWhenNativelySupported(String pseudoExpressionThatShouldPassNativeSupportCheck, CssCondition pseudoClassObject, String expectedCss, boolean canPureCss, String expectedXPath, Matcher<? super List<ElementFilter>> elementFilterMatcher) { ElementFinder previousFinder = universalSelectorFinder( createWebDriverWithNativeSupportForPseudo(pseudoExpressionThatShouldPassNativeSupportCheck) ); assertPseudoClassHasFinder( pseudoClassObject, previousFinder, expectedCss, canPureCss, expectedXPath, elementFilterMatcher ); }
/** * #Cross-Driver * PhantomJSDriver's :checked has bugs! * See: {@link PhantomJSCheckedSelectorBugTest} */ @Test public void toElementFinder__when_driver_is_PHANTOMJSDRIVER_it_behaves_like_it_does_NOT_have_native_support() { ElementFinder previousFinder = ElementFinderUtilsTest.universalSelectorFinder(createWebDriverEmulatingPhantomJSAndWithNativeSupporForPseudo(CHECKED_PSEUDO)); assertPseudoClassHasFinder( new CssCheckedPseudoClass(), previousFinder, CSS_UNIVERSAL_SELECTOR, PURE_CSS_IS_NOT_SUPPORTED, CHECKED_XPATH_EXPRESSION, contains(CheckedPseudoClass.CHECKED_FILTER) ); }
/** * #Cross-Driver * PhantomJSDriver's :checked has bugs! * See: {@link PhantomJSCheckedSelectorBugTest} */ @Test public void toElementFinder__when_driver_is_PHANTOMJSDRIVER_it_behaves_like_it_does_NOT_have_native_support() { WebDriver driver = createWebDriverEmulatingPhantomJSAndWithNativeSupporForPseudo(CHECKED_PSEUDO); ElementFinder previousFinder = universalSelectorFinder(driver); assertPseudoClassHasFinder( new CssSelectedPseudoClass(), previousFinder, CSS_UNIVERSAL_SELECTOR, PURE_CSS_IS_NOT_SUPPORTED, SELECTED_XPATH_EXPRESSION, contains(SelectedPseudoClass.SELECTED_FILTER) ); }
@Test public void toElementFinder__when_driver_has_native_support() { // supports pure CSS, but it is a translated one ElementFinder previousFinder = universalSelectorFinder(ElementFinderUtilsTest.createWebDriverWithNativeSupportForPseudo(CHECKED_PSEUDO)); assertPseudoClassHasFinder( new CssSelectedPseudoClass(), previousFinder, "option:checked", PURE_CSS_IS_SUPPORTED, SELECTED_XPATH_EXPRESSION, contains(SelectedPseudoClass.SELECTED_FILTER) ); }
public static void assertFilterOnlyPseudoGeneratesFilter(CssPseudoClassCondition pseudoClassCondition, ElementFilter pseudoClassFilter) { ElementFinder previous = universalSelectorFinder(createWebDriverWithNativeSupportForNoPseudoClass()); // when ElementFinder elementFinder = pseudoClassCondition.toElementFinder(previous); // then assertThat(elementFinder.toCssString(), is(previous.toCssString())); assertThat(elementFinder.canFetchThroughCssAlone(), is(false)); assertThat(elementFinder.getXPathExpression(), is(previous.getXPathExpression())); assertThat(elementFinder.getElementFilterList().getElementFilters(), contains(pseudoClassFilter)); }
@Test public void conditionalSimpleXPathMerge__should_merge_XPath_condition_adding_and() { assertLeftAndRightExpressionsAreSimplyMergedTo(".//*[previousStuff]", "newStuff", ".//*[previousStuff and newStuff]"); }
@Test public void toElementFinder__when_driver_has_native_supportx() { // supports pure CSS, but it is a translated one WebDriver mockDriverWithNativeSupportForChecked = ElementFinderUtilsTest.createWebDriverWithNativeSupportForPseudo(CHECKED_PSEUDO); ElementFinder finderAfterChecked = new CssCheckedPseudoClass().toElementFinder(universalSelectorFinder(mockDriverWithNativeSupportForChecked)); assertPseudoClassHasFinder( new CssSelectedPseudoClass(), finderAfterChecked, "option:checked:checked", PURE_CSS_IS_SUPPORTED, CHECKED_AND_SELECTED_XPATH_EXPRESSION, contains(CheckedPseudoClass.CHECKED_FILTER, SelectedPseudoClass.SELECTED_FILTER) ); }
@Test public void conditionalSimpleXPathMerge__should_remove_last_previous_condition_if_it_was_just_true_but_with_care() { assertLeftAndRightExpressionsAreSimplyMergedTo(".//*[xtrue()]", "newStuff", ".//*[xtrue() and newStuff]"); }
@Test public void conditionalSimpleXPathMerge__should_remove_last_previous_condition_if_it_was_just_true() { assertLeftAndRightExpressionsAreSimplyMergedTo(".//*[true()]", "newStuff", ".//*[newStuff]"); }
@Test public void conditionalSimpleXPathMerge__should_remove_last_previous_condition_if_it_was_just_true_even_if_there_was_something_else() { assertLeftAndRightExpressionsAreSimplyMergedTo(".//*[previousStuff and true()]", "newStuff", ".//*[previousStuff and newStuff]"); }
@Test public void conditionalSimpleXPathMerge__should_remove_last_previous_condition_if_it_was_just_true_but_with_care_even_if_there_was_something_else() { assertLeftAndRightExpressionsAreSimplyMergedTo("[previousStuff and xtrue()]", "newStuff", "[previousStuff and xtrue() and newStuff]"); }