@@ -132,7 +132,8 @@ def _set_chrome_options(
132132 downloads_path , headless ,
133133 proxy_string , proxy_auth , proxy_user , proxy_pass ,
134134 user_agent , disable_csp , enable_sync , no_sandbox , disable_gpu ,
135- incognito , user_data_dir , extension_zip , extension_dir , servername ,
135+ incognito , guest_mode , devtools ,
136+ user_data_dir , extension_zip , extension_dir , servername ,
136137 mobile_emulator , device_width , device_height , device_pixel_ratio ):
137138 chrome_options = webdriver .ChromeOptions ()
138139 prefs = {
@@ -145,10 +146,15 @@ def _set_chrome_options(
145146 }
146147 chrome_options .add_experimental_option ("prefs" , prefs )
147148 chrome_options .add_experimental_option ("w3c" , True )
148- chrome_options .add_experimental_option (
149- "excludeSwitches" , ["enable-automation" , "enable-logging" ])
150- if servername == "localhost" or servername == "127.0.0.1" :
151- chrome_options .add_experimental_option ("useAutomationExtension" , False )
149+ if enable_sync :
150+ chrome_options .add_experimental_option (
151+ "excludeSwitches" ,
152+ ["enable-automation" , "enable-logging" , "disable-sync" ])
153+ chrome_options .add_argument ("--enable-sync" )
154+ else :
155+ chrome_options .add_experimental_option (
156+ "excludeSwitches" ,
157+ ["enable-automation" , "enable-logging" ])
152158 if mobile_emulator :
153159 emulator_settings = {}
154160 device_metrics = {}
@@ -166,12 +172,13 @@ def _set_chrome_options(
166172 emulator_settings ["userAgent" ] = user_agent
167173 chrome_options .add_experimental_option (
168174 "mobileEmulation" , emulator_settings )
169- if enable_sync :
170- chrome_options .add_experimental_option (
171- "excludeSwitches" , ["disable-sync" ])
172175 chrome_options .add_argument ("--enable-sync" )
173176 if incognito :
174177 chrome_options .add_argument ("--incognito" )
178+ elif guest_mode :
179+ chrome_options .add_argument ("--guest" )
180+ else :
181+ pass
175182 if user_data_dir :
176183 abs_path = os .path .abspath (user_data_dir )
177184 chrome_options .add_argument ("user-data-dir=%s" % abs_path )
@@ -189,6 +196,8 @@ def _set_chrome_options(
189196 chrome_options .add_argument ("--log-level=3" )
190197 chrome_options .add_argument ("--no-first-run" )
191198 chrome_options .add_argument ("--ignore-certificate-errors" )
199+ if devtools and not headless :
200+ chrome_options .add_argument ("--auto-open-devtools-for-tabs" )
192201 chrome_options .add_argument ("--allow-file-access-from-files" )
193202 chrome_options .add_argument ("--allow-insecure-localhost" )
194203 chrome_options .add_argument ("--allow-running-insecure-content" )
@@ -199,10 +208,15 @@ def _set_chrome_options(
199208 chrome_options .add_argument ("--disable-single-click-autofill" )
200209 chrome_options .add_argument ("--disable-translate" )
201210 chrome_options .add_argument ("--disable-web-security" )
211+ if servername == "localhost" or servername == "127.0.0.1" :
212+ chrome_options .add_experimental_option ("useAutomationExtension" , False )
202213 if (settings .DISABLE_CSP_ON_CHROME or disable_csp ) and not headless :
203214 # Headless Chrome doesn't support extensions, which are required
204215 # for disabling the Content Security Policy on Chrome
205216 chrome_options = _add_chrome_disable_csp_extension (chrome_options )
217+ elif not extension_zip and not extension_dir :
218+ if servername == "localhost" or servername == "127.0.0.1" :
219+ chrome_options .add_argument ("--disable-extensions" )
206220 if proxy_string :
207221 if proxy_auth :
208222 chrome_options = _add_chrome_proxy_extension (
@@ -333,8 +347,9 @@ def get_driver(browser_name, headless=False, use_grid=False,
333347 servername = 'localhost' , port = 4444 , proxy_string = None ,
334348 user_agent = None , cap_file = None , disable_csp = None ,
335349 enable_sync = None , no_sandbox = None , disable_gpu = None ,
336- incognito = None , user_data_dir = None , extension_zip = None ,
337- extension_dir = None , mobile_emulator = False , device_width = None ,
350+ incognito = None , guest_mode = None , devtools = None ,
351+ user_data_dir = None , extension_zip = None , extension_dir = None ,
352+ mobile_emulator = False , device_width = None ,
338353 device_height = None , device_pixel_ratio = None ):
339354 proxy_auth = False
340355 proxy_user = None
@@ -370,22 +385,25 @@ def get_driver(browser_name, headless=False, use_grid=False,
370385 browser_name , headless , servername , port ,
371386 proxy_string , proxy_auth , proxy_user , proxy_pass , user_agent ,
372387 cap_file , disable_csp , enable_sync , no_sandbox , disable_gpu ,
373- incognito , user_data_dir , extension_zip , extension_dir ,
388+ incognito , guest_mode , devtools ,
389+ user_data_dir , extension_zip , extension_dir ,
374390 mobile_emulator , device_width , device_height , device_pixel_ratio )
375391 else :
376392 return get_local_driver (
377393 browser_name , headless , servername ,
378394 proxy_string , proxy_auth , proxy_user , proxy_pass , user_agent ,
379- disable_csp , enable_sync , no_sandbox , disable_gpu , incognito ,
380- user_data_dir , extension_zip , extension_dir , mobile_emulator ,
381- device_width , device_height , device_pixel_ratio )
395+ disable_csp , enable_sync , no_sandbox , disable_gpu ,
396+ incognito , guest_mode , devtools ,
397+ user_data_dir , extension_zip , extension_dir ,
398+ mobile_emulator , device_width , device_height , device_pixel_ratio )
382399
383400
384401def get_remote_driver (
385402 browser_name , headless , servername , port , proxy_string , proxy_auth ,
386403 proxy_user , proxy_pass , user_agent , cap_file , disable_csp ,
387- enable_sync , no_sandbox , disable_gpu , incognito , user_data_dir ,
388- extension_zip , extension_dir ,
404+ enable_sync , no_sandbox , disable_gpu ,
405+ incognito , guest_mode , devtools ,
406+ user_data_dir , extension_zip , extension_dir ,
389407 mobile_emulator , device_width , device_height , device_pixel_ratio ):
390408 downloads_path = download_helper .get_downloads_folder ()
391409 download_helper .reset_downloads_folder ()
@@ -397,7 +415,8 @@ def get_remote_driver(
397415 chrome_options = _set_chrome_options (
398416 downloads_path , headless ,
399417 proxy_string , proxy_auth , proxy_user , proxy_pass , user_agent ,
400- disable_csp , enable_sync , no_sandbox , disable_gpu , incognito ,
418+ disable_csp , enable_sync , no_sandbox , disable_gpu ,
419+ incognito , guest_mode , devtools ,
401420 user_data_dir , extension_zip , extension_dir , servername ,
402421 mobile_emulator , device_width , device_height , device_pixel_ratio )
403422 capabilities = chrome_options .to_capabilities ()
@@ -508,7 +527,8 @@ def get_remote_driver(
508527def get_local_driver (
509528 browser_name , headless , servername ,
510529 proxy_string , proxy_auth , proxy_user , proxy_pass , user_agent ,
511- disable_csp , enable_sync , no_sandbox , disable_gpu , incognito ,
530+ disable_csp , enable_sync , no_sandbox , disable_gpu ,
531+ incognito , guest_mode , devtools ,
512532 user_data_dir , extension_zip , extension_dir ,
513533 mobile_emulator , device_width , device_height , device_pixel_ratio ):
514534 '''
@@ -597,7 +617,8 @@ def get_local_driver(
597617 chrome_options = _set_chrome_options (
598618 downloads_path , headless ,
599619 proxy_string , proxy_auth , proxy_user , proxy_pass , user_agent ,
600- disable_csp , enable_sync , no_sandbox , disable_gpu , incognito ,
620+ disable_csp , enable_sync , no_sandbox , disable_gpu ,
621+ incognito , guest_mode , devtools ,
601622 user_data_dir , extension_zip , extension_dir , servername ,
602623 mobile_emulator , device_width , device_height ,
603624 device_pixel_ratio )
@@ -652,7 +673,8 @@ def get_local_driver(
652673 chrome_options = _set_chrome_options (
653674 downloads_path , headless ,
654675 proxy_string , proxy_auth , proxy_user , proxy_pass , user_agent ,
655- disable_csp , enable_sync , no_sandbox , disable_gpu , incognito ,
676+ disable_csp , enable_sync , no_sandbox , disable_gpu ,
677+ incognito , guest_mode , devtools ,
656678 user_data_dir , extension_zip , extension_dir , servername ,
657679 mobile_emulator , device_width , device_height ,
658680 device_pixel_ratio )
0 commit comments