88import org .openqa .selenium .remote .AbstractDriverOptions ;
99
1010import java .util .Collections ;
11- import java .util .HashMap ;
1211import java .util .Map ;
1312
1413public enum Browser {
1514
1615 CHROME {
1716 @ Override
1817 protected ChromeOptions getOptions () {
19- Map <String , Object > prefs = Map .ofEntries (
20- Map .entry ("profile.default_content_setting_values.notifications" , 2 ),
21- Map .entry ("profile.managed_default_content_settings.javascript" , 1 ),
22- Map .entry ("credentials_enable_service" , false ),
23- Map .entry ("profile.password_manager_enabled" , false ));
24-
2518 final ChromeOptions chromeOptions = new ChromeOptions ();
26- chromeOptions
27- .enableBiDi ()
28- .setExperimentalOption ("excludeSwitches" , Collections .singletonList ("enable-automation" ))
29- .setExperimentalOption ("prefs" , prefs )
30- .addArguments ("--disable-gpu" , "--disable-logging" , "--disable-dev-shm-usage" )
31- .setPageLoadStrategy (PageLoadStrategy .NORMAL )
32- .setAcceptInsecureCerts (true );
19+ applyCommonOptions (chromeOptions );
20+ chromeOptions .setExperimentalOption ("prefs" , getCommonPrefs ());
3321 return chromeOptions ;
3422 }
23+
24+ @ Override
25+ protected String getHeadlessArgument () {
26+ return "headless=new" ;
27+ }
28+
29+ @ Override
30+ protected void addHeadlessArgument (AbstractDriverOptions <?> options ) {
31+ ((ChromeOptions ) options ).addArguments (getHeadlessArgument ());
32+ }
3533 },
3634 FIREFOX {
3735 @ Override
@@ -51,26 +49,35 @@ protected FirefoxOptions getOptions() {
5149 .setProfile (firefoxProfile );
5250 return firefoxOptions ;
5351 }
52+
53+ @ Override
54+ protected String getHeadlessArgument () {
55+ return "-headless" ;
56+ }
57+
58+ @ Override
59+ protected void addHeadlessArgument (AbstractDriverOptions <?> options ) {
60+ ((FirefoxOptions ) options ).addArguments (getHeadlessArgument ());
61+ }
5462 },
5563 EDGE {
5664 @ Override
5765 protected EdgeOptions getOptions () {
58- Map <String , Object > prefs = Map .ofEntries (
59- Map .entry ("profile.default_content_setting_values.notifications" , 2 ),
60- Map .entry ("profile.managed_default_content_settings.javascript" , 1 ),
61- Map .entry ("credentials_enable_service" , false ),
62- Map .entry ("profile.password_manager_enabled" , false ));
63-
6466 final EdgeOptions edgeOptions = new EdgeOptions ();
65- edgeOptions
66- .enableBiDi ()
67- .setExperimentalOption ("excludeSwitches" , Collections .singletonList ("enable-automation" ))
68- .setExperimentalOption ("prefs" , prefs )
69- .addArguments ("--disable-gpu" , "--disable-logging" , "--disable-dev-shm-usage" )
70- .setPageLoadStrategy (PageLoadStrategy .NORMAL )
71- .setAcceptInsecureCerts (true );
67+ applyCommonOptions (edgeOptions );
68+ edgeOptions .setExperimentalOption ("prefs" , getCommonPrefs ());
7269 return edgeOptions ;
7370 }
71+
72+ @ Override
73+ protected String getHeadlessArgument () {
74+ return "headless=new" ;
75+ }
76+
77+ @ Override
78+ protected void addHeadlessArgument (AbstractDriverOptions <?> options ) {
79+ ((EdgeOptions ) options ).addArguments (getHeadlessArgument ());
80+ }
7481 };
7582
7683 @ Override
@@ -79,4 +86,34 @@ public String toString() {
7986 }
8087
8188 protected abstract AbstractDriverOptions <?> getOptions ();
89+
90+ protected abstract String getHeadlessArgument ();
91+
92+ protected abstract void addHeadlessArgument (AbstractDriverOptions <?> options );
93+
94+ private static Map <String , Object > getCommonPrefs () {
95+ return Map .ofEntries (
96+ Map .entry ("profile.default_content_setting_values.notifications" , 2 ),
97+ Map .entry ("profile.managed_default_content_settings.javascript" , 1 ),
98+ Map .entry ("credentials_enable_service" , false ),
99+ Map .entry ("profile.password_manager_enabled" , false ));
100+ }
101+
102+ private static void applyCommonOptions (ChromeOptions options ) {
103+ options
104+ .enableBiDi ()
105+ .setExperimentalOption ("excludeSwitches" , Collections .singletonList ("enable-automation" ))
106+ .addArguments ("--disable-gpu" , "--disable-logging" , "--disable-dev-shm-usage" )
107+ .setPageLoadStrategy (PageLoadStrategy .NORMAL )
108+ .setAcceptInsecureCerts (true );
109+ }
110+
111+ private static void applyCommonOptions (EdgeOptions options ) {
112+ options
113+ .enableBiDi ()
114+ .setExperimentalOption ("excludeSwitches" , Collections .singletonList ("enable-automation" ))
115+ .addArguments ("--disable-gpu" , "--disable-logging" , "--disable-dev-shm-usage" )
116+ .setPageLoadStrategy (PageLoadStrategy .NORMAL )
117+ .setAcceptInsecureCerts (true );
118+ }
82119}
0 commit comments