seleniumbase 4.44.2__tar.gz → 4.44.3__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {seleniumbase-4.44.2/seleniumbase.egg-info → seleniumbase-4.44.3}/PKG-INFO +1 -1
- {seleniumbase-4.44.2 → seleniumbase-4.44.3}/seleniumbase/__version__.py +1 -1
- {seleniumbase-4.44.2 → seleniumbase-4.44.3}/seleniumbase/core/browser_launcher.py +49 -24
- {seleniumbase-4.44.2 → seleniumbase-4.44.3}/seleniumbase/fixtures/base_case.py +22 -22
- {seleniumbase-4.44.2 → seleniumbase-4.44.3}/seleniumbase/undetected/cdp.py +1 -12
- {seleniumbase-4.44.2 → seleniumbase-4.44.3}/seleniumbase/undetected/cdp_driver/browser.py +4 -6
- {seleniumbase-4.44.2 → seleniumbase-4.44.3}/seleniumbase/undetected/cdp_driver/config.py +12 -4
- {seleniumbase-4.44.2 → seleniumbase-4.44.3/seleniumbase.egg-info}/PKG-INFO +1 -1
- {seleniumbase-4.44.2 → seleniumbase-4.44.3}/.gitignore +0 -0
- {seleniumbase-4.44.2 → seleniumbase-4.44.3}/LICENSE +0 -0
- {seleniumbase-4.44.2 → seleniumbase-4.44.3}/MANIFEST.in +0 -0
- {seleniumbase-4.44.2 → seleniumbase-4.44.3}/README.md +0 -0
- {seleniumbase-4.44.2 → seleniumbase-4.44.3}/install.sh +0 -0
- {seleniumbase-4.44.2 → seleniumbase-4.44.3}/pyproject.toml +0 -0
- {seleniumbase-4.44.2 → seleniumbase-4.44.3}/pytest.ini +0 -0
- {seleniumbase-4.44.2 → seleniumbase-4.44.3}/requirements.txt +0 -0
- {seleniumbase-4.44.2 → seleniumbase-4.44.3}/sbase/__init__.py +0 -0
- {seleniumbase-4.44.2 → seleniumbase-4.44.3}/sbase/__main__.py +0 -0
- {seleniumbase-4.44.2 → seleniumbase-4.44.3}/sbase/steps.py +0 -0
- {seleniumbase-4.44.2 → seleniumbase-4.44.3}/seleniumbase/__init__.py +0 -0
- {seleniumbase-4.44.2 → seleniumbase-4.44.3}/seleniumbase/__main__.py +0 -0
- {seleniumbase-4.44.2 → seleniumbase-4.44.3}/seleniumbase/behave/__init__.py +0 -0
- {seleniumbase-4.44.2 → seleniumbase-4.44.3}/seleniumbase/behave/behave_helper.py +0 -0
- {seleniumbase-4.44.2 → seleniumbase-4.44.3}/seleniumbase/behave/behave_sb.py +0 -0
- {seleniumbase-4.44.2 → seleniumbase-4.44.3}/seleniumbase/behave/steps.py +0 -0
- {seleniumbase-4.44.2 → seleniumbase-4.44.3}/seleniumbase/common/__init__.py +0 -0
- {seleniumbase-4.44.2 → seleniumbase-4.44.3}/seleniumbase/common/decorators.py +0 -0
- {seleniumbase-4.44.2 → seleniumbase-4.44.3}/seleniumbase/common/encryption.py +0 -0
- {seleniumbase-4.44.2 → seleniumbase-4.44.3}/seleniumbase/common/exceptions.py +0 -0
- {seleniumbase-4.44.2 → seleniumbase-4.44.3}/seleniumbase/common/obfuscate.py +0 -0
- {seleniumbase-4.44.2 → seleniumbase-4.44.3}/seleniumbase/common/unobfuscate.py +0 -0
- {seleniumbase-4.44.2 → seleniumbase-4.44.3}/seleniumbase/config/__init__.py +0 -0
- {seleniumbase-4.44.2 → seleniumbase-4.44.3}/seleniumbase/config/ad_block_list.py +0 -0
- {seleniumbase-4.44.2 → seleniumbase-4.44.3}/seleniumbase/config/proxy_list.py +0 -0
- {seleniumbase-4.44.2 → seleniumbase-4.44.3}/seleniumbase/config/settings.py +0 -0
- {seleniumbase-4.44.2 → seleniumbase-4.44.3}/seleniumbase/console_scripts/__init__.py +0 -0
- {seleniumbase-4.44.2 → seleniumbase-4.44.3}/seleniumbase/console_scripts/logo_helper.py +0 -0
- {seleniumbase-4.44.2 → seleniumbase-4.44.3}/seleniumbase/console_scripts/rich_helper.py +0 -0
- {seleniumbase-4.44.2 → seleniumbase-4.44.3}/seleniumbase/console_scripts/run.py +0 -0
- {seleniumbase-4.44.2 → seleniumbase-4.44.3}/seleniumbase/console_scripts/sb_behave_gui.py +0 -0
- {seleniumbase-4.44.2 → seleniumbase-4.44.3}/seleniumbase/console_scripts/sb_caseplans.py +0 -0
- {seleniumbase-4.44.2 → seleniumbase-4.44.3}/seleniumbase/console_scripts/sb_commander.py +0 -0
- {seleniumbase-4.44.2 → seleniumbase-4.44.3}/seleniumbase/console_scripts/sb_install.py +0 -0
- {seleniumbase-4.44.2 → seleniumbase-4.44.3}/seleniumbase/console_scripts/sb_mkchart.py +0 -0
- {seleniumbase-4.44.2 → seleniumbase-4.44.3}/seleniumbase/console_scripts/sb_mkdir.py +0 -0
- {seleniumbase-4.44.2 → seleniumbase-4.44.3}/seleniumbase/console_scripts/sb_mkfile.py +0 -0
- {seleniumbase-4.44.2 → seleniumbase-4.44.3}/seleniumbase/console_scripts/sb_mkpres.py +0 -0
- {seleniumbase-4.44.2 → seleniumbase-4.44.3}/seleniumbase/console_scripts/sb_mkrec.py +0 -0
- {seleniumbase-4.44.2 → seleniumbase-4.44.3}/seleniumbase/console_scripts/sb_objectify.py +0 -0
- {seleniumbase-4.44.2 → seleniumbase-4.44.3}/seleniumbase/console_scripts/sb_print.py +0 -0
- {seleniumbase-4.44.2 → seleniumbase-4.44.3}/seleniumbase/console_scripts/sb_recorder.py +0 -0
- {seleniumbase-4.44.2 → seleniumbase-4.44.3}/seleniumbase/core/__init__.py +0 -0
- {seleniumbase-4.44.2 → seleniumbase-4.44.3}/seleniumbase/core/application_manager.py +0 -0
- {seleniumbase-4.44.2 → seleniumbase-4.44.3}/seleniumbase/core/capabilities_parser.py +0 -0
- {seleniumbase-4.44.2 → seleniumbase-4.44.3}/seleniumbase/core/colored_traceback.py +0 -0
- {seleniumbase-4.44.2 → seleniumbase-4.44.3}/seleniumbase/core/create_db_tables.sql +0 -0
- {seleniumbase-4.44.2 → seleniumbase-4.44.3}/seleniumbase/core/detect_b_ver.py +0 -0
- {seleniumbase-4.44.2 → seleniumbase-4.44.3}/seleniumbase/core/download_helper.py +0 -0
- {seleniumbase-4.44.2 → seleniumbase-4.44.3}/seleniumbase/core/encoded_images.py +0 -0
- {seleniumbase-4.44.2 → seleniumbase-4.44.3}/seleniumbase/core/jqc_helper.py +0 -0
- {seleniumbase-4.44.2 → seleniumbase-4.44.3}/seleniumbase/core/log_helper.py +0 -0
- {seleniumbase-4.44.2 → seleniumbase-4.44.3}/seleniumbase/core/mysql.py +0 -0
- {seleniumbase-4.44.2 → seleniumbase-4.44.3}/seleniumbase/core/proxy_helper.py +0 -0
- {seleniumbase-4.44.2 → seleniumbase-4.44.3}/seleniumbase/core/recorder_helper.py +0 -0
- {seleniumbase-4.44.2 → seleniumbase-4.44.3}/seleniumbase/core/report_helper.py +0 -0
- {seleniumbase-4.44.2 → seleniumbase-4.44.3}/seleniumbase/core/s3_manager.py +0 -0
- {seleniumbase-4.44.2 → seleniumbase-4.44.3}/seleniumbase/core/sb_cdp.py +0 -0
- {seleniumbase-4.44.2 → seleniumbase-4.44.3}/seleniumbase/core/sb_driver.py +0 -0
- {seleniumbase-4.44.2 → seleniumbase-4.44.3}/seleniumbase/core/session_helper.py +0 -0
- {seleniumbase-4.44.2 → seleniumbase-4.44.3}/seleniumbase/core/settings_parser.py +0 -0
- {seleniumbase-4.44.2 → seleniumbase-4.44.3}/seleniumbase/core/style_sheet.py +0 -0
- {seleniumbase-4.44.2 → seleniumbase-4.44.3}/seleniumbase/core/testcase_manager.py +0 -0
- {seleniumbase-4.44.2 → seleniumbase-4.44.3}/seleniumbase/core/tour_helper.py +0 -0
- {seleniumbase-4.44.2 → seleniumbase-4.44.3}/seleniumbase/core/visual_helper.py +0 -0
- {seleniumbase-4.44.2 → seleniumbase-4.44.3}/seleniumbase/drivers/__init__.py +0 -0
- {seleniumbase-4.44.2 → seleniumbase-4.44.3}/seleniumbase/drivers/atlas_drivers/__init__.py +0 -0
- {seleniumbase-4.44.2 → seleniumbase-4.44.3}/seleniumbase/drivers/brave_drivers/__init__.py +0 -0
- {seleniumbase-4.44.2 → seleniumbase-4.44.3}/seleniumbase/drivers/cft_drivers/__init__.py +0 -0
- {seleniumbase-4.44.2 → seleniumbase-4.44.3}/seleniumbase/drivers/chs_drivers/__init__.py +0 -0
- {seleniumbase-4.44.2 → seleniumbase-4.44.3}/seleniumbase/drivers/comet_drivers/__init__.py +0 -0
- {seleniumbase-4.44.2 → seleniumbase-4.44.3}/seleniumbase/drivers/opera_drivers/__init__.py +0 -0
- {seleniumbase-4.44.2 → seleniumbase-4.44.3}/seleniumbase/extensions/__init__.py +0 -0
- {seleniumbase-4.44.2 → seleniumbase-4.44.3}/seleniumbase/extensions/ad_block.zip +0 -0
- {seleniumbase-4.44.2 → seleniumbase-4.44.3}/seleniumbase/extensions/disable_csp.zip +0 -0
- {seleniumbase-4.44.2 → seleniumbase-4.44.3}/seleniumbase/extensions/recorder.zip +0 -0
- {seleniumbase-4.44.2 → seleniumbase-4.44.3}/seleniumbase/extensions/sbase_ext.zip +0 -0
- {seleniumbase-4.44.2 → seleniumbase-4.44.3}/seleniumbase/fixtures/__init__.py +0 -0
- {seleniumbase-4.44.2 → seleniumbase-4.44.3}/seleniumbase/fixtures/constants.py +0 -0
- {seleniumbase-4.44.2 → seleniumbase-4.44.3}/seleniumbase/fixtures/css_to_xpath.py +0 -0
- {seleniumbase-4.44.2 → seleniumbase-4.44.3}/seleniumbase/fixtures/errors.py +0 -0
- {seleniumbase-4.44.2 → seleniumbase-4.44.3}/seleniumbase/fixtures/js_utils.py +0 -0
- {seleniumbase-4.44.2 → seleniumbase-4.44.3}/seleniumbase/fixtures/page_actions.py +0 -0
- {seleniumbase-4.44.2 → seleniumbase-4.44.3}/seleniumbase/fixtures/page_utils.py +0 -0
- {seleniumbase-4.44.2 → seleniumbase-4.44.3}/seleniumbase/fixtures/shared_utils.py +0 -0
- {seleniumbase-4.44.2 → seleniumbase-4.44.3}/seleniumbase/fixtures/unittest_helper.py +0 -0
- {seleniumbase-4.44.2 → seleniumbase-4.44.3}/seleniumbase/fixtures/words.py +0 -0
- {seleniumbase-4.44.2 → seleniumbase-4.44.3}/seleniumbase/fixtures/xpath_to_css.py +0 -0
- {seleniumbase-4.44.2 → seleniumbase-4.44.3}/seleniumbase/js_code/__init__.py +0 -0
- {seleniumbase-4.44.2 → seleniumbase-4.44.3}/seleniumbase/js_code/active_css_js.py +0 -0
- {seleniumbase-4.44.2 → seleniumbase-4.44.3}/seleniumbase/js_code/live_js.py +0 -0
- {seleniumbase-4.44.2 → seleniumbase-4.44.3}/seleniumbase/js_code/recorder_js.py +0 -0
- {seleniumbase-4.44.2 → seleniumbase-4.44.3}/seleniumbase/masterqa/__init__.py +0 -0
- {seleniumbase-4.44.2 → seleniumbase-4.44.3}/seleniumbase/masterqa/master_qa.py +0 -0
- {seleniumbase-4.44.2 → seleniumbase-4.44.3}/seleniumbase/plugins/__init__.py +0 -0
- {seleniumbase-4.44.2 → seleniumbase-4.44.3}/seleniumbase/plugins/base_plugin.py +0 -0
- {seleniumbase-4.44.2 → seleniumbase-4.44.3}/seleniumbase/plugins/basic_test_info.py +0 -0
- {seleniumbase-4.44.2 → seleniumbase-4.44.3}/seleniumbase/plugins/db_reporting_plugin.py +0 -0
- {seleniumbase-4.44.2 → seleniumbase-4.44.3}/seleniumbase/plugins/driver_manager.py +0 -0
- {seleniumbase-4.44.2 → seleniumbase-4.44.3}/seleniumbase/plugins/page_source.py +0 -0
- {seleniumbase-4.44.2 → seleniumbase-4.44.3}/seleniumbase/plugins/pytest_plugin.py +0 -0
- {seleniumbase-4.44.2 → seleniumbase-4.44.3}/seleniumbase/plugins/s3_logging_plugin.py +0 -0
- {seleniumbase-4.44.2 → seleniumbase-4.44.3}/seleniumbase/plugins/sb_manager.py +0 -0
- {seleniumbase-4.44.2 → seleniumbase-4.44.3}/seleniumbase/plugins/screen_shots.py +0 -0
- {seleniumbase-4.44.2 → seleniumbase-4.44.3}/seleniumbase/plugins/selenium_plugin.py +0 -0
- {seleniumbase-4.44.2 → seleniumbase-4.44.3}/seleniumbase/resources/__init__.py +0 -0
- {seleniumbase-4.44.2 → seleniumbase-4.44.3}/seleniumbase/translate/__init__.py +0 -0
- {seleniumbase-4.44.2 → seleniumbase-4.44.3}/seleniumbase/translate/chinese.py +0 -0
- {seleniumbase-4.44.2 → seleniumbase-4.44.3}/seleniumbase/translate/dutch.py +0 -0
- {seleniumbase-4.44.2 → seleniumbase-4.44.3}/seleniumbase/translate/french.py +0 -0
- {seleniumbase-4.44.2 → seleniumbase-4.44.3}/seleniumbase/translate/italian.py +0 -0
- {seleniumbase-4.44.2 → seleniumbase-4.44.3}/seleniumbase/translate/japanese.py +0 -0
- {seleniumbase-4.44.2 → seleniumbase-4.44.3}/seleniumbase/translate/korean.py +0 -0
- {seleniumbase-4.44.2 → seleniumbase-4.44.3}/seleniumbase/translate/master_dict.py +0 -0
- {seleniumbase-4.44.2 → seleniumbase-4.44.3}/seleniumbase/translate/portuguese.py +0 -0
- {seleniumbase-4.44.2 → seleniumbase-4.44.3}/seleniumbase/translate/russian.py +0 -0
- {seleniumbase-4.44.2 → seleniumbase-4.44.3}/seleniumbase/translate/spanish.py +0 -0
- {seleniumbase-4.44.2 → seleniumbase-4.44.3}/seleniumbase/translate/translator.py +0 -0
- {seleniumbase-4.44.2 → seleniumbase-4.44.3}/seleniumbase/undetected/__init__.py +0 -0
- {seleniumbase-4.44.2 → seleniumbase-4.44.3}/seleniumbase/undetected/cdp_driver/__init__.py +0 -0
- {seleniumbase-4.44.2 → seleniumbase-4.44.3}/seleniumbase/undetected/cdp_driver/_contradict.py +0 -0
- {seleniumbase-4.44.2 → seleniumbase-4.44.3}/seleniumbase/undetected/cdp_driver/cdp_util.py +0 -0
- {seleniumbase-4.44.2 → seleniumbase-4.44.3}/seleniumbase/undetected/cdp_driver/connection.py +0 -0
- {seleniumbase-4.44.2 → seleniumbase-4.44.3}/seleniumbase/undetected/cdp_driver/element.py +0 -0
- {seleniumbase-4.44.2 → seleniumbase-4.44.3}/seleniumbase/undetected/cdp_driver/tab.py +0 -0
- {seleniumbase-4.44.2 → seleniumbase-4.44.3}/seleniumbase/undetected/dprocess.py +0 -0
- {seleniumbase-4.44.2 → seleniumbase-4.44.3}/seleniumbase/undetected/options.py +0 -0
- {seleniumbase-4.44.2 → seleniumbase-4.44.3}/seleniumbase/undetected/patcher.py +0 -0
- {seleniumbase-4.44.2 → seleniumbase-4.44.3}/seleniumbase/undetected/reactor.py +0 -0
- {seleniumbase-4.44.2 → seleniumbase-4.44.3}/seleniumbase/undetected/webelement.py +0 -0
- {seleniumbase-4.44.2 → seleniumbase-4.44.3}/seleniumbase/utilities/__init__.py +0 -0
- {seleniumbase-4.44.2 → seleniumbase-4.44.3}/seleniumbase/utilities/selenium_grid/__init__.py +0 -0
- {seleniumbase-4.44.2 → seleniumbase-4.44.3}/seleniumbase/utilities/selenium_grid/download_selenium_server.py +0 -0
- {seleniumbase-4.44.2 → seleniumbase-4.44.3}/seleniumbase/utilities/selenium_grid/font_color +0 -0
- {seleniumbase-4.44.2 → seleniumbase-4.44.3}/seleniumbase/utilities/selenium_grid/grid-hub +0 -0
- {seleniumbase-4.44.2 → seleniumbase-4.44.3}/seleniumbase/utilities/selenium_grid/grid-node +0 -0
- {seleniumbase-4.44.2 → seleniumbase-4.44.3}/seleniumbase/utilities/selenium_grid/grid_hub.py +0 -0
- {seleniumbase-4.44.2 → seleniumbase-4.44.3}/seleniumbase/utilities/selenium_grid/grid_node.py +0 -0
- {seleniumbase-4.44.2 → seleniumbase-4.44.3}/seleniumbase/utilities/selenium_grid/register-grid-node.bat +0 -0
- {seleniumbase-4.44.2 → seleniumbase-4.44.3}/seleniumbase/utilities/selenium_grid/register-grid-node.sh +0 -0
- {seleniumbase-4.44.2 → seleniumbase-4.44.3}/seleniumbase/utilities/selenium_grid/start-grid-hub.bat +0 -0
- {seleniumbase-4.44.2 → seleniumbase-4.44.3}/seleniumbase/utilities/selenium_grid/start-grid-hub.sh +0 -0
- {seleniumbase-4.44.2 → seleniumbase-4.44.3}/seleniumbase/utilities/selenium_ide/__init__.py +0 -0
- {seleniumbase-4.44.2 → seleniumbase-4.44.3}/seleniumbase/utilities/selenium_ide/convert_ide.py +0 -0
- {seleniumbase-4.44.2 → seleniumbase-4.44.3}/seleniumbase.egg-info/SOURCES.txt +0 -0
- {seleniumbase-4.44.2 → seleniumbase-4.44.3}/seleniumbase.egg-info/dependency_links.txt +0 -0
- {seleniumbase-4.44.2 → seleniumbase-4.44.3}/seleniumbase.egg-info/entry_points.txt +0 -0
- {seleniumbase-4.44.2 → seleniumbase-4.44.3}/seleniumbase.egg-info/requires.txt +0 -0
- {seleniumbase-4.44.2 → seleniumbase-4.44.3}/seleniumbase.egg-info/top_level.txt +0 -0
- {seleniumbase-4.44.2 → seleniumbase-4.44.3}/setup.cfg +0 -0
- {seleniumbase-4.44.2 → seleniumbase-4.44.3}/setup.py +0 -0
- {seleniumbase-4.44.2 → seleniumbase-4.44.3}/virtualenv_install.sh +0 -0
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
# seleniumbase package
|
|
2
|
-
__version__ = "4.44.
|
|
2
|
+
__version__ = "4.44.3"
|
|
@@ -293,7 +293,17 @@ def extend_driver(
|
|
|
293
293
|
)
|
|
294
294
|
if hasattr(driver, "proxy"):
|
|
295
295
|
driver.set_wire_proxy = DM.set_wire_proxy
|
|
296
|
+
completed_loads = []
|
|
297
|
+
for ext_dir in sb_config._ext_dirs:
|
|
298
|
+
with suppress(Exception):
|
|
299
|
+
if ext_dir not in completed_loads:
|
|
300
|
+
completed_loads.append(ext_dir)
|
|
301
|
+
if not use_uc and os.path.exists(os.path.abspath(ext_dir)):
|
|
302
|
+
driver.webextension.install(os.path.abspath(ext_dir))
|
|
296
303
|
if proxy_auth:
|
|
304
|
+
with suppress(Exception):
|
|
305
|
+
if not use_uc and os.path.exists(proxy_helper.PROXY_DIR_PATH):
|
|
306
|
+
driver.webextension.install(proxy_helper.PROXY_DIR_PATH)
|
|
297
307
|
# Proxy needs a moment to load in Manifest V3
|
|
298
308
|
if use_uc:
|
|
299
309
|
time.sleep(0.14)
|
|
@@ -2087,6 +2097,7 @@ def _add_chrome_proxy_extension(
|
|
|
2087
2097
|
"""Implementation of https://stackoverflow.com/a/35293284/7058266
|
|
2088
2098
|
for https://stackoverflow.com/q/12848327/7058266
|
|
2089
2099
|
(Run Selenium on a proxy server that requires authentication.)"""
|
|
2100
|
+
zip_it = False
|
|
2090
2101
|
args = " ".join(sys.argv)
|
|
2091
2102
|
bypass_list = proxy_bypass_list
|
|
2092
2103
|
if (
|
|
@@ -2467,13 +2478,27 @@ def _set_chrome_options(
|
|
|
2467
2478
|
extension_zip_list = extension_zip.split(",")
|
|
2468
2479
|
for extension_zip_item in extension_zip_list:
|
|
2469
2480
|
abs_path = os.path.abspath(extension_zip_item)
|
|
2470
|
-
|
|
2481
|
+
if os.path.exists(abs_path):
|
|
2482
|
+
try:
|
|
2483
|
+
abs_path_dir = os.path.join(
|
|
2484
|
+
DOWNLOADS_FOLDER, abs_path.split(".")[0]
|
|
2485
|
+
)
|
|
2486
|
+
_unzip_to_new_folder(abs_path, abs_path_dir)
|
|
2487
|
+
chrome_options = add_chrome_ext_dir(
|
|
2488
|
+
chrome_options, abs_path_dir
|
|
2489
|
+
)
|
|
2490
|
+
sb_config._ext_dirs.append(abs_path_dir)
|
|
2491
|
+
except Exception:
|
|
2492
|
+
with suppress(Exception):
|
|
2493
|
+
chrome_options.add_extension(abs_path)
|
|
2471
2494
|
if extension_dir:
|
|
2472
2495
|
# load-extension input can be a comma-separated list
|
|
2473
2496
|
abs_path = (
|
|
2474
2497
|
",".join(os.path.abspath(p) for p in extension_dir.split(","))
|
|
2475
2498
|
)
|
|
2476
2499
|
chrome_options = add_chrome_ext_dir(chrome_options, abs_path)
|
|
2500
|
+
for p in extension_dir.split(","):
|
|
2501
|
+
sb_config._ext_dirs.append(os.path.abspath(p))
|
|
2477
2502
|
if (
|
|
2478
2503
|
page_load_strategy
|
|
2479
2504
|
and page_load_strategy.lower() in ["eager", "none"]
|
|
@@ -2508,37 +2533,32 @@ def _set_chrome_options(
|
|
|
2508
2533
|
if (settings.DISABLE_CSP_ON_CHROME or disable_csp) and not headless:
|
|
2509
2534
|
# Headless Chrome does not support extensions, which are required
|
|
2510
2535
|
# for disabling the Content Security Policy on Chrome.
|
|
2511
|
-
|
|
2512
|
-
|
|
2513
|
-
|
|
2514
|
-
|
|
2515
|
-
chrome_options
|
|
2516
|
-
|
|
2517
|
-
|
|
2518
|
-
else:
|
|
2519
|
-
chrome_options = _add_chrome_disable_csp_extension(chrome_options)
|
|
2536
|
+
disable_csp_zip = DISABLE_CSP_ZIP_PATH
|
|
2537
|
+
disable_csp_dir = os.path.join(DOWNLOADS_FOLDER, "disable_csp")
|
|
2538
|
+
_unzip_to_new_folder(disable_csp_zip, disable_csp_dir)
|
|
2539
|
+
chrome_options = add_chrome_ext_dir(
|
|
2540
|
+
chrome_options, disable_csp_dir
|
|
2541
|
+
)
|
|
2542
|
+
sb_config._ext_dirs.append(disable_csp_dir)
|
|
2520
2543
|
if ad_block_on and not headless:
|
|
2521
2544
|
# Headless Chrome does not support extensions.
|
|
2522
|
-
|
|
2523
|
-
|
|
2524
|
-
|
|
2525
|
-
|
|
2526
|
-
|
|
2527
|
-
else:
|
|
2528
|
-
chrome_options = _add_chrome_ad_block_extension(chrome_options)
|
|
2545
|
+
ad_block_zip = AD_BLOCK_ZIP_PATH
|
|
2546
|
+
ad_block_dir = os.path.join(DOWNLOADS_FOLDER, "ad_block")
|
|
2547
|
+
_unzip_to_new_folder(ad_block_zip, ad_block_dir)
|
|
2548
|
+
chrome_options = add_chrome_ext_dir(chrome_options, ad_block_dir)
|
|
2549
|
+
sb_config._ext_dirs.append(ad_block_dir)
|
|
2529
2550
|
if recorder_ext and not headless:
|
|
2530
|
-
|
|
2531
|
-
|
|
2532
|
-
|
|
2533
|
-
|
|
2534
|
-
|
|
2535
|
-
else:
|
|
2536
|
-
chrome_options = _add_chrome_recorder_extension(chrome_options)
|
|
2551
|
+
recorder_zip = RECORDER_ZIP_PATH
|
|
2552
|
+
recorder_dir = os.path.join(DOWNLOADS_FOLDER, "recorder")
|
|
2553
|
+
_unzip_to_new_folder(recorder_zip, recorder_dir)
|
|
2554
|
+
chrome_options = add_chrome_ext_dir(chrome_options, recorder_dir)
|
|
2555
|
+
sb_config._ext_dirs.append(recorder_dir)
|
|
2537
2556
|
if chromium_arg and "sbase" in chromium_arg:
|
|
2538
2557
|
sbase_ext_zip = SBASE_EXT_ZIP_PATH
|
|
2539
2558
|
sbase_ext_dir = os.path.join(DOWNLOADS_FOLDER, "sbase_ext")
|
|
2540
2559
|
_unzip_to_new_folder(sbase_ext_zip, sbase_ext_dir)
|
|
2541
2560
|
chrome_options = add_chrome_ext_dir(chrome_options, sbase_ext_dir)
|
|
2561
|
+
sb_config._ext_dirs.append(sbase_ext_dir)
|
|
2542
2562
|
if proxy_string:
|
|
2543
2563
|
if proxy_auth:
|
|
2544
2564
|
zip_it = True
|
|
@@ -2724,6 +2744,10 @@ def _set_chrome_options(
|
|
|
2724
2744
|
chrome_options.add_argument("--disable-features=%s" % d_f_string)
|
|
2725
2745
|
if proxy_auth:
|
|
2726
2746
|
chrome_options.add_argument("--test-type")
|
|
2747
|
+
if proxy_auth or sb_config._ext_dirs:
|
|
2748
|
+
if not is_using_uc(undetectable, browser_name):
|
|
2749
|
+
chrome_options.enable_webextensions = True
|
|
2750
|
+
chrome_options.enable_bidi = True
|
|
2727
2751
|
if (
|
|
2728
2752
|
is_using_uc(undetectable, browser_name)
|
|
2729
2753
|
and (
|
|
@@ -2988,6 +3012,7 @@ def get_driver(
|
|
|
2988
3012
|
device_pixel_ratio=None,
|
|
2989
3013
|
browser=None, # A duplicate of browser_name to avoid confusion
|
|
2990
3014
|
):
|
|
3015
|
+
sb_config._ext_dirs = []
|
|
2991
3016
|
driver_dir = DRIVER_DIR
|
|
2992
3017
|
if (
|
|
2993
3018
|
hasattr(sb_config, "binary_location")
|
|
@@ -4694,7 +4694,7 @@ class BaseCase(unittest.TestCase):
|
|
|
4694
4694
|
if not os.path.exists(file_path):
|
|
4695
4695
|
os.makedirs(file_path)
|
|
4696
4696
|
cookies_file_path = os.path.join(file_path, name)
|
|
4697
|
-
cookies_file = open(cookies_file_path, "w+", encoding="utf-8")
|
|
4697
|
+
cookies_file = open(cookies_file_path, mode="w+", encoding="utf-8")
|
|
4698
4698
|
cookies_file.writelines(json_cookies)
|
|
4699
4699
|
cookies_file.close()
|
|
4700
4700
|
|
|
@@ -5751,7 +5751,7 @@ class BaseCase(unittest.TestCase):
|
|
|
5751
5751
|
extra_file_name = "__init__.py"
|
|
5752
5752
|
extra_file_path = os.path.join(recordings_folder, extra_file_name)
|
|
5753
5753
|
if not os.path.exists(extra_file_path):
|
|
5754
|
-
out_file = open(extra_file_path, "w+", "utf-8")
|
|
5754
|
+
out_file = open(extra_file_path, mode="w+", encoding="utf-8")
|
|
5755
5755
|
out_file.writelines("\r\n".join(data))
|
|
5756
5756
|
out_file.close()
|
|
5757
5757
|
sys.stdout.write("\nCreated recordings%s__init__.py" % os.sep)
|
|
@@ -5799,7 +5799,7 @@ class BaseCase(unittest.TestCase):
|
|
|
5799
5799
|
extra_file_name = "pytest.ini"
|
|
5800
5800
|
extra_file_path = os.path.join(recordings_folder, extra_file_name)
|
|
5801
5801
|
if not os.path.exists(extra_file_path):
|
|
5802
|
-
out_file = open(extra_file_path, "w+", "utf-8")
|
|
5802
|
+
out_file = open(extra_file_path, mode="w+", encoding="utf-8")
|
|
5803
5803
|
out_file.writelines("\r\n".join(data))
|
|
5804
5804
|
out_file.close()
|
|
5805
5805
|
sys.stdout.write("\nCreated recordings%spytest.ini" % os.sep)
|
|
@@ -5820,7 +5820,7 @@ class BaseCase(unittest.TestCase):
|
|
|
5820
5820
|
extra_file_name = "setup.cfg"
|
|
5821
5821
|
extra_file_path = os.path.join(recordings_folder, extra_file_name)
|
|
5822
5822
|
if not os.path.exists(extra_file_path):
|
|
5823
|
-
out_file = open(extra_file_path, "w+", "utf-8")
|
|
5823
|
+
out_file = open(extra_file_path, mode="w+", encoding="utf-8")
|
|
5824
5824
|
out_file.writelines("\r\n".join(data))
|
|
5825
5825
|
out_file.close()
|
|
5826
5826
|
sys.stdout.write("\nCreated recordings%ssetup.cfg" % os.sep)
|
|
@@ -5838,7 +5838,7 @@ class BaseCase(unittest.TestCase):
|
|
|
5838
5838
|
elif context_filename:
|
|
5839
5839
|
file_name = context_filename
|
|
5840
5840
|
file_path = os.path.join(recordings_folder, file_name)
|
|
5841
|
-
out_file = open(file_path, "w+", "utf-8")
|
|
5841
|
+
out_file = open(file_path, mode="w+", encoding="utf-8")
|
|
5842
5842
|
out_file.writelines("\r\n".join(data))
|
|
5843
5843
|
out_file.close()
|
|
5844
5844
|
rec_message = ">>> RECORDING SAVED as: "
|
|
@@ -5940,7 +5940,7 @@ class BaseCase(unittest.TestCase):
|
|
|
5940
5940
|
file_name = sb_config.behave_scenario.filename.replace(".", "_")
|
|
5941
5941
|
file_name = file_name.split("/")[-1].split("\\")[-1] + "_rec.feature"
|
|
5942
5942
|
file_path = os.path.join(features_folder, file_name)
|
|
5943
|
-
out_file = open(file_path, "w+", "utf-8")
|
|
5943
|
+
out_file = open(file_path, mode="w+", encoding="utf-8")
|
|
5944
5944
|
out_file.writelines("\r\n".join(data))
|
|
5945
5945
|
out_file.close()
|
|
5946
5946
|
|
|
@@ -5978,7 +5978,7 @@ class BaseCase(unittest.TestCase):
|
|
|
5978
5978
|
file_name = "__init__.py"
|
|
5979
5979
|
file_path = os.path.join(features_folder, file_name)
|
|
5980
5980
|
if not os.path.exists(file_path):
|
|
5981
|
-
out_file = open(file_path, "w+", "utf-8")
|
|
5981
|
+
out_file = open(file_path, mode="w+", encoding="utf-8")
|
|
5982
5982
|
out_file.writelines("\r\n".join(data))
|
|
5983
5983
|
out_file.close()
|
|
5984
5984
|
print("Created recordings/features/__init__.py")
|
|
@@ -5991,7 +5991,7 @@ class BaseCase(unittest.TestCase):
|
|
|
5991
5991
|
file_name = "behave.ini"
|
|
5992
5992
|
file_path = os.path.join(features_folder, file_name)
|
|
5993
5993
|
if not os.path.exists(file_path):
|
|
5994
|
-
out_file = open(file_path, "w+", "utf-8")
|
|
5994
|
+
out_file = open(file_path, mode="w+", encoding="utf-8")
|
|
5995
5995
|
out_file.writelines("\r\n".join(data))
|
|
5996
5996
|
out_file.close()
|
|
5997
5997
|
print("Created recordings/features/behave.ini")
|
|
@@ -6030,7 +6030,7 @@ class BaseCase(unittest.TestCase):
|
|
|
6030
6030
|
file_name = "environment.py"
|
|
6031
6031
|
file_path = os.path.join(features_folder, file_name)
|
|
6032
6032
|
if not os.path.exists(file_path):
|
|
6033
|
-
out_file = open(file_path, "w+", "utf-8")
|
|
6033
|
+
out_file = open(file_path, mode="w+", encoding="utf-8")
|
|
6034
6034
|
out_file.writelines("\r\n".join(data))
|
|
6035
6035
|
out_file.close()
|
|
6036
6036
|
print("Created recordings/features/environment.py")
|
|
@@ -6040,7 +6040,7 @@ class BaseCase(unittest.TestCase):
|
|
|
6040
6040
|
file_name = "__init__.py"
|
|
6041
6041
|
file_path = os.path.join(steps_folder, file_name)
|
|
6042
6042
|
if not os.path.exists(file_path):
|
|
6043
|
-
out_file = open(file_path, "w+", "utf-8")
|
|
6043
|
+
out_file = open(file_path, mode="w+", encoding="utf-8")
|
|
6044
6044
|
out_file.writelines("\r\n".join(data))
|
|
6045
6045
|
out_file.close()
|
|
6046
6046
|
print("Created recordings/features/steps/__init__.py")
|
|
@@ -6051,7 +6051,7 @@ class BaseCase(unittest.TestCase):
|
|
|
6051
6051
|
file_name = "imported.py"
|
|
6052
6052
|
file_path = os.path.join(steps_folder, file_name)
|
|
6053
6053
|
if not os.path.exists(file_path):
|
|
6054
|
-
out_file = open(file_path, "w+", "utf-8")
|
|
6054
|
+
out_file = open(file_path, mode="w+", encoding="utf-8")
|
|
6055
6055
|
out_file.writelines("\r\n".join(data))
|
|
6056
6056
|
out_file.close()
|
|
6057
6057
|
print("Created recordings/features/steps/imported.py")
|
|
@@ -11120,7 +11120,7 @@ class BaseCase(unittest.TestCase):
|
|
|
11120
11120
|
return # Skip the rest when deferred visual asserts are used
|
|
11121
11121
|
the_html = visual_helper.get_sbs_html()
|
|
11122
11122
|
file_path = os.path.join(test_logpath, constants.SideBySide.HTML_FILE)
|
|
11123
|
-
out_file = open(file_path, "w+", encoding="utf-8")
|
|
11123
|
+
out_file = open(file_path, mode="w+", encoding="utf-8")
|
|
11124
11124
|
out_file.writelines(the_html)
|
|
11125
11125
|
out_file.close()
|
|
11126
11126
|
|
|
@@ -11280,16 +11280,16 @@ class BaseCase(unittest.TestCase):
|
|
|
11280
11280
|
self.save_screenshot(
|
|
11281
11281
|
baseline_png, visual_baseline_path, selector="body"
|
|
11282
11282
|
)
|
|
11283
|
-
out_file = open(page_url_file, "w+", encoding="utf-8")
|
|
11283
|
+
out_file = open(page_url_file, mode="w+", encoding="utf-8")
|
|
11284
11284
|
out_file.writelines(page_url)
|
|
11285
11285
|
out_file.close()
|
|
11286
|
-
out_file = open(level_1_file, "w+", encoding="utf-8")
|
|
11286
|
+
out_file = open(level_1_file, mode="w+", encoding="utf-8")
|
|
11287
11287
|
out_file.writelines(json.dumps(level_1))
|
|
11288
11288
|
out_file.close()
|
|
11289
|
-
out_file = open(level_2_file, "w+", encoding="utf-8")
|
|
11289
|
+
out_file = open(level_2_file, mode="w+", encoding="utf-8")
|
|
11290
11290
|
out_file.writelines(json.dumps(level_2))
|
|
11291
11291
|
out_file.close()
|
|
11292
|
-
out_file = open(level_3_file, "w+", encoding="utf-8")
|
|
11292
|
+
out_file = open(level_3_file, mode="w+", encoding="utf-8")
|
|
11293
11293
|
out_file.writelines(json.dumps(level_3))
|
|
11294
11294
|
out_file.close()
|
|
11295
11295
|
|
|
@@ -11428,7 +11428,7 @@ class BaseCase(unittest.TestCase):
|
|
|
11428
11428
|
alpha_n_d_name = "".join([x if x.isalnum() else "_" for x in name])
|
|
11429
11429
|
side_by_side_name = "side_by_side_%s.html" % alpha_n_d_name
|
|
11430
11430
|
file_path = os.path.join(test_logpath, side_by_side_name)
|
|
11431
|
-
out_file = open(file_path, "w+", encoding="utf-8")
|
|
11431
|
+
out_file = open(file_path, mode="w+", encoding="utf-8")
|
|
11432
11432
|
out_file.writelines(the_html)
|
|
11433
11433
|
out_file.close()
|
|
11434
11434
|
|
|
@@ -12120,7 +12120,7 @@ class BaseCase(unittest.TestCase):
|
|
|
12120
12120
|
with suppress(Exception):
|
|
12121
12121
|
os.makedirs(saved_presentations_folder)
|
|
12122
12122
|
file_path = os.path.join(saved_presentations_folder, filename)
|
|
12123
|
-
out_file = open(file_path, "w+", encoding="utf-8")
|
|
12123
|
+
out_file = open(file_path, mode="w+", encoding="utf-8")
|
|
12124
12124
|
out_file.writelines(the_html)
|
|
12125
12125
|
out_file.close()
|
|
12126
12126
|
if self._output_file_saves:
|
|
@@ -12815,7 +12815,7 @@ class BaseCase(unittest.TestCase):
|
|
|
12815
12815
|
with suppress(Exception):
|
|
12816
12816
|
os.makedirs(saved_charts_folder)
|
|
12817
12817
|
file_path = os.path.join(saved_charts_folder, filename)
|
|
12818
|
-
out_file = open(file_path, "w+", encoding="utf-8")
|
|
12818
|
+
out_file = open(file_path, mode="w+", encoding="utf-8")
|
|
12819
12819
|
out_file.writelines(the_html)
|
|
12820
12820
|
out_file.close()
|
|
12821
12821
|
if self._output_file_saves:
|
|
@@ -16378,7 +16378,7 @@ class BaseCase(unittest.TestCase):
|
|
|
16378
16378
|
dash_pie = json.dumps(sb_config._saved_dashboard_pie)
|
|
16379
16379
|
dash_pie_loc = constants.Dashboard.DASH_PIE
|
|
16380
16380
|
pie_path = os.path.join(abs_path, dash_pie_loc)
|
|
16381
|
-
pie_file = open(pie_path, "w+", encoding="utf-8")
|
|
16381
|
+
pie_file = open(pie_path, mode="w+", encoding="utf-8")
|
|
16382
16382
|
pie_file.writelines(dash_pie)
|
|
16383
16383
|
pie_file.close()
|
|
16384
16384
|
DASH_PIE_PNG_1 = constants.Dashboard.get_dash_pie_1()
|
|
@@ -16538,7 +16538,7 @@ class BaseCase(unittest.TestCase):
|
|
|
16538
16538
|
)
|
|
16539
16539
|
abs_path = os.path.abspath(".")
|
|
16540
16540
|
file_path = os.path.join(abs_path, "dashboard.html")
|
|
16541
|
-
out_file = open(file_path, "w+", encoding="utf-8")
|
|
16541
|
+
out_file = open(file_path, mode="w+", encoding="utf-8")
|
|
16542
16542
|
out_file.writelines(the_html)
|
|
16543
16543
|
out_file.close()
|
|
16544
16544
|
sb_config._dash_html = the_html
|
|
@@ -16551,7 +16551,7 @@ class BaseCase(unittest.TestCase):
|
|
|
16551
16551
|
dash_json = json.dumps((_results, _display_id, _rt, _tlp, d_stats))
|
|
16552
16552
|
dash_json_loc = constants.Dashboard.DASH_JSON
|
|
16553
16553
|
dash_jsonpath = os.path.join(abs_path, dash_json_loc)
|
|
16554
|
-
dash_json_file = open(dash_jsonpath, "w+", encoding="utf-8")
|
|
16554
|
+
dash_json_file = open(dash_jsonpath, mode="w+", encoding="utf-8")
|
|
16555
16555
|
dash_json_file.writelines(dash_json)
|
|
16556
16556
|
dash_json_file.close()
|
|
16557
16557
|
|
|
@@ -1,9 +1,7 @@
|
|
|
1
|
-
import fasteners
|
|
2
1
|
import json
|
|
3
2
|
import logging
|
|
4
3
|
import requests
|
|
5
|
-
|
|
6
|
-
from seleniumbase.fixtures import shared_utils
|
|
4
|
+
import websockets
|
|
7
5
|
|
|
8
6
|
log = logging.getLogger(__name__)
|
|
9
7
|
|
|
@@ -107,15 +105,6 @@ class CDP:
|
|
|
107
105
|
return resp.json()
|
|
108
106
|
|
|
109
107
|
async def send(self, method, params):
|
|
110
|
-
pip_find_lock = fasteners.InterProcessLock(
|
|
111
|
-
constants.PipInstall.FINDLOCK
|
|
112
|
-
)
|
|
113
|
-
with pip_find_lock:
|
|
114
|
-
try:
|
|
115
|
-
import websockets
|
|
116
|
-
except Exception:
|
|
117
|
-
shared_utils.pip_install("websockets")
|
|
118
|
-
import websockets
|
|
119
108
|
self._reqid += 1
|
|
120
109
|
async with websockets.connect(self.wsurl) as ws:
|
|
121
110
|
await ws.send(
|
|
@@ -350,8 +350,7 @@ class Browser:
|
|
|
350
350
|
if _cdp_geolocation:
|
|
351
351
|
await connection.send(cdp.page.navigate("about:blank"))
|
|
352
352
|
await connection.set_geolocation(_cdp_geolocation)
|
|
353
|
-
#
|
|
354
|
-
"""
|
|
353
|
+
# (The code below is for the Chrome 142 extension fix)
|
|
355
354
|
if (
|
|
356
355
|
hasattr(sb_config, "_cdp_proxy")
|
|
357
356
|
and "@" in sb_config._cdp_proxy
|
|
@@ -363,7 +362,6 @@ class Browser:
|
|
|
363
362
|
proxy_pass = username_and_password.split(":")[1]
|
|
364
363
|
await connection.set_auth(proxy_user, proxy_pass, self.tabs[0])
|
|
365
364
|
time.sleep(0.25)
|
|
366
|
-
"""
|
|
367
365
|
if "auth" in kwargs and kwargs["auth"] and ":" in kwargs["auth"]:
|
|
368
366
|
username_and_password = kwargs["auth"]
|
|
369
367
|
proxy_user = username_and_password.split(":")[0]
|
|
@@ -375,12 +373,12 @@ class Browser:
|
|
|
375
373
|
cdp.page.navigate(url)
|
|
376
374
|
)
|
|
377
375
|
if _cdp_recorder:
|
|
378
|
-
|
|
379
|
-
|
|
376
|
+
# (The code below is for the Chrome 142 extension fix)
|
|
377
|
+
from seleniumbase.js_code.recorder_js import recorder_js
|
|
380
378
|
recorder_code = (
|
|
381
379
|
"""window.onload = function() { %s };""" % recorder_js
|
|
382
380
|
)
|
|
383
|
-
await connection.send(cdp.runtime.evaluate(recorder_code))
|
|
381
|
+
await connection.send(cdp.runtime.evaluate(recorder_code))
|
|
384
382
|
# Update the frame_id on the tab
|
|
385
383
|
connection.frame_id = frame_id
|
|
386
384
|
connection.browser = self
|
|
@@ -79,7 +79,8 @@ class Config:
|
|
|
79
79
|
if not browser_args:
|
|
80
80
|
browser_args = []
|
|
81
81
|
if not user_data_dir:
|
|
82
|
-
self.
|
|
82
|
+
self.user_data_dir = temp_profile_dir()
|
|
83
|
+
self._user_data_dir = self.user_data_dir
|
|
83
84
|
self._custom_data_dir = False
|
|
84
85
|
else:
|
|
85
86
|
self.user_data_dir = user_data_dir
|
|
@@ -315,10 +316,13 @@ def find_chrome_executable(return_all=False):
|
|
|
315
316
|
for item in os.environ.get("PATH").split(os.pathsep):
|
|
316
317
|
for subitem in (
|
|
317
318
|
"google-chrome",
|
|
319
|
+
"google-chrome-stable",
|
|
320
|
+
"google-chrome-beta",
|
|
321
|
+
"google-chrome-dev",
|
|
322
|
+
"google-chrome-unstable",
|
|
323
|
+
"chrome",
|
|
318
324
|
"chromium",
|
|
319
325
|
"chromium-browser",
|
|
320
|
-
"chrome",
|
|
321
|
-
"google-chrome-stable",
|
|
322
326
|
):
|
|
323
327
|
candidates.append(os.sep.join((item, subitem)))
|
|
324
328
|
if "darwin" in sys.platform:
|
|
@@ -347,7 +351,11 @@ def find_chrome_executable(return_all=False):
|
|
|
347
351
|
)
|
|
348
352
|
rv = []
|
|
349
353
|
for candidate in candidates:
|
|
350
|
-
if
|
|
354
|
+
if (
|
|
355
|
+
os.path.exists(candidate)
|
|
356
|
+
and os.access(candidate, os.R_OK)
|
|
357
|
+
and os.access(candidate, os.X_OK)
|
|
358
|
+
):
|
|
351
359
|
logger.debug("%s is a valid candidate... " % candidate)
|
|
352
360
|
rv.append(candidate)
|
|
353
361
|
else:
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{seleniumbase-4.44.2 → seleniumbase-4.44.3}/seleniumbase/undetected/cdp_driver/_contradict.py
RENAMED
|
File without changes
|
|
File without changes
|
{seleniumbase-4.44.2 → seleniumbase-4.44.3}/seleniumbase/undetected/cdp_driver/connection.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{seleniumbase-4.44.2 → seleniumbase-4.44.3}/seleniumbase/utilities/selenium_grid/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{seleniumbase-4.44.2 → seleniumbase-4.44.3}/seleniumbase/utilities/selenium_grid/grid_hub.py
RENAMED
|
File without changes
|
{seleniumbase-4.44.2 → seleniumbase-4.44.3}/seleniumbase/utilities/selenium_grid/grid_node.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{seleniumbase-4.44.2 → seleniumbase-4.44.3}/seleniumbase/utilities/selenium_grid/start-grid-hub.bat
RENAMED
|
File without changes
|
{seleniumbase-4.44.2 → seleniumbase-4.44.3}/seleniumbase/utilities/selenium_grid/start-grid-hub.sh
RENAMED
|
File without changes
|
|
File without changes
|
{seleniumbase-4.44.2 → seleniumbase-4.44.3}/seleniumbase/utilities/selenium_ide/convert_ide.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|