@@ -95,7 +95,7 @@ def _add_chrome_disable_csp_extension(chrome_options):
95
95
96
96
def _set_chrome_options (
97
97
downloads_path , headless , proxy_string , proxy_auth ,
98
- proxy_user , proxy_pass , user_agent ):
98
+ proxy_user , proxy_pass , user_agent , disable_csp ):
99
99
chrome_options = webdriver .ChromeOptions ()
100
100
prefs = {
101
101
"download.default_directory" : downloads_path ,
@@ -119,7 +119,7 @@ def _set_chrome_options(
119
119
chrome_options .add_argument ("--disable-single-click-autofill" )
120
120
chrome_options .add_argument ("--disable-translate" )
121
121
chrome_options .add_argument ("--disable-web-security" )
122
- if settings .DISABLE_CONTENT_SECURITY_POLICY and not headless :
122
+ if ( settings .DISABLE_CSP_ON_CHROME or disable_csp ) and not headless :
123
123
# Headless Chrome doesn't support extensions, which are required
124
124
# for disabling the Content Security Policy on Chrome
125
125
chrome_options = _add_chrome_disable_csp_extension (chrome_options )
@@ -131,7 +131,8 @@ def _set_chrome_options(
131
131
return chrome_options
132
132
133
133
134
- def _create_firefox_profile (downloads_path , proxy_string , user_agent ):
134
+ def _create_firefox_profile (
135
+ downloads_path , proxy_string , user_agent , disable_csp ):
135
136
profile = webdriver .FirefoxProfile ()
136
137
profile .accept_untrusted_certs = True
137
138
profile .set_preference ("reader.parse-on-load.enabled" , False )
@@ -150,7 +151,7 @@ def _create_firefox_profile(downloads_path, proxy_string, user_agent):
150
151
profile .set_preference ("general.useragent.override" , user_agent )
151
152
profile .set_preference (
152
153
"security.mixed_content.block_active_content" , False )
153
- if settings .DISABLE_CONTENT_SECURITY_POLICY :
154
+ if settings .DISABLE_CSP_ON_FIREFOX or disable_csp :
154
155
profile .set_preference ("security.csp.enable" , False )
155
156
profile .set_preference (
156
157
"browser.download.manager.showAlertOnComplete" , False )
@@ -216,7 +217,7 @@ def validate_proxy_string(proxy_string):
216
217
217
218
def get_driver (browser_name , headless = False , use_grid = False ,
218
219
servername = 'localhost' , port = 4444 , proxy_string = None ,
219
- user_agent = None , cap_file = None ):
220
+ user_agent = None , cap_file = None , disable_csp = None ):
220
221
proxy_auth = False
221
222
proxy_user = None
222
223
proxy_pass = None
@@ -245,16 +246,16 @@ def get_driver(browser_name, headless=False, use_grid=False,
245
246
if use_grid :
246
247
return get_remote_driver (
247
248
browser_name , headless , servername , port , proxy_string , proxy_auth ,
248
- proxy_user , proxy_pass , user_agent , cap_file )
249
+ proxy_user , proxy_pass , user_agent , cap_file , disable_csp )
249
250
else :
250
251
return get_local_driver (
251
252
browser_name , headless , proxy_string , proxy_auth ,
252
- proxy_user , proxy_pass , user_agent )
253
+ proxy_user , proxy_pass , user_agent , disable_csp )
253
254
254
255
255
256
def get_remote_driver (
256
257
browser_name , headless , servername , port , proxy_string , proxy_auth ,
257
- proxy_user , proxy_pass , user_agent , cap_file ):
258
+ proxy_user , proxy_pass , user_agent , cap_file , disable_csp ):
258
259
downloads_path = download_helper .get_downloads_folder ()
259
260
download_helper .reset_downloads_folder ()
260
261
address = "http://%s:%s/wd/hub" % (servername , port )
@@ -264,7 +265,7 @@ def get_remote_driver(
264
265
if browser_name == constants .Browser .GOOGLE_CHROME :
265
266
chrome_options = _set_chrome_options (
266
267
downloads_path , headless , proxy_string , proxy_auth ,
267
- proxy_user , proxy_pass , user_agent )
268
+ proxy_user , proxy_pass , user_agent , disable_csp )
268
269
if headless :
269
270
if not proxy_auth :
270
271
# Headless Chrome doesn't support extensions, which are
@@ -285,7 +286,7 @@ def get_remote_driver(
285
286
try :
286
287
# Use Geckodriver for Firefox if it's on the PATH
287
288
profile = _create_firefox_profile (
288
- downloads_path , proxy_string , user_agent )
289
+ downloads_path , proxy_string , user_agent , disable_csp )
289
290
firefox_capabilities = DesiredCapabilities .FIREFOX .copy ()
290
291
firefox_capabilities ['marionette' ] = True
291
292
if headless :
@@ -302,7 +303,7 @@ def get_remote_driver(
302
303
except WebDriverException :
303
304
# Don't use Geckodriver: Only works for old versions of Firefox
304
305
profile = _create_firefox_profile (
305
- downloads_path , proxy_string , user_agent )
306
+ downloads_path , proxy_string , user_agent , disable_csp )
306
307
firefox_capabilities = DesiredCapabilities .FIREFOX .copy ()
307
308
firefox_capabilities ['marionette' ] = False
308
309
if headless :
@@ -382,7 +383,7 @@ def get_remote_driver(
382
383
383
384
def get_local_driver (
384
385
browser_name , headless , proxy_string , proxy_auth ,
385
- proxy_user , proxy_pass , user_agent ):
386
+ proxy_user , proxy_pass , user_agent , disable_csp ):
386
387
'''
387
388
Spins up a new web browser and returns the driver.
388
389
Can also be used to spin up additional browsers for the same test.
@@ -395,7 +396,7 @@ def get_local_driver(
395
396
try :
396
397
# Use Geckodriver for Firefox if it's on the PATH
397
398
profile = _create_firefox_profile (
398
- downloads_path , proxy_string , user_agent )
399
+ downloads_path , proxy_string , user_agent , disable_csp )
399
400
firefox_capabilities = DesiredCapabilities .FIREFOX .copy ()
400
401
firefox_capabilities ['marionette' ] = True
401
402
options = webdriver .FirefoxOptions ()
@@ -416,7 +417,7 @@ def get_local_driver(
416
417
except WebDriverException :
417
418
# Don't use Geckodriver: Only works for old versions of Firefox
418
419
profile = _create_firefox_profile (
419
- downloads_path , proxy_string , user_agent )
420
+ downloads_path , proxy_string , user_agent , disable_csp )
420
421
firefox_capabilities = DesiredCapabilities .FIREFOX .copy ()
421
422
firefox_capabilities ['marionette' ] = False
422
423
firefox_driver = webdriver .Firefox (
@@ -475,7 +476,7 @@ def get_local_driver(
475
476
try :
476
477
chrome_options = _set_chrome_options (
477
478
downloads_path , headless , proxy_string , proxy_auth ,
478
- proxy_user , proxy_pass , user_agent )
479
+ proxy_user , proxy_pass , user_agent , disable_csp )
479
480
if headless :
480
481
# Headless Chrome doesn't support extensions, which are
481
482
# required when using a proxy server that has authentication.
0 commit comments