Add option: "--enable-ws" to enable Chrome's Web Security
This commit is contained in:
parent
6a50ba5808
commit
648142c6f5
|
@ -47,6 +47,7 @@ except (ImportError, ValueError):
|
|||
sb.log_path = "latest_logs/"
|
||||
sb.archive_logs = False
|
||||
sb.disable_csp = False
|
||||
sb.enable_ws = False
|
||||
sb.enable_sync = False
|
||||
sb.use_auto_ext = False
|
||||
sb.no_sandbox = False
|
||||
|
|
|
@ -127,6 +127,7 @@ SeleniumBase provides additional ``pytest`` command-line options for tests:
|
|||
--block-images # (Block images from loading during tests.)
|
||||
--verify-delay=SECONDS # (The delay before MasterQA verification checks.)
|
||||
--disable-csp # (This disables the Content Security Policy of websites.)
|
||||
--enable-ws # (Enable Web Security on Chrome.)
|
||||
--enable-sync # (Enable "Chrome Sync".)
|
||||
--use-auto-ext # (Use Chrome's automation extension.)
|
||||
--swiftshader # (Use Chrome's "--use-gl=swiftshader" feature.)
|
||||
|
|
|
@ -131,7 +131,7 @@ def _add_chrome_disable_csp_extension(chrome_options):
|
|||
def _set_chrome_options(
|
||||
browser_name, downloads_path, headless, locale_code,
|
||||
proxy_string, proxy_auth, proxy_user, proxy_pass,
|
||||
user_agent, disable_csp, enable_sync, use_auto_ext,
|
||||
user_agent, disable_csp, enable_ws, enable_sync, use_auto_ext,
|
||||
no_sandbox, disable_gpu, incognito, guest_mode, devtools, swiftshader,
|
||||
block_images, user_data_dir, extension_zip, extension_dir, servername,
|
||||
mobile_emulator, device_width, device_height, device_pixel_ratio):
|
||||
|
@ -267,7 +267,8 @@ def _set_chrome_options(
|
|||
if browser_name != constants.Browser.OPERA:
|
||||
# Opera Chromium doesn't support these switches
|
||||
chrome_options.add_argument("--ignore-certificate-errors")
|
||||
chrome_options.add_argument("--disable-web-security")
|
||||
if not enable_ws:
|
||||
chrome_options.add_argument("--disable-web-security")
|
||||
chrome_options.add_argument("--no-sandbox")
|
||||
else:
|
||||
# Opera Chromium only!
|
||||
|
@ -401,8 +402,8 @@ def get_driver(browser_name, headless=False, locale_code=None,
|
|||
use_grid=False, servername='localhost', port=4444,
|
||||
proxy_string=None, user_agent=None,
|
||||
cap_file=None, cap_string=None,
|
||||
disable_csp=None, enable_sync=None, use_auto_ext=None,
|
||||
no_sandbox=None, disable_gpu=None,
|
||||
disable_csp=None, enable_ws=None, enable_sync=None,
|
||||
use_auto_ext=None, no_sandbox=None, disable_gpu=None,
|
||||
incognito=None, guest_mode=None, devtools=None,
|
||||
swiftshader=None, block_images=None, user_data_dir=None,
|
||||
extension_zip=None, extension_dir=None,
|
||||
|
@ -441,26 +442,26 @@ def get_driver(browser_name, headless=False, locale_code=None,
|
|||
return get_remote_driver(
|
||||
browser_name, headless, locale_code, servername, port,
|
||||
proxy_string, proxy_auth, proxy_user, proxy_pass, user_agent,
|
||||
cap_file, cap_string, disable_csp, enable_sync, use_auto_ext,
|
||||
no_sandbox, disable_gpu, incognito, guest_mode, devtools,
|
||||
swiftshader, block_images, user_data_dir,
|
||||
cap_file, cap_string, disable_csp, enable_ws, enable_sync,
|
||||
use_auto_ext, no_sandbox, disable_gpu, incognito, guest_mode,
|
||||
devtools, swiftshader, block_images, user_data_dir,
|
||||
extension_zip, extension_dir, test_id,
|
||||
mobile_emulator, device_width, device_height, device_pixel_ratio)
|
||||
else:
|
||||
return get_local_driver(
|
||||
browser_name, headless, locale_code, servername,
|
||||
proxy_string, proxy_auth, proxy_user, proxy_pass, user_agent,
|
||||
disable_csp, enable_sync, use_auto_ext, no_sandbox, disable_gpu,
|
||||
incognito, guest_mode, devtools, swiftshader, block_images,
|
||||
user_data_dir, extension_zip, extension_dir,
|
||||
disable_csp, enable_ws, enable_sync, use_auto_ext, no_sandbox,
|
||||
disable_gpu, incognito, guest_mode, devtools, swiftshader,
|
||||
block_images, user_data_dir, extension_zip, extension_dir,
|
||||
mobile_emulator, device_width, device_height, device_pixel_ratio)
|
||||
|
||||
|
||||
def get_remote_driver(
|
||||
browser_name, headless, locale_code, servername, port,
|
||||
proxy_string, proxy_auth, proxy_user, proxy_pass, user_agent,
|
||||
cap_file, cap_string, disable_csp, enable_sync, use_auto_ext,
|
||||
no_sandbox, disable_gpu, incognito, guest_mode,
|
||||
cap_file, cap_string, disable_csp, enable_ws, enable_sync,
|
||||
use_auto_ext, no_sandbox, disable_gpu, incognito, guest_mode,
|
||||
devtools, swiftshader, block_images,
|
||||
user_data_dir, extension_zip, extension_dir, test_id,
|
||||
mobile_emulator, device_width, device_height, device_pixel_ratio):
|
||||
|
@ -492,10 +493,11 @@ def get_remote_driver(
|
|||
chrome_options = _set_chrome_options(
|
||||
browser_name, downloads_path, headless, locale_code,
|
||||
proxy_string, proxy_auth, proxy_user, proxy_pass, user_agent,
|
||||
disable_csp, enable_sync, use_auto_ext, no_sandbox, disable_gpu,
|
||||
incognito, guest_mode, devtools, swiftshader, block_images,
|
||||
user_data_dir, extension_zip, extension_dir, servername,
|
||||
mobile_emulator, device_width, device_height, device_pixel_ratio)
|
||||
disable_csp, enable_ws, enable_sync, use_auto_ext, no_sandbox,
|
||||
disable_gpu, incognito, guest_mode, devtools, swiftshader,
|
||||
block_images, user_data_dir, extension_zip, extension_dir,
|
||||
servername, mobile_emulator,
|
||||
device_width, device_height, device_pixel_ratio)
|
||||
capabilities = chrome_options.to_capabilities()
|
||||
for key in desired_caps.keys():
|
||||
capabilities[key] = desired_caps[key]
|
||||
|
@ -618,9 +620,9 @@ def get_remote_driver(
|
|||
def get_local_driver(
|
||||
browser_name, headless, locale_code, servername,
|
||||
proxy_string, proxy_auth, proxy_user, proxy_pass, user_agent,
|
||||
disable_csp, enable_sync, use_auto_ext, no_sandbox, disable_gpu,
|
||||
incognito, guest_mode, devtools, swiftshader, block_images,
|
||||
user_data_dir, extension_zip, extension_dir,
|
||||
disable_csp, enable_ws, enable_sync, use_auto_ext, no_sandbox,
|
||||
disable_gpu, incognito, guest_mode, devtools, swiftshader,
|
||||
block_images, user_data_dir, extension_zip, extension_dir,
|
||||
mobile_emulator, device_width, device_height, device_pixel_ratio):
|
||||
'''
|
||||
Spins up a new web browser and returns the driver.
|
||||
|
@ -710,7 +712,7 @@ def get_local_driver(
|
|||
chrome_options = _set_chrome_options(
|
||||
browser_name, downloads_path, headless, locale_code,
|
||||
proxy_string, proxy_auth, proxy_user, proxy_pass, user_agent,
|
||||
disable_csp, enable_sync, use_auto_ext,
|
||||
disable_csp, enable_ws, enable_sync, use_auto_ext,
|
||||
no_sandbox, disable_gpu, incognito, guest_mode, devtools,
|
||||
swiftshader, block_images, user_data_dir,
|
||||
extension_zip, extension_dir, servername,
|
||||
|
@ -794,7 +796,8 @@ def get_local_driver(
|
|||
edge_options.add_argument("--disable-save-password-bubble")
|
||||
edge_options.add_argument("--disable-single-click-autofill")
|
||||
edge_options.add_argument("--disable-translate")
|
||||
edge_options.add_argument("--disable-web-security")
|
||||
if not enable_ws:
|
||||
edge_options.add_argument("--disable-web-security")
|
||||
edge_options.add_argument("--homepage=about:blank")
|
||||
edge_options.add_argument("--dns-prefetch-disable")
|
||||
edge_options.add_argument("--dom-automation")
|
||||
|
@ -842,7 +845,7 @@ def get_local_driver(
|
|||
opera_options = _set_chrome_options(
|
||||
browser_name, downloads_path, headless, locale_code,
|
||||
proxy_string, proxy_auth, proxy_user, proxy_pass, user_agent,
|
||||
disable_csp, enable_sync, use_auto_ext,
|
||||
disable_csp, enable_ws, enable_sync, use_auto_ext,
|
||||
no_sandbox, disable_gpu, incognito, guest_mode, devtools,
|
||||
swiftshader, block_images, user_data_dir, extension_zip,
|
||||
extension_dir, servername, mobile_emulator,
|
||||
|
@ -861,7 +864,7 @@ def get_local_driver(
|
|||
chrome_options = _set_chrome_options(
|
||||
browser_name, downloads_path, headless, locale_code,
|
||||
proxy_string, proxy_auth, proxy_user, proxy_pass, user_agent,
|
||||
disable_csp, enable_sync, use_auto_ext,
|
||||
disable_csp, enable_ws, enable_sync, use_auto_ext,
|
||||
no_sandbox, disable_gpu, incognito, guest_mode, devtools,
|
||||
swiftshader, block_images, user_data_dir, extension_zip,
|
||||
extension_dir, servername, mobile_emulator,
|
||||
|
|
|
@ -1716,8 +1716,8 @@ class BaseCase(unittest.TestCase):
|
|||
def get_new_driver(self, browser=None, headless=None, locale_code=None,
|
||||
servername=None, port=None, proxy=None, agent=None,
|
||||
switch_to=True, cap_file=None, cap_string=None,
|
||||
disable_csp=None, enable_sync=None, use_auto_ext=None,
|
||||
no_sandbox=None, disable_gpu=None,
|
||||
disable_csp=None, enable_ws=None, enable_sync=None,
|
||||
use_auto_ext=None, no_sandbox=None, disable_gpu=None,
|
||||
incognito=None, guest_mode=None, devtools=None,
|
||||
swiftshader=None, block_images=None, user_data_dir=None,
|
||||
extension_zip=None, extension_dir=None, is_mobile=False,
|
||||
|
@ -1737,6 +1737,7 @@ class BaseCase(unittest.TestCase):
|
|||
cap_file - the file containing desired capabilities for the browser
|
||||
cap_string - the string with desired capabilities for the browser
|
||||
disable_csp - an option to disable Chrome's Content Security Policy
|
||||
enable_ws - the option to enable the Web Security feature (Chrome)
|
||||
enable_sync - the option to enable the Chrome Sync feature (Chrome)
|
||||
use_auto_ext - the option to enable Chrome's Automation Extension
|
||||
no_sandbox - the option to enable the "No-Sandbox" feature (Chrome)
|
||||
|
@ -1798,6 +1799,8 @@ class BaseCase(unittest.TestCase):
|
|||
user_agent = self.user_agent
|
||||
if disable_csp is None:
|
||||
disable_csp = self.disable_csp
|
||||
if enable_ws is None:
|
||||
enable_ws = self.enable_ws
|
||||
if enable_sync is None:
|
||||
enable_sync = self.enable_sync
|
||||
if use_auto_ext is None:
|
||||
|
@ -1852,6 +1855,7 @@ class BaseCase(unittest.TestCase):
|
|||
cap_file=cap_file,
|
||||
cap_string=cap_string,
|
||||
disable_csp=disable_csp,
|
||||
enable_ws=enable_ws,
|
||||
enable_sync=enable_sync,
|
||||
use_auto_ext=use_auto_ext,
|
||||
no_sandbox=no_sandbox,
|
||||
|
@ -6103,6 +6107,7 @@ class BaseCase(unittest.TestCase):
|
|||
self.block_images = sb_config.block_images
|
||||
self.verify_delay = sb_config.verify_delay
|
||||
self.disable_csp = sb_config.disable_csp
|
||||
self.enable_ws = sb_config.enable_ws
|
||||
self.enable_sync = sb_config.enable_sync
|
||||
self.use_auto_ext = sb_config.use_auto_ext
|
||||
self.no_sandbox = sb_config.no_sandbox
|
||||
|
@ -6269,6 +6274,7 @@ class BaseCase(unittest.TestCase):
|
|||
cap_file=self.cap_file,
|
||||
cap_string=self.cap_string,
|
||||
disable_csp=self.disable_csp,
|
||||
enable_ws=self.enable_ws,
|
||||
enable_sync=self.enable_sync,
|
||||
use_auto_ext=self.use_auto_ext,
|
||||
no_sandbox=self.no_sandbox,
|
||||
|
|
|
@ -48,6 +48,7 @@ def pytest_addoption(parser):
|
|||
--block-images (Block images from loading during tests.)
|
||||
--verify-delay=SECONDS (The delay before MasterQA verification checks.)
|
||||
--disable-csp (Disable the Content Security Policy of websites.)
|
||||
--enable-ws (Enable Web Security on Chrome.)
|
||||
--enable-sync (Enable "Chrome Sync".)
|
||||
--use-auto-ext (Use Chrome's automation extension.)
|
||||
--swiftshader (Use Chrome's "--use-gl=swiftshader" feature.)
|
||||
|
@ -372,8 +373,14 @@ def pytest_addoption(parser):
|
|||
websites, which may interfere with some features of
|
||||
SeleniumBase, such as loading custom JavaScript
|
||||
libraries for various testing actions.
|
||||
Setting this to True (--disable_csp) overrides the
|
||||
Setting this to True (--disable-csp) overrides the
|
||||
value set in seleniumbase/config/settings.py""")
|
||||
parser.addoption('--enable_ws', '--enable-ws', '--enable-web-security',
|
||||
action="store_true",
|
||||
dest='enable_ws',
|
||||
default=False,
|
||||
help="""Using this enables the "Web Security" feature of
|
||||
Chrome and Chromium-based browsers such as Edge.""")
|
||||
parser.addoption('--enable_sync', '--enable-sync',
|
||||
action="store_true",
|
||||
dest='enable_sync',
|
||||
|
@ -515,6 +522,7 @@ def pytest_configure(config):
|
|||
sb_config.block_images = config.getoption('block_images')
|
||||
sb_config.verify_delay = config.getoption('verify_delay')
|
||||
sb_config.disable_csp = config.getoption('disable_csp')
|
||||
sb_config.enable_ws = config.getoption('enable_ws')
|
||||
sb_config.enable_sync = config.getoption('enable_sync')
|
||||
sb_config.use_auto_ext = config.getoption('use_auto_ext')
|
||||
sb_config.no_sandbox = config.getoption('no_sandbox')
|
||||
|
|
|
@ -38,6 +38,7 @@ class SeleniumBrowser(Plugin):
|
|||
--block-images (Block images from loading during tests.)
|
||||
--verify-delay=SECONDS (The delay before MasterQA verification checks.)
|
||||
--disable-csp (This disables the Content Security Policy of websites.)
|
||||
--enable-ws (Enable Web Security on Chrome.)
|
||||
--enable-sync (Enable "Chrome Sync".)
|
||||
--use-auto-ext (Use Chrome's automation extension.)
|
||||
--swiftshader (Use Chrome's "--use-gl=swiftshader" feature.)
|
||||
|
@ -277,8 +278,15 @@ class SeleniumBrowser(Plugin):
|
|||
websites, which may interfere with some features of
|
||||
SeleniumBase, such as loading custom JavaScript
|
||||
libraries for various testing actions.
|
||||
Setting this to True (--disable_csp) overrides the
|
||||
Setting this to True (--disable-csp) overrides the
|
||||
value set in seleniumbase/config/settings.py""")
|
||||
parser.add_option(
|
||||
'--enable_ws', '--enable-ws', '--enable-web-security',
|
||||
action="store_true",
|
||||
dest='enable_ws',
|
||||
default=False,
|
||||
help="""Using this enables the "Web Security" feature of
|
||||
Chrome and Chromium-based browsers such as Edge.""")
|
||||
parser.add_option(
|
||||
'--enable_sync', '--enable-sync',
|
||||
action="store_true",
|
||||
|
@ -399,6 +407,7 @@ class SeleniumBrowser(Plugin):
|
|||
test.test.block_images = self.options.block_images
|
||||
test.test.verify_delay = self.options.verify_delay # MasterQA
|
||||
test.test.disable_csp = self.options.disable_csp
|
||||
test.test.enable_ws = self.options.enable_ws
|
||||
test.test.enable_sync = self.options.enable_sync
|
||||
test.test.use_auto_ext = self.options.use_auto_ext
|
||||
test.test.no_sandbox = self.options.no_sandbox
|
||||
|
|
Loading…
Reference in New Issue