@@ -132,7 +132,8 @@ def _set_chrome_options(
132
132
downloads_path , headless ,
133
133
proxy_string , proxy_auth , proxy_user , proxy_pass ,
134
134
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 ,
136
137
mobile_emulator , device_width , device_height , device_pixel_ratio ):
137
138
chrome_options = webdriver .ChromeOptions ()
138
139
prefs = {
@@ -145,10 +146,15 @@ def _set_chrome_options(
145
146
}
146
147
chrome_options .add_experimental_option ("prefs" , prefs )
147
148
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" ])
152
158
if mobile_emulator :
153
159
emulator_settings = {}
154
160
device_metrics = {}
@@ -166,12 +172,13 @@ def _set_chrome_options(
166
172
emulator_settings ["userAgent" ] = user_agent
167
173
chrome_options .add_experimental_option (
168
174
"mobileEmulation" , emulator_settings )
169
- if enable_sync :
170
- chrome_options .add_experimental_option (
171
- "excludeSwitches" , ["disable-sync" ])
172
175
chrome_options .add_argument ("--enable-sync" )
173
176
if incognito :
174
177
chrome_options .add_argument ("--incognito" )
178
+ elif guest_mode :
179
+ chrome_options .add_argument ("--guest" )
180
+ else :
181
+ pass
175
182
if user_data_dir :
176
183
abs_path = os .path .abspath (user_data_dir )
177
184
chrome_options .add_argument ("user-data-dir=%s" % abs_path )
@@ -189,6 +196,8 @@ def _set_chrome_options(
189
196
chrome_options .add_argument ("--log-level=3" )
190
197
chrome_options .add_argument ("--no-first-run" )
191
198
chrome_options .add_argument ("--ignore-certificate-errors" )
199
+ if devtools and not headless :
200
+ chrome_options .add_argument ("--auto-open-devtools-for-tabs" )
192
201
chrome_options .add_argument ("--allow-file-access-from-files" )
193
202
chrome_options .add_argument ("--allow-insecure-localhost" )
194
203
chrome_options .add_argument ("--allow-running-insecure-content" )
@@ -199,10 +208,15 @@ def _set_chrome_options(
199
208
chrome_options .add_argument ("--disable-single-click-autofill" )
200
209
chrome_options .add_argument ("--disable-translate" )
201
210
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 )
202
213
if (settings .DISABLE_CSP_ON_CHROME or disable_csp ) and not headless :
203
214
# Headless Chrome doesn't support extensions, which are required
204
215
# for disabling the Content Security Policy on Chrome
205
216
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" )
206
220
if proxy_string :
207
221
if proxy_auth :
208
222
chrome_options = _add_chrome_proxy_extension (
@@ -333,8 +347,9 @@ def get_driver(browser_name, headless=False, use_grid=False,
333
347
servername = 'localhost' , port = 4444 , proxy_string = None ,
334
348
user_agent = None , cap_file = None , disable_csp = None ,
335
349
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 ,
338
353
device_height = None , device_pixel_ratio = None ):
339
354
proxy_auth = False
340
355
proxy_user = None
@@ -370,22 +385,25 @@ def get_driver(browser_name, headless=False, use_grid=False,
370
385
browser_name , headless , servername , port ,
371
386
proxy_string , proxy_auth , proxy_user , proxy_pass , user_agent ,
372
387
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 ,
374
390
mobile_emulator , device_width , device_height , device_pixel_ratio )
375
391
else :
376
392
return get_local_driver (
377
393
browser_name , headless , servername ,
378
394
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 )
382
399
383
400
384
401
def get_remote_driver (
385
402
browser_name , headless , servername , port , proxy_string , proxy_auth ,
386
403
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 ,
389
407
mobile_emulator , device_width , device_height , device_pixel_ratio ):
390
408
downloads_path = download_helper .get_downloads_folder ()
391
409
download_helper .reset_downloads_folder ()
@@ -397,7 +415,8 @@ def get_remote_driver(
397
415
chrome_options = _set_chrome_options (
398
416
downloads_path , headless ,
399
417
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 ,
401
420
user_data_dir , extension_zip , extension_dir , servername ,
402
421
mobile_emulator , device_width , device_height , device_pixel_ratio )
403
422
capabilities = chrome_options .to_capabilities ()
@@ -508,7 +527,8 @@ def get_remote_driver(
508
527
def get_local_driver (
509
528
browser_name , headless , servername ,
510
529
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 ,
512
532
user_data_dir , extension_zip , extension_dir ,
513
533
mobile_emulator , device_width , device_height , device_pixel_ratio ):
514
534
'''
@@ -597,7 +617,8 @@ def get_local_driver(
597
617
chrome_options = _set_chrome_options (
598
618
downloads_path , headless ,
599
619
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 ,
601
622
user_data_dir , extension_zip , extension_dir , servername ,
602
623
mobile_emulator , device_width , device_height ,
603
624
device_pixel_ratio )
@@ -652,7 +673,8 @@ def get_local_driver(
652
673
chrome_options = _set_chrome_options (
653
674
downloads_path , headless ,
654
675
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 ,
656
678
user_data_dir , extension_zip , extension_dir , servername ,
657
679
mobile_emulator , device_width , device_height ,
658
680
device_pixel_ratio )
0 commit comments