seleniumbase 4.49.13__tar.gz → 4.49.14__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.49.13/seleniumbase.egg-info → seleniumbase-4.49.14}/PKG-INFO +1 -1
- seleniumbase-4.49.14/seleniumbase/__version__.py +2 -0
- {seleniumbase-4.49.13 → seleniumbase-4.49.14}/seleniumbase/console_scripts/sb_install.py +20 -0
- {seleniumbase-4.49.13 → seleniumbase-4.49.14}/seleniumbase/core/browser_launcher.py +11 -7
- {seleniumbase-4.49.13 → seleniumbase-4.49.14}/seleniumbase/core/sb_cdp.py +19 -10
- {seleniumbase-4.49.13 → seleniumbase-4.49.14}/seleniumbase/fixtures/base_case.py +8 -0
- {seleniumbase-4.49.13 → seleniumbase-4.49.14}/seleniumbase/undetected/cdp_driver/config.py +4 -3
- {seleniumbase-4.49.13 → seleniumbase-4.49.14/seleniumbase.egg-info}/PKG-INFO +1 -1
- seleniumbase-4.49.13/seleniumbase/__version__.py +0 -2
- {seleniumbase-4.49.13 → seleniumbase-4.49.14}/.gitignore +0 -0
- {seleniumbase-4.49.13 → seleniumbase-4.49.14}/LICENSE +0 -0
- {seleniumbase-4.49.13 → seleniumbase-4.49.14}/MANIFEST.in +0 -0
- {seleniumbase-4.49.13 → seleniumbase-4.49.14}/README.md +0 -0
- {seleniumbase-4.49.13 → seleniumbase-4.49.14}/install.sh +0 -0
- {seleniumbase-4.49.13 → seleniumbase-4.49.14}/pyproject.toml +0 -0
- {seleniumbase-4.49.13 → seleniumbase-4.49.14}/pytest.ini +0 -0
- {seleniumbase-4.49.13 → seleniumbase-4.49.14}/requirements.txt +0 -0
- {seleniumbase-4.49.13 → seleniumbase-4.49.14}/sbase/__init__.py +0 -0
- {seleniumbase-4.49.13 → seleniumbase-4.49.14}/sbase/__main__.py +0 -0
- {seleniumbase-4.49.13 → seleniumbase-4.49.14}/sbase/steps.py +0 -0
- {seleniumbase-4.49.13 → seleniumbase-4.49.14}/seleniumbase/__init__.py +0 -0
- {seleniumbase-4.49.13 → seleniumbase-4.49.14}/seleniumbase/__main__.py +0 -0
- {seleniumbase-4.49.13 → seleniumbase-4.49.14}/seleniumbase/behave/__init__.py +0 -0
- {seleniumbase-4.49.13 → seleniumbase-4.49.14}/seleniumbase/behave/behave_helper.py +0 -0
- {seleniumbase-4.49.13 → seleniumbase-4.49.14}/seleniumbase/behave/behave_sb.py +0 -0
- {seleniumbase-4.49.13 → seleniumbase-4.49.14}/seleniumbase/behave/steps.py +0 -0
- {seleniumbase-4.49.13 → seleniumbase-4.49.14}/seleniumbase/common/__init__.py +0 -0
- {seleniumbase-4.49.13 → seleniumbase-4.49.14}/seleniumbase/common/decorators.py +0 -0
- {seleniumbase-4.49.13 → seleniumbase-4.49.14}/seleniumbase/common/encryption.py +0 -0
- {seleniumbase-4.49.13 → seleniumbase-4.49.14}/seleniumbase/common/exceptions.py +0 -0
- {seleniumbase-4.49.13 → seleniumbase-4.49.14}/seleniumbase/common/obfuscate.py +0 -0
- {seleniumbase-4.49.13 → seleniumbase-4.49.14}/seleniumbase/common/unobfuscate.py +0 -0
- {seleniumbase-4.49.13 → seleniumbase-4.49.14}/seleniumbase/config/__init__.py +0 -0
- {seleniumbase-4.49.13 → seleniumbase-4.49.14}/seleniumbase/config/ad_block_list.py +0 -0
- {seleniumbase-4.49.13 → seleniumbase-4.49.14}/seleniumbase/config/proxy_list.py +0 -0
- {seleniumbase-4.49.13 → seleniumbase-4.49.14}/seleniumbase/config/settings.py +0 -0
- {seleniumbase-4.49.13 → seleniumbase-4.49.14}/seleniumbase/console_scripts/__init__.py +0 -0
- {seleniumbase-4.49.13 → seleniumbase-4.49.14}/seleniumbase/console_scripts/logo_helper.py +0 -0
- {seleniumbase-4.49.13 → seleniumbase-4.49.14}/seleniumbase/console_scripts/rich_helper.py +0 -0
- {seleniumbase-4.49.13 → seleniumbase-4.49.14}/seleniumbase/console_scripts/run.py +0 -0
- {seleniumbase-4.49.13 → seleniumbase-4.49.14}/seleniumbase/console_scripts/sb_behave_gui.py +0 -0
- {seleniumbase-4.49.13 → seleniumbase-4.49.14}/seleniumbase/console_scripts/sb_caseplans.py +0 -0
- {seleniumbase-4.49.13 → seleniumbase-4.49.14}/seleniumbase/console_scripts/sb_commander.py +0 -0
- {seleniumbase-4.49.13 → seleniumbase-4.49.14}/seleniumbase/console_scripts/sb_mkchart.py +0 -0
- {seleniumbase-4.49.13 → seleniumbase-4.49.14}/seleniumbase/console_scripts/sb_mkdir.py +0 -0
- {seleniumbase-4.49.13 → seleniumbase-4.49.14}/seleniumbase/console_scripts/sb_mkfile.py +0 -0
- {seleniumbase-4.49.13 → seleniumbase-4.49.14}/seleniumbase/console_scripts/sb_mkpres.py +0 -0
- {seleniumbase-4.49.13 → seleniumbase-4.49.14}/seleniumbase/console_scripts/sb_mkrec.py +0 -0
- {seleniumbase-4.49.13 → seleniumbase-4.49.14}/seleniumbase/console_scripts/sb_objectify.py +0 -0
- {seleniumbase-4.49.13 → seleniumbase-4.49.14}/seleniumbase/console_scripts/sb_print.py +0 -0
- {seleniumbase-4.49.13 → seleniumbase-4.49.14}/seleniumbase/console_scripts/sb_recorder.py +0 -0
- {seleniumbase-4.49.13 → seleniumbase-4.49.14}/seleniumbase/core/__init__.py +0 -0
- {seleniumbase-4.49.13 → seleniumbase-4.49.14}/seleniumbase/core/application_manager.py +0 -0
- {seleniumbase-4.49.13 → seleniumbase-4.49.14}/seleniumbase/core/capabilities_parser.py +0 -0
- {seleniumbase-4.49.13 → seleniumbase-4.49.14}/seleniumbase/core/colored_traceback.py +0 -0
- {seleniumbase-4.49.13 → seleniumbase-4.49.14}/seleniumbase/core/create_db_tables.sql +0 -0
- {seleniumbase-4.49.13 → seleniumbase-4.49.14}/seleniumbase/core/detect_b_ver.py +0 -0
- {seleniumbase-4.49.13 → seleniumbase-4.49.14}/seleniumbase/core/download_helper.py +0 -0
- {seleniumbase-4.49.13 → seleniumbase-4.49.14}/seleniumbase/core/encoded_images.py +0 -0
- {seleniumbase-4.49.13 → seleniumbase-4.49.14}/seleniumbase/core/jqc_helper.py +0 -0
- {seleniumbase-4.49.13 → seleniumbase-4.49.14}/seleniumbase/core/log_helper.py +0 -0
- {seleniumbase-4.49.13 → seleniumbase-4.49.14}/seleniumbase/core/mysql.py +0 -0
- {seleniumbase-4.49.13 → seleniumbase-4.49.14}/seleniumbase/core/nest_asyncio.py +0 -0
- {seleniumbase-4.49.13 → seleniumbase-4.49.14}/seleniumbase/core/proxy_helper.py +0 -0
- {seleniumbase-4.49.13 → seleniumbase-4.49.14}/seleniumbase/core/recorder_helper.py +0 -0
- {seleniumbase-4.49.13 → seleniumbase-4.49.14}/seleniumbase/core/report_helper.py +0 -0
- {seleniumbase-4.49.13 → seleniumbase-4.49.14}/seleniumbase/core/s3_manager.py +0 -0
- {seleniumbase-4.49.13 → seleniumbase-4.49.14}/seleniumbase/core/sb_driver.py +0 -0
- {seleniumbase-4.49.13 → seleniumbase-4.49.14}/seleniumbase/core/session_helper.py +0 -0
- {seleniumbase-4.49.13 → seleniumbase-4.49.14}/seleniumbase/core/settings_parser.py +0 -0
- {seleniumbase-4.49.13 → seleniumbase-4.49.14}/seleniumbase/core/style_sheet.py +0 -0
- {seleniumbase-4.49.13 → seleniumbase-4.49.14}/seleniumbase/core/testcase_manager.py +0 -0
- {seleniumbase-4.49.13 → seleniumbase-4.49.14}/seleniumbase/core/tour_helper.py +0 -0
- {seleniumbase-4.49.13 → seleniumbase-4.49.14}/seleniumbase/core/visual_helper.py +0 -0
- {seleniumbase-4.49.13 → seleniumbase-4.49.14}/seleniumbase/drivers/__init__.py +0 -0
- {seleniumbase-4.49.13 → seleniumbase-4.49.14}/seleniumbase/drivers/atlas_drivers/__init__.py +0 -0
- {seleniumbase-4.49.13 → seleniumbase-4.49.14}/seleniumbase/drivers/brave_drivers/__init__.py +0 -0
- {seleniumbase-4.49.13 → seleniumbase-4.49.14}/seleniumbase/drivers/cft_drivers/__init__.py +0 -0
- {seleniumbase-4.49.13 → seleniumbase-4.49.14}/seleniumbase/drivers/chromium_drivers/__init__.py +0 -0
- {seleniumbase-4.49.13 → seleniumbase-4.49.14}/seleniumbase/drivers/chs_drivers/__init__.py +0 -0
- {seleniumbase-4.49.13 → seleniumbase-4.49.14}/seleniumbase/drivers/comet_drivers/__init__.py +0 -0
- {seleniumbase-4.49.13 → seleniumbase-4.49.14}/seleniumbase/drivers/opera_drivers/__init__.py +0 -0
- {seleniumbase-4.49.13 → seleniumbase-4.49.14}/seleniumbase/extensions/__init__.py +0 -0
- {seleniumbase-4.49.13 → seleniumbase-4.49.14}/seleniumbase/extensions/ad_block.zip +0 -0
- {seleniumbase-4.49.13 → seleniumbase-4.49.14}/seleniumbase/extensions/disable_csp.zip +0 -0
- {seleniumbase-4.49.13 → seleniumbase-4.49.14}/seleniumbase/extensions/recorder.zip +0 -0
- {seleniumbase-4.49.13 → seleniumbase-4.49.14}/seleniumbase/extensions/sbase_ext.zip +0 -0
- {seleniumbase-4.49.13 → seleniumbase-4.49.14}/seleniumbase/fixtures/__init__.py +0 -0
- {seleniumbase-4.49.13 → seleniumbase-4.49.14}/seleniumbase/fixtures/constants.py +0 -0
- {seleniumbase-4.49.13 → seleniumbase-4.49.14}/seleniumbase/fixtures/css_to_xpath.py +0 -0
- {seleniumbase-4.49.13 → seleniumbase-4.49.14}/seleniumbase/fixtures/errors.py +0 -0
- {seleniumbase-4.49.13 → seleniumbase-4.49.14}/seleniumbase/fixtures/js_utils.py +0 -0
- {seleniumbase-4.49.13 → seleniumbase-4.49.14}/seleniumbase/fixtures/page_actions.py +0 -0
- {seleniumbase-4.49.13 → seleniumbase-4.49.14}/seleniumbase/fixtures/page_utils.py +0 -0
- {seleniumbase-4.49.13 → seleniumbase-4.49.14}/seleniumbase/fixtures/shared_utils.py +0 -0
- {seleniumbase-4.49.13 → seleniumbase-4.49.14}/seleniumbase/fixtures/unittest_helper.py +0 -0
- {seleniumbase-4.49.13 → seleniumbase-4.49.14}/seleniumbase/fixtures/words.py +0 -0
- {seleniumbase-4.49.13 → seleniumbase-4.49.14}/seleniumbase/fixtures/xpath_to_css.py +0 -0
- {seleniumbase-4.49.13 → seleniumbase-4.49.14}/seleniumbase/js_code/__init__.py +0 -0
- {seleniumbase-4.49.13 → seleniumbase-4.49.14}/seleniumbase/js_code/active_css_js.py +0 -0
- {seleniumbase-4.49.13 → seleniumbase-4.49.14}/seleniumbase/js_code/live_js.py +0 -0
- {seleniumbase-4.49.13 → seleniumbase-4.49.14}/seleniumbase/js_code/recorder_js.py +0 -0
- {seleniumbase-4.49.13 → seleniumbase-4.49.14}/seleniumbase/masterqa/__init__.py +0 -0
- {seleniumbase-4.49.13 → seleniumbase-4.49.14}/seleniumbase/masterqa/master_qa.py +0 -0
- {seleniumbase-4.49.13 → seleniumbase-4.49.14}/seleniumbase/plugins/__init__.py +0 -0
- {seleniumbase-4.49.13 → seleniumbase-4.49.14}/seleniumbase/plugins/base_plugin.py +0 -0
- {seleniumbase-4.49.13 → seleniumbase-4.49.14}/seleniumbase/plugins/basic_test_info.py +0 -0
- {seleniumbase-4.49.13 → seleniumbase-4.49.14}/seleniumbase/plugins/db_reporting_plugin.py +0 -0
- {seleniumbase-4.49.13 → seleniumbase-4.49.14}/seleniumbase/plugins/driver_manager.py +0 -0
- {seleniumbase-4.49.13 → seleniumbase-4.49.14}/seleniumbase/plugins/page_source.py +0 -0
- {seleniumbase-4.49.13 → seleniumbase-4.49.14}/seleniumbase/plugins/pytest_plugin.py +0 -0
- {seleniumbase-4.49.13 → seleniumbase-4.49.14}/seleniumbase/plugins/s3_logging_plugin.py +0 -0
- {seleniumbase-4.49.13 → seleniumbase-4.49.14}/seleniumbase/plugins/sb_manager.py +0 -0
- {seleniumbase-4.49.13 → seleniumbase-4.49.14}/seleniumbase/plugins/screen_shots.py +0 -0
- {seleniumbase-4.49.13 → seleniumbase-4.49.14}/seleniumbase/plugins/selenium_plugin.py +0 -0
- {seleniumbase-4.49.13 → seleniumbase-4.49.14}/seleniumbase/resources/__init__.py +0 -0
- {seleniumbase-4.49.13 → seleniumbase-4.49.14}/seleniumbase/translate/__init__.py +0 -0
- {seleniumbase-4.49.13 → seleniumbase-4.49.14}/seleniumbase/translate/chinese.py +0 -0
- {seleniumbase-4.49.13 → seleniumbase-4.49.14}/seleniumbase/translate/dutch.py +0 -0
- {seleniumbase-4.49.13 → seleniumbase-4.49.14}/seleniumbase/translate/french.py +0 -0
- {seleniumbase-4.49.13 → seleniumbase-4.49.14}/seleniumbase/translate/italian.py +0 -0
- {seleniumbase-4.49.13 → seleniumbase-4.49.14}/seleniumbase/translate/japanese.py +0 -0
- {seleniumbase-4.49.13 → seleniumbase-4.49.14}/seleniumbase/translate/korean.py +0 -0
- {seleniumbase-4.49.13 → seleniumbase-4.49.14}/seleniumbase/translate/master_dict.py +0 -0
- {seleniumbase-4.49.13 → seleniumbase-4.49.14}/seleniumbase/translate/portuguese.py +0 -0
- {seleniumbase-4.49.13 → seleniumbase-4.49.14}/seleniumbase/translate/russian.py +0 -0
- {seleniumbase-4.49.13 → seleniumbase-4.49.14}/seleniumbase/translate/spanish.py +0 -0
- {seleniumbase-4.49.13 → seleniumbase-4.49.14}/seleniumbase/translate/translator.py +0 -0
- {seleniumbase-4.49.13 → seleniumbase-4.49.14}/seleniumbase/undetected/__init__.py +0 -0
- {seleniumbase-4.49.13 → seleniumbase-4.49.14}/seleniumbase/undetected/cdp.py +0 -0
- {seleniumbase-4.49.13 → seleniumbase-4.49.14}/seleniumbase/undetected/cdp_driver/__init__.py +0 -0
- {seleniumbase-4.49.13 → seleniumbase-4.49.14}/seleniumbase/undetected/cdp_driver/_contradict.py +0 -0
- {seleniumbase-4.49.13 → seleniumbase-4.49.14}/seleniumbase/undetected/cdp_driver/browser.py +0 -0
- {seleniumbase-4.49.13 → seleniumbase-4.49.14}/seleniumbase/undetected/cdp_driver/cdp_util.py +0 -0
- {seleniumbase-4.49.13 → seleniumbase-4.49.14}/seleniumbase/undetected/cdp_driver/connection.py +0 -0
- {seleniumbase-4.49.13 → seleniumbase-4.49.14}/seleniumbase/undetected/cdp_driver/element.py +0 -0
- {seleniumbase-4.49.13 → seleniumbase-4.49.14}/seleniumbase/undetected/cdp_driver/tab.py +0 -0
- {seleniumbase-4.49.13 → seleniumbase-4.49.14}/seleniumbase/undetected/dprocess.py +0 -0
- {seleniumbase-4.49.13 → seleniumbase-4.49.14}/seleniumbase/undetected/options.py +0 -0
- {seleniumbase-4.49.13 → seleniumbase-4.49.14}/seleniumbase/undetected/patcher.py +0 -0
- {seleniumbase-4.49.13 → seleniumbase-4.49.14}/seleniumbase/undetected/reactor.py +0 -0
- {seleniumbase-4.49.13 → seleniumbase-4.49.14}/seleniumbase/undetected/webelement.py +0 -0
- {seleniumbase-4.49.13 → seleniumbase-4.49.14}/seleniumbase/utilities/__init__.py +0 -0
- {seleniumbase-4.49.13 → seleniumbase-4.49.14}/seleniumbase/utilities/selenium_grid/__init__.py +0 -0
- {seleniumbase-4.49.13 → seleniumbase-4.49.14}/seleniumbase/utilities/selenium_grid/download_selenium_server.py +0 -0
- {seleniumbase-4.49.13 → seleniumbase-4.49.14}/seleniumbase/utilities/selenium_grid/font_color +0 -0
- {seleniumbase-4.49.13 → seleniumbase-4.49.14}/seleniumbase/utilities/selenium_grid/grid-hub +0 -0
- {seleniumbase-4.49.13 → seleniumbase-4.49.14}/seleniumbase/utilities/selenium_grid/grid-node +0 -0
- {seleniumbase-4.49.13 → seleniumbase-4.49.14}/seleniumbase/utilities/selenium_grid/grid_hub.py +0 -0
- {seleniumbase-4.49.13 → seleniumbase-4.49.14}/seleniumbase/utilities/selenium_grid/grid_node.py +0 -0
- {seleniumbase-4.49.13 → seleniumbase-4.49.14}/seleniumbase/utilities/selenium_grid/register-grid-node.bat +0 -0
- {seleniumbase-4.49.13 → seleniumbase-4.49.14}/seleniumbase/utilities/selenium_grid/register-grid-node.sh +0 -0
- {seleniumbase-4.49.13 → seleniumbase-4.49.14}/seleniumbase/utilities/selenium_grid/start-grid-hub.bat +0 -0
- {seleniumbase-4.49.13 → seleniumbase-4.49.14}/seleniumbase/utilities/selenium_grid/start-grid-hub.sh +0 -0
- {seleniumbase-4.49.13 → seleniumbase-4.49.14}/seleniumbase/utilities/selenium_ide/__init__.py +0 -0
- {seleniumbase-4.49.13 → seleniumbase-4.49.14}/seleniumbase/utilities/selenium_ide/convert_ide.py +0 -0
- {seleniumbase-4.49.13 → seleniumbase-4.49.14}/seleniumbase.egg-info/SOURCES.txt +0 -0
- {seleniumbase-4.49.13 → seleniumbase-4.49.14}/seleniumbase.egg-info/dependency_links.txt +0 -0
- {seleniumbase-4.49.13 → seleniumbase-4.49.14}/seleniumbase.egg-info/entry_points.txt +0 -0
- {seleniumbase-4.49.13 → seleniumbase-4.49.14}/seleniumbase.egg-info/requires.txt +0 -0
- {seleniumbase-4.49.13 → seleniumbase-4.49.14}/seleniumbase.egg-info/top_level.txt +0 -0
- {seleniumbase-4.49.13 → seleniumbase-4.49.14}/setup.cfg +0 -0
- {seleniumbase-4.49.13 → seleniumbase-4.49.14}/setup.py +0 -0
- {seleniumbase-4.49.13 → seleniumbase-4.49.14}/virtualenv_install.sh +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: seleniumbase
|
|
3
|
-
Version: 4.49.
|
|
3
|
+
Version: 4.49.14
|
|
4
4
|
Summary: SeleniumBase is a framework for web crawling, scraping, and testing. Supports pytest. CDP Mode adds stealth. Includes many tools.
|
|
5
5
|
Home-page: https://github.com/seleniumbase/SeleniumBase
|
|
6
6
|
Author: Michael Mintz
|
|
@@ -734,6 +734,26 @@ def main(override=None, intel_for_uc=None, force_uc=None):
|
|
|
734
734
|
platform_code = "Win"
|
|
735
735
|
file_name = "chrome-win.zip"
|
|
736
736
|
revision = get_chromium_latest_revision(platform_code)
|
|
737
|
+
arg_join = " ".join(sys.argv)
|
|
738
|
+
if "--revision" in arg_join:
|
|
739
|
+
rev_str = None
|
|
740
|
+
if "--revision=" in arg_join:
|
|
741
|
+
rev_str = arg_join.split("--revision=")[1].split(" ")[0]
|
|
742
|
+
elif "--revision " in arg_join:
|
|
743
|
+
rev_str = arg_join.split("--revision ")[1].split(" ")[0]
|
|
744
|
+
if rev_str:
|
|
745
|
+
if rev_str.startswith('"') and rev_str.endswith('"'):
|
|
746
|
+
rev_str = rev_str[1:-1]
|
|
747
|
+
elif rev_str.startswith("'") and rev_str.endswith("'"):
|
|
748
|
+
rev_str = rev_str[1:-1]
|
|
749
|
+
with suppress(Exception):
|
|
750
|
+
if int(rev_str) > 1000000:
|
|
751
|
+
revision = rev_str
|
|
752
|
+
else:
|
|
753
|
+
print(
|
|
754
|
+
"Invalid revision number! Defaulting to %s!"
|
|
755
|
+
% revision
|
|
756
|
+
)
|
|
737
757
|
msg = c2 + "Chromium revision to download" + cr
|
|
738
758
|
p_version = c3 + revision + cr
|
|
739
759
|
log_d("\n*** %s = %s" % (msg, p_version))
|
|
@@ -851,8 +851,9 @@ def uc_open_with_cdp_mode(driver, url=None, **kwargs):
|
|
|
851
851
|
cdp.gui_drag_drop_points = CDPM.gui_drag_drop_points
|
|
852
852
|
cdp.gui_drag_and_drop = CDPM.gui_drag_and_drop
|
|
853
853
|
cdp.gui_click_and_hold = CDPM.gui_click_and_hold
|
|
854
|
-
cdp.
|
|
854
|
+
cdp.gui_move_to_element = CDPM.gui_move_to_element
|
|
855
855
|
cdp.gui_hover_element = CDPM.gui_hover_element
|
|
856
|
+
cdp.gui_hover_x_y = CDPM.gui_hover_x_y
|
|
856
857
|
cdp.gui_hover_and_click = CDPM.gui_hover_and_click
|
|
857
858
|
cdp.hover_element = CDPM.hover_element
|
|
858
859
|
cdp.hover_and_click = CDPM.hover_and_click
|
|
@@ -2763,6 +2764,7 @@ def _set_chrome_options(
|
|
|
2763
2764
|
chrome_options.add_argument("--disable-3d-apis")
|
|
2764
2765
|
if headless or headless2 or is_using_uc(undetectable, browser_name):
|
|
2765
2766
|
chrome_options.add_argument("--disable-renderer-backgrounding")
|
|
2767
|
+
chrome_options.add_argument("--disable-background-networking")
|
|
2766
2768
|
chrome_options.add_argument("--disable-backgrounding-occluded-windows")
|
|
2767
2769
|
chrome_options.add_argument("--disable-client-side-phishing-detection")
|
|
2768
2770
|
chrome_options.add_argument("--disable-device-discovery-notifications")
|
|
@@ -2779,7 +2781,6 @@ def _set_chrome_options(
|
|
|
2779
2781
|
chrome_options.add_argument("--disable-domain-reliability")
|
|
2780
2782
|
chrome_options.add_argument("--disable-breakpad")
|
|
2781
2783
|
included_disabled_features = []
|
|
2782
|
-
included_disabled_features.append("OptimizationHints")
|
|
2783
2784
|
included_disabled_features.append("OptimizationHintsFetching")
|
|
2784
2785
|
included_disabled_features.append("Translate")
|
|
2785
2786
|
included_disabled_features.append("ComponentUpdater")
|
|
@@ -2800,14 +2801,19 @@ def _set_chrome_options(
|
|
|
2800
2801
|
included_disabled_features.append("UnifiedWebBluetooth")
|
|
2801
2802
|
included_disabled_features.append("WebAuthentication")
|
|
2802
2803
|
included_disabled_features.append("PasskeyAuth")
|
|
2804
|
+
included_disabled_features.append("MediaRouter")
|
|
2805
|
+
included_disabled_features.append("DialMediaRouteProvider")
|
|
2806
|
+
included_disabled_features.append("WebRtcHideLocalIpsWithMdns")
|
|
2807
|
+
if is_using_uc(undetectable, browser_name):
|
|
2808
|
+
included_disabled_features.append("IsolateOrigins")
|
|
2809
|
+
included_disabled_features.append("site-per-process")
|
|
2803
2810
|
for item in extra_disabled_features:
|
|
2804
2811
|
if item not in included_disabled_features:
|
|
2805
2812
|
included_disabled_features.append(item)
|
|
2806
2813
|
d_f_string = ",".join(included_disabled_features)
|
|
2807
2814
|
chrome_options.add_argument("--disable-features=%s" % d_f_string)
|
|
2808
2815
|
chrome_options.add_argument("--enable-unsafe-extension-debugging")
|
|
2809
|
-
|
|
2810
|
-
chrome_options.add_argument("--test-type")
|
|
2816
|
+
chrome_options.add_argument("--test-type")
|
|
2811
2817
|
if proxy_auth or sb_config._ext_dirs:
|
|
2812
2818
|
if not is_using_uc(undetectable, browser_name):
|
|
2813
2819
|
chrome_options.add_argument("--remote-debugging-pipe")
|
|
@@ -2825,13 +2831,12 @@ def _set_chrome_options(
|
|
|
2825
2831
|
chrome_options.add_argument("--animation-duration-scale=0")
|
|
2826
2832
|
chrome_options.add_argument("--wm-window-animations-disabled")
|
|
2827
2833
|
chrome_options.add_argument("--enable-privacy-sandbox-ads-apis")
|
|
2834
|
+
chrome_options.add_argument("--disable-auto-reload")
|
|
2828
2835
|
chrome_options.add_argument("--disable-background-timer-throttling")
|
|
2829
2836
|
# Prevent new tabs opened by Selenium from being blocked:
|
|
2830
2837
|
chrome_options.add_argument("--disable-popup-blocking")
|
|
2831
2838
|
# Skip remaining options that trigger anti-bot services
|
|
2832
2839
|
return chrome_options
|
|
2833
|
-
if not proxy_string:
|
|
2834
|
-
chrome_options.add_argument("--test-type")
|
|
2835
2840
|
chrome_options.add_argument("--log-level=3")
|
|
2836
2841
|
chrome_options.add_argument("--no-first-run")
|
|
2837
2842
|
chrome_options.add_argument("--allow-insecure-localhost")
|
|
@@ -4803,7 +4808,6 @@ def get_local_driver(
|
|
|
4803
4808
|
edge_options.add_argument("--disable-domain-reliability")
|
|
4804
4809
|
edge_options.add_argument("--disable-breakpad")
|
|
4805
4810
|
included_disabled_features = []
|
|
4806
|
-
included_disabled_features.append("OptimizationHints")
|
|
4807
4811
|
included_disabled_features.append("OptimizationHintsFetching")
|
|
4808
4812
|
included_disabled_features.append("Translate")
|
|
4809
4813
|
included_disabled_features.append("ComponentUpdater")
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
"""
|
|
1
|
+
"""The CDP Mode API (sync format), which wraps the async format."""
|
|
2
2
|
import asyncio
|
|
3
3
|
import fasteners
|
|
4
4
|
import mycdp
|
|
@@ -2035,7 +2035,7 @@ class CDPMethods():
|
|
|
2035
2035
|
self.__slow_mode_pause_if_set()
|
|
2036
2036
|
self.loop.run_until_complete(self.page.sleep(0.025))
|
|
2037
2037
|
|
|
2038
|
-
def __gui_click_x_y(self, x, y, timeframe=0.
|
|
2038
|
+
def __gui_click_x_y(self, x, y, timeframe=0.27, uc_lock=False):
|
|
2039
2039
|
self.__install_pyautogui_if_missing()
|
|
2040
2040
|
import pyautogui
|
|
2041
2041
|
pyautogui = self.__get_configured_pyautogui(pyautogui)
|
|
@@ -2065,7 +2065,7 @@ class CDPMethods():
|
|
|
2065
2065
|
print(" <DEBUG> pyautogui.click(%s, %s)" % (x, y))
|
|
2066
2066
|
pyautogui.click(x=x, y=y)
|
|
2067
2067
|
|
|
2068
|
-
def gui_click_x_y(self, x, y, timeframe=0.
|
|
2068
|
+
def gui_click_x_y(self, x, y, timeframe=0.27):
|
|
2069
2069
|
gui_lock = FileLock(constants.MultiBrowser.PYAUTOGUILOCK)
|
|
2070
2070
|
with gui_lock: # Prevent issues with multiple processes
|
|
2071
2071
|
self.__make_sure_pyautogui_lock_is_writable()
|
|
@@ -2097,7 +2097,7 @@ class CDPMethods():
|
|
|
2097
2097
|
self.bring_active_window_to_front()
|
|
2098
2098
|
self.__gui_click_x_y(x, y, timeframe=timeframe, uc_lock=False)
|
|
2099
2099
|
|
|
2100
|
-
def gui_click_element(self, selector, timeframe=0.
|
|
2100
|
+
def gui_click_element(self, selector, timeframe=0.27):
|
|
2101
2101
|
self.__slow_mode_pause_if_set()
|
|
2102
2102
|
x, y = self.get_gui_element_center(selector)
|
|
2103
2103
|
self.__add_light_pause()
|
|
@@ -2106,7 +2106,7 @@ class CDPMethods():
|
|
|
2106
2106
|
self.loop.run_until_complete(self.page.wait(0.2))
|
|
2107
2107
|
|
|
2108
2108
|
def gui_click_with_offset(
|
|
2109
|
-
self, selector, x, y, timeframe=0.
|
|
2109
|
+
self, selector, x, y, timeframe=0.27, center=False
|
|
2110
2110
|
):
|
|
2111
2111
|
"""Click an element at an {X,Y}-offset location.
|
|
2112
2112
|
{0,0} is the top-left corner of the element.
|
|
@@ -2577,7 +2577,7 @@ class CDPMethods():
|
|
|
2577
2577
|
return True
|
|
2578
2578
|
return False
|
|
2579
2579
|
|
|
2580
|
-
def __gui_drag_drop(self, x1, y1, x2, y2, timeframe=0.
|
|
2580
|
+
def __gui_drag_drop(self, x1, y1, x2, y2, timeframe=0.27, uc_lock=False):
|
|
2581
2581
|
self.__install_pyautogui_if_missing()
|
|
2582
2582
|
import pyautogui
|
|
2583
2583
|
pyautogui = self.__get_configured_pyautogui(pyautogui)
|
|
@@ -2672,7 +2672,11 @@ class CDPMethods():
|
|
|
2672
2672
|
self.__add_light_pause()
|
|
2673
2673
|
self.gui_drag_drop_points(x, y, x, y, timeframe=timeframe)
|
|
2674
2674
|
|
|
2675
|
-
def
|
|
2675
|
+
def gui_move_to_element(self, selector, timeframe=0.27):
|
|
2676
|
+
"""Same as gui_hover_element()"""
|
|
2677
|
+
return self.gui_hover_element(selector, timeframe=timeframe)
|
|
2678
|
+
|
|
2679
|
+
def __gui_hover_x_y(self, x, y, timeframe=0.27, uc_lock=False):
|
|
2676
2680
|
self.__install_pyautogui_if_missing()
|
|
2677
2681
|
import pyautogui
|
|
2678
2682
|
pyautogui = self.__get_configured_pyautogui(pyautogui)
|
|
@@ -2697,7 +2701,7 @@ class CDPMethods():
|
|
|
2697
2701
|
pyautogui.moveTo(x, y, timeframe, pyautogui.easeOutQuad)
|
|
2698
2702
|
time.sleep(0.056)
|
|
2699
2703
|
|
|
2700
|
-
def gui_hover_x_y(self, x, y, timeframe=0.
|
|
2704
|
+
def gui_hover_x_y(self, x, y, timeframe=0.27):
|
|
2701
2705
|
gui_lock = FileLock(constants.MultiBrowser.PYAUTOGUILOCK)
|
|
2702
2706
|
with gui_lock: # Prevent issues with multiple processes
|
|
2703
2707
|
self.__install_pyautogui_if_missing()
|
|
@@ -2748,7 +2752,12 @@ class CDPMethods():
|
|
|
2748
2752
|
self.bring_active_window_to_front()
|
|
2749
2753
|
self.__gui_hover_x_y(x, y, timeframe=timeframe, uc_lock=False)
|
|
2750
2754
|
|
|
2751
|
-
def gui_hover_element(self, selector, timeframe=0.
|
|
2755
|
+
def gui_hover_element(self, selector, timeframe=0.27):
|
|
2756
|
+
try:
|
|
2757
|
+
self.__verify_pyautogui_has_a_headed_browser()
|
|
2758
|
+
except Exception:
|
|
2759
|
+
self.hover_element(selector, timeframe=timeframe)
|
|
2760
|
+
return
|
|
2752
2761
|
self.__slow_mode_pause_if_set()
|
|
2753
2762
|
element_rect = self.get_gui_element_rect(selector)
|
|
2754
2763
|
width = element_rect["width"]
|
|
@@ -2760,7 +2769,7 @@ class CDPMethods():
|
|
|
2760
2769
|
self.__slow_mode_pause_if_set()
|
|
2761
2770
|
self.loop.run_until_complete(self.page.wait(0.1))
|
|
2762
2771
|
|
|
2763
|
-
def hover_element(self, selector, timeframe=0.
|
|
2772
|
+
def hover_element(self, selector, timeframe=0.27):
|
|
2764
2773
|
element = self.select(selector)
|
|
2765
2774
|
gui_lock = FileLock(constants.MultiBrowser.PYAUTOGUILOCK)
|
|
2766
2775
|
with gui_lock:
|
|
@@ -5151,6 +5151,14 @@ class BaseCase(unittest.TestCase):
|
|
|
5151
5151
|
self.gui_drag_and_drop = self.cdp.gui_drag_and_drop
|
|
5152
5152
|
if hasattr(self.cdp, "gui_drag_drop_points"):
|
|
5153
5153
|
self.gui_drag_drop_points = self.cdp.gui_drag_drop_points
|
|
5154
|
+
if hasattr(self.cdp, "gui_hover_and_click"):
|
|
5155
|
+
self.gui_hover_and_click = self.cdp.gui_hover_and_click
|
|
5156
|
+
if hasattr(self.cdp, "gui_hover_element"):
|
|
5157
|
+
self.gui_hover_element = self.cdp.gui_hover_element
|
|
5158
|
+
if hasattr(self.cdp, "gui_hover_x_y"):
|
|
5159
|
+
self.gui_hover_x_y = self.cdp.gui_hover_x_y
|
|
5160
|
+
if hasattr(self.cdp, "gui_move_to_element"):
|
|
5161
|
+
self.gui_move_to_element = self.cdp.gui_move_to_element
|
|
5154
5162
|
if hasattr(self.cdp, "highlight_overlay"):
|
|
5155
5163
|
self.highlight_overlay = self.cdp.highlight_overlay
|
|
5156
5164
|
if hasattr(self.cdp, "js_dumps"):
|
|
@@ -250,6 +250,7 @@ class Config:
|
|
|
250
250
|
"--disable-ipc-flooding-protection",
|
|
251
251
|
"--disable-background-timer-throttling",
|
|
252
252
|
"--disable-search-engine-choice-screen",
|
|
253
|
+
"--disable-background-networking",
|
|
253
254
|
"--disable-backgrounding-occluded-windows",
|
|
254
255
|
"--disable-client-side-phishing-detection",
|
|
255
256
|
"--disable-device-discovery-notifications",
|
|
@@ -314,9 +315,9 @@ class Config:
|
|
|
314
315
|
"SidePanelPinning,UserAgentClientHint,PrivacySandboxSettings4,"
|
|
315
316
|
"OptimizationHintsFetching,InterestFeedContentSuggestions,"
|
|
316
317
|
"Bluetooth,WebBluetooth,UnifiedWebBluetooth,ComponentUpdater,"
|
|
317
|
-
"DisableLoadExtensionCommandLineSwitch,"
|
|
318
|
-
"OmniboxUIFeedback,OmniboxPopupShortcut,"
|
|
319
|
-
"
|
|
318
|
+
"DisableLoadExtensionCommandLineSwitch,WebAuthentication,"
|
|
319
|
+
"OmniboxUIFeedback,OmniboxPopupShortcut,PasskeyAuth,"
|
|
320
|
+
"MediaRouter,DialMediaRouteProvider,WebRtcHideLocalIpsWithMdns"
|
|
320
321
|
]
|
|
321
322
|
if self.expert:
|
|
322
323
|
args += [
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: seleniumbase
|
|
3
|
-
Version: 4.49.
|
|
3
|
+
Version: 4.49.14
|
|
4
4
|
Summary: SeleniumBase is a framework for web crawling, scraping, and testing. Supports pytest. CDP Mode adds stealth. Includes many tools.
|
|
5
5
|
Home-page: https://github.com/seleniumbase/SeleniumBase
|
|
6
6
|
Author: Michael Mintz
|
|
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.49.13 → seleniumbase-4.49.14}/seleniumbase/drivers/atlas_drivers/__init__.py
RENAMED
|
File without changes
|
{seleniumbase-4.49.13 → seleniumbase-4.49.14}/seleniumbase/drivers/brave_drivers/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{seleniumbase-4.49.13 → seleniumbase-4.49.14}/seleniumbase/drivers/chromium_drivers/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{seleniumbase-4.49.13 → seleniumbase-4.49.14}/seleniumbase/drivers/comet_drivers/__init__.py
RENAMED
|
File without changes
|
{seleniumbase-4.49.13 → seleniumbase-4.49.14}/seleniumbase/drivers/opera_drivers/__init__.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
|
|
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.49.13 → seleniumbase-4.49.14}/seleniumbase/undetected/cdp_driver/__init__.py
RENAMED
|
File without changes
|
{seleniumbase-4.49.13 → seleniumbase-4.49.14}/seleniumbase/undetected/cdp_driver/_contradict.py
RENAMED
|
File without changes
|
|
File without changes
|
{seleniumbase-4.49.13 → seleniumbase-4.49.14}/seleniumbase/undetected/cdp_driver/cdp_util.py
RENAMED
|
File without changes
|
{seleniumbase-4.49.13 → seleniumbase-4.49.14}/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.49.13 → seleniumbase-4.49.14}/seleniumbase/utilities/selenium_grid/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{seleniumbase-4.49.13 → seleniumbase-4.49.14}/seleniumbase/utilities/selenium_grid/font_color
RENAMED
|
File without changes
|
|
File without changes
|
{seleniumbase-4.49.13 → seleniumbase-4.49.14}/seleniumbase/utilities/selenium_grid/grid-node
RENAMED
|
File without changes
|
{seleniumbase-4.49.13 → seleniumbase-4.49.14}/seleniumbase/utilities/selenium_grid/grid_hub.py
RENAMED
|
File without changes
|
{seleniumbase-4.49.13 → seleniumbase-4.49.14}/seleniumbase/utilities/selenium_grid/grid_node.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{seleniumbase-4.49.13 → seleniumbase-4.49.14}/seleniumbase/utilities/selenium_grid/start-grid-hub.sh
RENAMED
|
File without changes
|
{seleniumbase-4.49.13 → seleniumbase-4.49.14}/seleniumbase/utilities/selenium_ide/__init__.py
RENAMED
|
File without changes
|
{seleniumbase-4.49.13 → seleniumbase-4.49.14}/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
|