2626import static io .github .seleniumquery .by .csstree .condition .pseudoclass .PseudoClassAssertLocatorUtils .*;
2727import static io .github .seleniumquery .by .csstree .condition .pseudoclass .PseudoClassTestUtils .assertPseudo ;
2828import static io .github .seleniumquery .by .csstree .condition .pseudoclass .form .SQCssInputTypeAttributePseudoClassTest .TYPE_ATTR_LOWER_CASE ;
29- import static io .github .seleniumquery .by .locator .SQLocatorUtilsTest .universalSelectorLocator ;
29+ import static io .github .seleniumquery .by .locator .SQLocatorUtilsTest .* ;
3030import static org .hamcrest .collection .IsIterableContainingInOrder .contains ;
3131
3232public class SQCssSelectedPseudoClassTest {
3333
3434 private static final String SELECTED_PSEUDO = ":selected" ;
3535 private static final String SELECTED_XPATH_EXPRESSION = ".//*[self::option]" ;
36+
3637 private static final String CHECKED_AND_SELECTED_XPATH_EXPRESSION = ".//*[" +
3738 "((self::input and (" + TYPE_ATTR_LOWER_CASE +" = 'radio' or " + TYPE_ATTR_LOWER_CASE +" = 'checkbox')) or self::option) and self::option" +
3839 "]" ;
3940
41+ private static final String CHECKED_PSEUDO = ":checked" ;
42+
4043 @ Test
4144 public void translate () {
4245 assertPseudo (SELECTED_PSEUDO , SQCssSelectedPseudoClass .class );
@@ -45,7 +48,7 @@ public void translate() {
4548 @ Test
4649 public void toSQLocator__when_driver_has_native_support () {
4750 // supports pure CSS, but it is a translated one
48- SQLocator previousLocator = universalSelectorLocator (SQLocatorUtilsTest .createMockDriverWithNativeSupportFor (":checked" ));
51+ SQLocator previousLocator = universalSelectorLocator (SQLocatorUtilsTest .createMockDriverWithNativeSupportFor (CHECKED_PSEUDO ));
4952 assertPseudoClassHasLocator (
5053 new SQCssSelectedPseudoClass (),
5154 previousLocator ,
@@ -69,7 +72,7 @@ public void toSQLocator__when_driver_does_NOT_have_native_support() {
6972 @ Test
7073 public void toSQLocator__when_driver_has_native_supportx () {
7174 // supports pure CSS, but it is a translated one
72- WebDriver mockDriverWithNativeSupportForChecked = SQLocatorUtilsTest .createMockDriverWithNativeSupportFor (":checked" );
75+ WebDriver mockDriverWithNativeSupportForChecked = SQLocatorUtilsTest .createMockDriverWithNativeSupportFor (CHECKED_PSEUDO );
7376 SQLocator locatorAfterChecked = new SQCssCheckedPseudoClass ().toSQLocator (universalSelectorLocator (mockDriverWithNativeSupportForChecked ));
7477
7578 assertPseudoClassHasLocator (
@@ -82,4 +85,40 @@ public void toSQLocator__when_driver_has_native_supportx() {
8285 );
8386 }
8487
88+ /**
89+ * #Cross-Driver
90+ * PhantomJSDriver's :checked has bugs!
91+ * See: {@link integration.crossdriver.driverbugs.PhantomJSAndHtmlUnitCheckedSelectorBugTest}
92+ */
93+ @ Test
94+ public void toSQLocator__when_driver_is_PHANTOMJSDRIVER_it_behaves_like_it_does_NOT_have_native_support () {
95+ WebDriver driver = createMockDriverWithNativeSupporForSelectorAndEmulatingPhantomJS (CHECKED_PSEUDO );
96+ SQLocator previousLocator = SQLocatorUtilsTest .universalSelectorLocator (driver );
97+ assertPseudoClassHasLocator (
98+ new SQCssSelectedPseudoClass (),
99+ previousLocator ,
100+ CSS_ALL_TAGS_SELECTOR , PURE_CSS_IS_NOT_SUPPORTED ,
101+ SELECTED_XPATH_EXPRESSION ,
102+ contains (SelectedPseudoClass .SELECTED_FILTER )
103+ );
104+ }
105+
106+ /**
107+ * #Cross-Driver
108+ * HtmlUnitDriver's :checked has bugs!
109+ * See: {@link integration.crossdriver.driverbugs.PhantomJSAndHtmlUnitCheckedSelectorBugTest}
110+ */
111+ @ Test
112+ public void toSQLocator__when_driver_is_HTMLUNITDRIVER_it_behaves_like_it_does_NOT_have_native_support () {
113+ WebDriver driver = createMockDriverWithNativeSupporForSelectorAndEmulatingHtmlUnit (CHECKED_PSEUDO );
114+ SQLocator previousLocator = SQLocatorUtilsTest .universalSelectorLocator (driver );
115+ assertPseudoClassHasLocator (
116+ new SQCssSelectedPseudoClass (),
117+ previousLocator ,
118+ CSS_ALL_TAGS_SELECTOR , PURE_CSS_IS_NOT_SUPPORTED ,
119+ SELECTED_XPATH_EXPRESSION ,
120+ contains (SelectedPseudoClass .SELECTED_FILTER )
121+ );
122+ }
123+
85124}
0 commit comments