Add custom Chromium args with: --chromium-arg="ARG,ARG"
This commit is contained in:
parent
c9c450e32a
commit
02c84f9463
|
@ -76,6 +76,7 @@ except (ImportError, ValueError):
|
|||
sb.remote_debug = False
|
||||
sb.settings_file = None
|
||||
sb.user_data_dir = None
|
||||
sb.chromium_arg = None
|
||||
sb.proxy_string = None
|
||||
sb.swiftshader = False
|
||||
sb.ad_block_on = False
|
||||
|
|
|
@ -133,7 +133,7 @@ def _set_chrome_options(
|
|||
proxy_string, proxy_auth, proxy_user, proxy_pass,
|
||||
user_agent, disable_csp, enable_ws, enable_sync, use_auto_ext,
|
||||
no_sandbox, disable_gpu, incognito, guest_mode,
|
||||
devtools, remote_debug, swiftshader, block_images,
|
||||
devtools, remote_debug, swiftshader, block_images, chromium_arg,
|
||||
user_data_dir, extension_zip, extension_dir, servername,
|
||||
mobile_emulator, device_width, device_height, device_pixel_ratio):
|
||||
chrome_options = webdriver.ChromeOptions()
|
||||
|
@ -298,6 +298,18 @@ def _set_chrome_options(
|
|||
chrome_options.add_argument("--disable-gpu")
|
||||
if "linux" in PLATFORM:
|
||||
chrome_options.add_argument("--disable-dev-shm-usage")
|
||||
if chromium_arg:
|
||||
# Can be a comma-separated list of Chromium args
|
||||
chromium_arg_list = chromium_arg.split(',')
|
||||
for chromium_arg_item in chromium_arg_list:
|
||||
chromium_arg_item = chromium_arg_item.strip()
|
||||
if not chromium_arg_item.startswith("--"):
|
||||
if chromium_arg_item.startswith("-"):
|
||||
chromium_arg_item = "-" + chromium_arg_item
|
||||
else:
|
||||
chromium_arg_item = "--" + chromium_arg_item
|
||||
if len(chromium_arg_item) >= 3:
|
||||
chrome_options.add_argument(chromium_arg_item)
|
||||
return chrome_options
|
||||
|
||||
|
||||
|
@ -459,7 +471,7 @@ def get_driver(browser_name, headless=False, locale_code=None,
|
|||
use_auto_ext=None, no_sandbox=None, disable_gpu=None,
|
||||
incognito=None, guest_mode=None,
|
||||
devtools=None, remote_debug=None,
|
||||
swiftshader=None, block_images=None,
|
||||
swiftshader=None, block_images=None, chromium_arg=None,
|
||||
user_data_dir=None, extension_zip=None, extension_dir=None,
|
||||
test_id=None, mobile_emulator=False, device_width=None,
|
||||
device_height=None, device_pixel_ratio=None):
|
||||
|
@ -498,7 +510,7 @@ def get_driver(browser_name, headless=False, locale_code=None,
|
|||
proxy_string, proxy_auth, proxy_user, proxy_pass, user_agent,
|
||||
cap_file, cap_string, disable_csp, enable_ws, enable_sync,
|
||||
use_auto_ext, no_sandbox, disable_gpu, incognito, guest_mode,
|
||||
devtools, remote_debug, swiftshader, block_images,
|
||||
devtools, remote_debug, swiftshader, block_images, chromium_arg,
|
||||
user_data_dir, extension_zip, extension_dir, test_id,
|
||||
mobile_emulator, device_width, device_height, device_pixel_ratio)
|
||||
else:
|
||||
|
@ -507,7 +519,7 @@ def get_driver(browser_name, headless=False, locale_code=None,
|
|||
proxy_string, proxy_auth, proxy_user, proxy_pass, user_agent,
|
||||
disable_csp, enable_ws, enable_sync,
|
||||
use_auto_ext, no_sandbox, disable_gpu, incognito, guest_mode,
|
||||
devtools, remote_debug, swiftshader, block_images,
|
||||
devtools, remote_debug, swiftshader, block_images, chromium_arg,
|
||||
user_data_dir, extension_zip, extension_dir,
|
||||
mobile_emulator, device_width, device_height, device_pixel_ratio)
|
||||
|
||||
|
@ -517,7 +529,7 @@ def get_remote_driver(
|
|||
proxy_string, proxy_auth, proxy_user, proxy_pass, user_agent,
|
||||
cap_file, cap_string, disable_csp, enable_ws, enable_sync,
|
||||
use_auto_ext, no_sandbox, disable_gpu, incognito, guest_mode,
|
||||
devtools, remote_debug, swiftshader, block_images,
|
||||
devtools, remote_debug, swiftshader, block_images, chromium_arg,
|
||||
user_data_dir, extension_zip, extension_dir, test_id,
|
||||
mobile_emulator, device_width, device_height, device_pixel_ratio):
|
||||
downloads_path = download_helper.get_downloads_folder()
|
||||
|
@ -549,7 +561,7 @@ def get_remote_driver(
|
|||
proxy_string, proxy_auth, proxy_user, proxy_pass, user_agent,
|
||||
disable_csp, enable_ws, enable_sync, use_auto_ext, no_sandbox,
|
||||
disable_gpu, incognito, guest_mode,
|
||||
devtools, remote_debug, swiftshader, block_images,
|
||||
devtools, remote_debug, swiftshader, block_images, chromium_arg,
|
||||
user_data_dir, extension_zip, extension_dir,
|
||||
servername, mobile_emulator,
|
||||
device_width, device_height, device_pixel_ratio)
|
||||
|
@ -677,7 +689,7 @@ def get_local_driver(
|
|||
proxy_string, proxy_auth, proxy_user, proxy_pass, user_agent,
|
||||
disable_csp, enable_ws, enable_sync, use_auto_ext, no_sandbox,
|
||||
disable_gpu, incognito, guest_mode,
|
||||
devtools, remote_debug, swiftshader, block_images,
|
||||
devtools, remote_debug, swiftshader, block_images, chromium_arg,
|
||||
user_data_dir, extension_zip, extension_dir,
|
||||
mobile_emulator, device_width, device_height, device_pixel_ratio):
|
||||
'''
|
||||
|
@ -765,8 +777,8 @@ def get_local_driver(
|
|||
disable_csp, enable_ws, enable_sync, use_auto_ext,
|
||||
no_sandbox, disable_gpu, incognito, guest_mode,
|
||||
devtools, remote_debug, swiftshader, block_images,
|
||||
user_data_dir, extension_zip, extension_dir, servername,
|
||||
mobile_emulator, device_width, device_height,
|
||||
chromium_arg, user_data_dir, extension_zip, extension_dir,
|
||||
servername, mobile_emulator, device_width, device_height,
|
||||
device_pixel_ratio)
|
||||
if LOCAL_EDGEDRIVER and os.path.exists(LOCAL_EDGEDRIVER):
|
||||
try:
|
||||
|
@ -910,6 +922,18 @@ def get_local_driver(
|
|||
edge_options.add_argument("--disable-gpu")
|
||||
if "linux" in PLATFORM:
|
||||
edge_options.add_argument("--disable-dev-shm-usage")
|
||||
if chromium_arg:
|
||||
# Can be a comma-separated list of Chromium args
|
||||
chromium_arg_list = chromium_arg.split(',')
|
||||
for chromium_arg_item in chromium_arg_list:
|
||||
chromium_arg_item = chromium_arg_item.strip()
|
||||
if not chromium_arg_item.startswith("--"):
|
||||
if chromium_arg_item.startswith("-"):
|
||||
chromium_arg_item = "-" + chromium_arg_item
|
||||
else:
|
||||
chromium_arg_item = "--" + chromium_arg_item
|
||||
if len(chromium_arg_item) >= 3:
|
||||
edge_options.add_argument(chromium_arg_item)
|
||||
capabilities = edge_options.to_capabilities()
|
||||
capabilities["platform"] = ''
|
||||
return Edge(
|
||||
|
@ -935,7 +959,7 @@ def get_local_driver(
|
|||
disable_csp, enable_ws, enable_sync, use_auto_ext,
|
||||
no_sandbox, disable_gpu, incognito, guest_mode,
|
||||
devtools, remote_debug, swiftshader, block_images,
|
||||
user_data_dir, extension_zip, extension_dir,
|
||||
chromium_arg, user_data_dir, extension_zip, extension_dir,
|
||||
servername, mobile_emulator,
|
||||
device_width, device_height, device_pixel_ratio)
|
||||
opera_options.headless = False # No support for headless Opera
|
||||
|
@ -955,7 +979,7 @@ def get_local_driver(
|
|||
disable_csp, enable_ws, enable_sync, use_auto_ext,
|
||||
no_sandbox, disable_gpu, incognito, guest_mode,
|
||||
devtools, remote_debug, swiftshader, block_images,
|
||||
user_data_dir, extension_zip, extension_dir,
|
||||
chromium_arg, user_data_dir, extension_zip, extension_dir,
|
||||
servername, mobile_emulator,
|
||||
device_width, device_height, device_pixel_ratio)
|
||||
if LOCAL_CHROMEDRIVER and os.path.exists(LOCAL_CHROMEDRIVER):
|
||||
|
|
|
@ -1899,9 +1899,9 @@ class BaseCase(unittest.TestCase):
|
|||
switch_to=True, cap_file=None, cap_string=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, remote_debug=None,
|
||||
swiftshader=None, block_images=None, user_data_dir=None,
|
||||
incognito=None, guest_mode=None, devtools=None,
|
||||
remote_debug=None, swiftshader=None, block_images=None,
|
||||
chromium_arg=None, user_data_dir=None,
|
||||
extension_zip=None, extension_dir=None, is_mobile=False,
|
||||
d_width=None, d_height=None, d_p_r=None):
|
||||
""" This method spins up an extra browser for tests that require
|
||||
|
@ -1930,6 +1930,7 @@ class BaseCase(unittest.TestCase):
|
|||
remote_debug - the option to enable Chrome's Remote Debugger
|
||||
swiftshader - the option to use Chrome's swiftshader (Chrome-only)
|
||||
block_images - the option to block images from loading (Chrome)
|
||||
chromium_arg - the option to add a Chromium arg to Chrome/Edge
|
||||
user_data_dir - Chrome's User Data Directory to use (Chrome-only)
|
||||
extension_zip - A Chrome Extension ZIP file to use (Chrome-only)
|
||||
extension_dir - A Chrome Extension folder to use (Chrome-only)
|
||||
|
@ -2005,6 +2006,8 @@ class BaseCase(unittest.TestCase):
|
|||
swiftshader = self.swiftshader
|
||||
if block_images is None:
|
||||
block_images = self.block_images
|
||||
if chromium_arg is None:
|
||||
chromium_arg = self.chromium_arg
|
||||
if user_data_dir is None:
|
||||
user_data_dir = self.user_data_dir
|
||||
if extension_zip is None:
|
||||
|
@ -2052,6 +2055,7 @@ class BaseCase(unittest.TestCase):
|
|||
remote_debug=remote_debug,
|
||||
swiftshader=swiftshader,
|
||||
block_images=block_images,
|
||||
chromium_arg=chromium_arg,
|
||||
user_data_dir=user_data_dir,
|
||||
extension_zip=extension_zip,
|
||||
extension_dir=extension_dir,
|
||||
|
@ -7075,6 +7079,7 @@ class BaseCase(unittest.TestCase):
|
|||
self.js_checking_on = sb_config.js_checking_on
|
||||
self.ad_block_on = sb_config.ad_block_on
|
||||
self.block_images = sb_config.block_images
|
||||
self.chromium_arg = sb_config.chromium_arg
|
||||
self.verify_delay = sb_config.verify_delay
|
||||
self.disable_csp = sb_config.disable_csp
|
||||
self.disable_ws = sb_config.disable_ws
|
||||
|
@ -7278,6 +7283,7 @@ class BaseCase(unittest.TestCase):
|
|||
remote_debug=self.remote_debug,
|
||||
swiftshader=self.swiftshader,
|
||||
block_images=self.block_images,
|
||||
chromium_arg=self.chromium_arg,
|
||||
user_data_dir=self.user_data_dir,
|
||||
extension_zip=self.extension_zip,
|
||||
extension_dir=self.extension_dir,
|
||||
|
|
|
@ -41,6 +41,7 @@ def pytest_addoption(parser):
|
|||
--agent=STRING (Modify the web browser's User-Agent string.)
|
||||
--mobile (Use the mobile device emulator while running tests.)
|
||||
--metrics=STRING (Set mobile metrics: "CSSWidth,CSSHeight,PixelRatio".)
|
||||
--chromium-arg=ARG (Add a Chromium arg for Chrome/Edge, comma-separated.)
|
||||
--extension-zip=ZIP (Load a Chrome Extension .zip|.crx, comma-separated.)
|
||||
--extension-dir=DIR (Load a Chrome Extension directory, comma-separated.)
|
||||
--headless (Run tests headlessly. Default mode on Linux OS.)
|
||||
|
@ -311,6 +312,15 @@ def pytest_addoption(parser):
|
|||
Format: A comma-separated string with the 3 values.
|
||||
Example: "375,734,3"
|
||||
Default: None. (Will use default values if None)""")
|
||||
parser.addoption('--chromium_arg', '--chromium-arg',
|
||||
action='store',
|
||||
dest='chromium_arg',
|
||||
default=None,
|
||||
help="""Add a Chromium argument for Chrome/Edge browsers.
|
||||
Format: A comma-separated list of Chromium args.
|
||||
If an arg doesn't start with "--", that will be
|
||||
added to the beginning of the arg automatically.
|
||||
Default: None.""")
|
||||
parser.addoption('--extension_zip', '--extension-zip', '--crx',
|
||||
action='store',
|
||||
dest='extension_zip',
|
||||
|
@ -671,6 +681,7 @@ def pytest_configure(config):
|
|||
sb_config.locale_code = config.getoption('locale_code')
|
||||
sb_config.interval = config.getoption('interval')
|
||||
sb_config.start_page = config.getoption('start_page')
|
||||
sb_config.chromium_arg = config.getoption('chromium_arg')
|
||||
sb_config.extension_zip = config.getoption('extension_zip')
|
||||
sb_config.extension_dir = config.getoption('extension_dir')
|
||||
sb_config.with_testing_base = config.getoption('with_testing_base')
|
||||
|
|
|
@ -21,6 +21,7 @@ class SeleniumBrowser(Plugin):
|
|||
--agent=STRING (Modify the web browser's User-Agent string.)
|
||||
--mobile (Use the mobile device emulator while running tests.)
|
||||
--metrics=STRING (Set mobile metrics: "CSSWidth,CSSHeight,PixelRatio".)
|
||||
--chromium-arg=ARG (Add a Chromium arg for Chrome/Edge, comma-separated.)
|
||||
--extension-zip=ZIP (Load a Chrome Extension .zip|.crx, comma-separated.)
|
||||
--extension-dir=DIR (Load a Chrome Extension directory, comma-separated.)
|
||||
--headless (Run tests headlessly. Default mode on Linux OS.)
|
||||
|
@ -149,6 +150,16 @@ class SeleniumBrowser(Plugin):
|
|||
Format: A comma-separated string with the 3 values.
|
||||
Example: "375,734,3"
|
||||
Default: None. (Will use default values if None)""")
|
||||
parser.add_option(
|
||||
'--chromium_arg', '--chromium-arg',
|
||||
action='store',
|
||||
dest='chromium_arg',
|
||||
default=None,
|
||||
help="""Add a Chromium argument for Chrome/Edge browsers.
|
||||
Format: A comma-separated list of Chromium args.
|
||||
If an arg doesn't start with "--", that will be
|
||||
added to the beginning of the arg automatically.
|
||||
Default: None.""")
|
||||
parser.add_option(
|
||||
'--extension_zip', '--extension-zip', '--crx',
|
||||
action='store',
|
||||
|
@ -423,6 +434,7 @@ class SeleniumBrowser(Plugin):
|
|||
test.test.user_data_dir = self.options.user_data_dir
|
||||
test.test.extension_zip = self.options.extension_zip
|
||||
test.test.extension_dir = self.options.extension_dir
|
||||
test.test.chromium_arg = self.options.chromium_arg
|
||||
test.test.proxy_string = self.options.proxy_string
|
||||
test.test.user_agent = self.options.user_agent
|
||||
test.test.mobile_emulator = self.options.mobile_emulator
|
||||
|
|
Loading…
Reference in New Issue