@@ -95,7 +95,7 @@ def _add_chrome_disable_csp_extension(chrome_options):
9595
9696def _set_chrome_options (
9797 downloads_path , headless , proxy_string , proxy_auth ,
98- proxy_user , proxy_pass , user_agent ):
98+ proxy_user , proxy_pass , user_agent , disable_csp ):
9999 chrome_options = webdriver .ChromeOptions ()
100100 prefs = {
101101 "download.default_directory" : downloads_path ,
@@ -119,7 +119,7 @@ def _set_chrome_options(
119119 chrome_options .add_argument ("--disable-single-click-autofill" )
120120 chrome_options .add_argument ("--disable-translate" )
121121 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 :
123123 # Headless Chrome doesn't support extensions, which are required
124124 # for disabling the Content Security Policy on Chrome
125125 chrome_options = _add_chrome_disable_csp_extension (chrome_options )
@@ -131,7 +131,8 @@ def _set_chrome_options(
131131 return chrome_options
132132
133133
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 ):
135136 profile = webdriver .FirefoxProfile ()
136137 profile .accept_untrusted_certs = True
137138 profile .set_preference ("reader.parse-on-load.enabled" , False )
@@ -150,7 +151,7 @@ def _create_firefox_profile(downloads_path, proxy_string, user_agent):
150151 profile .set_preference ("general.useragent.override" , user_agent )
151152 profile .set_preference (
152153 "security.mixed_content.block_active_content" , False )
153- if settings .DISABLE_CONTENT_SECURITY_POLICY :
154+ if settings .DISABLE_CSP_ON_FIREFOX or disable_csp :
154155 profile .set_preference ("security.csp.enable" , False )
155156 profile .set_preference (
156157 "browser.download.manager.showAlertOnComplete" , False )
@@ -216,7 +217,7 @@ def validate_proxy_string(proxy_string):
216217
217218def get_driver (browser_name , headless = False , use_grid = False ,
218219 servername = 'localhost' , port = 4444 , proxy_string = None ,
219- user_agent = None , cap_file = None ):
220+ user_agent = None , cap_file = None , disable_csp = None ):
220221 proxy_auth = False
221222 proxy_user = None
222223 proxy_pass = None
@@ -245,16 +246,16 @@ def get_driver(browser_name, headless=False, use_grid=False,
245246 if use_grid :
246247 return get_remote_driver (
247248 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 )
249250 else :
250251 return get_local_driver (
251252 browser_name , headless , proxy_string , proxy_auth ,
252- proxy_user , proxy_pass , user_agent )
253+ proxy_user , proxy_pass , user_agent , disable_csp )
253254
254255
255256def get_remote_driver (
256257 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 ):
258259 downloads_path = download_helper .get_downloads_folder ()
259260 download_helper .reset_downloads_folder ()
260261 address = "http://%s:%s/wd/hub" % (servername , port )
@@ -264,7 +265,7 @@ def get_remote_driver(
264265 if browser_name == constants .Browser .GOOGLE_CHROME :
265266 chrome_options = _set_chrome_options (
266267 downloads_path , headless , proxy_string , proxy_auth ,
267- proxy_user , proxy_pass , user_agent )
268+ proxy_user , proxy_pass , user_agent , disable_csp )
268269 if headless :
269270 if not proxy_auth :
270271 # Headless Chrome doesn't support extensions, which are
@@ -285,7 +286,7 @@ def get_remote_driver(
285286 try :
286287 # Use Geckodriver for Firefox if it's on the PATH
287288 profile = _create_firefox_profile (
288- downloads_path , proxy_string , user_agent )
289+ downloads_path , proxy_string , user_agent , disable_csp )
289290 firefox_capabilities = DesiredCapabilities .FIREFOX .copy ()
290291 firefox_capabilities ['marionette' ] = True
291292 if headless :
@@ -302,7 +303,7 @@ def get_remote_driver(
302303 except WebDriverException :
303304 # Don't use Geckodriver: Only works for old versions of Firefox
304305 profile = _create_firefox_profile (
305- downloads_path , proxy_string , user_agent )
306+ downloads_path , proxy_string , user_agent , disable_csp )
306307 firefox_capabilities = DesiredCapabilities .FIREFOX .copy ()
307308 firefox_capabilities ['marionette' ] = False
308309 if headless :
@@ -382,7 +383,7 @@ def get_remote_driver(
382383
383384def get_local_driver (
384385 browser_name , headless , proxy_string , proxy_auth ,
385- proxy_user , proxy_pass , user_agent ):
386+ proxy_user , proxy_pass , user_agent , disable_csp ):
386387 '''
387388 Spins up a new web browser and returns the driver.
388389 Can also be used to spin up additional browsers for the same test.
@@ -395,7 +396,7 @@ def get_local_driver(
395396 try :
396397 # Use Geckodriver for Firefox if it's on the PATH
397398 profile = _create_firefox_profile (
398- downloads_path , proxy_string , user_agent )
399+ downloads_path , proxy_string , user_agent , disable_csp )
399400 firefox_capabilities = DesiredCapabilities .FIREFOX .copy ()
400401 firefox_capabilities ['marionette' ] = True
401402 options = webdriver .FirefoxOptions ()
@@ -416,7 +417,7 @@ def get_local_driver(
416417 except WebDriverException :
417418 # Don't use Geckodriver: Only works for old versions of Firefox
418419 profile = _create_firefox_profile (
419- downloads_path , proxy_string , user_agent )
420+ downloads_path , proxy_string , user_agent , disable_csp )
420421 firefox_capabilities = DesiredCapabilities .FIREFOX .copy ()
421422 firefox_capabilities ['marionette' ] = False
422423 firefox_driver = webdriver .Firefox (
@@ -475,7 +476,7 @@ def get_local_driver(
475476 try :
476477 chrome_options = _set_chrome_options (
477478 downloads_path , headless , proxy_string , proxy_auth ,
478- proxy_user , proxy_pass , user_agent )
479+ proxy_user , proxy_pass , user_agent , disable_csp )
479480 if headless :
480481 # Headless Chrome doesn't support extensions, which are
481482 # required when using a proxy server that has authentication.
0 commit comments