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.
Files changed (164) hide show
  1. {seleniumbase-4.49.13/seleniumbase.egg-info → seleniumbase-4.49.14}/PKG-INFO +1 -1
  2. seleniumbase-4.49.14/seleniumbase/__version__.py +2 -0
  3. {seleniumbase-4.49.13 → seleniumbase-4.49.14}/seleniumbase/console_scripts/sb_install.py +20 -0
  4. {seleniumbase-4.49.13 → seleniumbase-4.49.14}/seleniumbase/core/browser_launcher.py +11 -7
  5. {seleniumbase-4.49.13 → seleniumbase-4.49.14}/seleniumbase/core/sb_cdp.py +19 -10
  6. {seleniumbase-4.49.13 → seleniumbase-4.49.14}/seleniumbase/fixtures/base_case.py +8 -0
  7. {seleniumbase-4.49.13 → seleniumbase-4.49.14}/seleniumbase/undetected/cdp_driver/config.py +4 -3
  8. {seleniumbase-4.49.13 → seleniumbase-4.49.14/seleniumbase.egg-info}/PKG-INFO +1 -1
  9. seleniumbase-4.49.13/seleniumbase/__version__.py +0 -2
  10. {seleniumbase-4.49.13 → seleniumbase-4.49.14}/.gitignore +0 -0
  11. {seleniumbase-4.49.13 → seleniumbase-4.49.14}/LICENSE +0 -0
  12. {seleniumbase-4.49.13 → seleniumbase-4.49.14}/MANIFEST.in +0 -0
  13. {seleniumbase-4.49.13 → seleniumbase-4.49.14}/README.md +0 -0
  14. {seleniumbase-4.49.13 → seleniumbase-4.49.14}/install.sh +0 -0
  15. {seleniumbase-4.49.13 → seleniumbase-4.49.14}/pyproject.toml +0 -0
  16. {seleniumbase-4.49.13 → seleniumbase-4.49.14}/pytest.ini +0 -0
  17. {seleniumbase-4.49.13 → seleniumbase-4.49.14}/requirements.txt +0 -0
  18. {seleniumbase-4.49.13 → seleniumbase-4.49.14}/sbase/__init__.py +0 -0
  19. {seleniumbase-4.49.13 → seleniumbase-4.49.14}/sbase/__main__.py +0 -0
  20. {seleniumbase-4.49.13 → seleniumbase-4.49.14}/sbase/steps.py +0 -0
  21. {seleniumbase-4.49.13 → seleniumbase-4.49.14}/seleniumbase/__init__.py +0 -0
  22. {seleniumbase-4.49.13 → seleniumbase-4.49.14}/seleniumbase/__main__.py +0 -0
  23. {seleniumbase-4.49.13 → seleniumbase-4.49.14}/seleniumbase/behave/__init__.py +0 -0
  24. {seleniumbase-4.49.13 → seleniumbase-4.49.14}/seleniumbase/behave/behave_helper.py +0 -0
  25. {seleniumbase-4.49.13 → seleniumbase-4.49.14}/seleniumbase/behave/behave_sb.py +0 -0
  26. {seleniumbase-4.49.13 → seleniumbase-4.49.14}/seleniumbase/behave/steps.py +0 -0
  27. {seleniumbase-4.49.13 → seleniumbase-4.49.14}/seleniumbase/common/__init__.py +0 -0
  28. {seleniumbase-4.49.13 → seleniumbase-4.49.14}/seleniumbase/common/decorators.py +0 -0
  29. {seleniumbase-4.49.13 → seleniumbase-4.49.14}/seleniumbase/common/encryption.py +0 -0
  30. {seleniumbase-4.49.13 → seleniumbase-4.49.14}/seleniumbase/common/exceptions.py +0 -0
  31. {seleniumbase-4.49.13 → seleniumbase-4.49.14}/seleniumbase/common/obfuscate.py +0 -0
  32. {seleniumbase-4.49.13 → seleniumbase-4.49.14}/seleniumbase/common/unobfuscate.py +0 -0
  33. {seleniumbase-4.49.13 → seleniumbase-4.49.14}/seleniumbase/config/__init__.py +0 -0
  34. {seleniumbase-4.49.13 → seleniumbase-4.49.14}/seleniumbase/config/ad_block_list.py +0 -0
  35. {seleniumbase-4.49.13 → seleniumbase-4.49.14}/seleniumbase/config/proxy_list.py +0 -0
  36. {seleniumbase-4.49.13 → seleniumbase-4.49.14}/seleniumbase/config/settings.py +0 -0
  37. {seleniumbase-4.49.13 → seleniumbase-4.49.14}/seleniumbase/console_scripts/__init__.py +0 -0
  38. {seleniumbase-4.49.13 → seleniumbase-4.49.14}/seleniumbase/console_scripts/logo_helper.py +0 -0
  39. {seleniumbase-4.49.13 → seleniumbase-4.49.14}/seleniumbase/console_scripts/rich_helper.py +0 -0
  40. {seleniumbase-4.49.13 → seleniumbase-4.49.14}/seleniumbase/console_scripts/run.py +0 -0
  41. {seleniumbase-4.49.13 → seleniumbase-4.49.14}/seleniumbase/console_scripts/sb_behave_gui.py +0 -0
  42. {seleniumbase-4.49.13 → seleniumbase-4.49.14}/seleniumbase/console_scripts/sb_caseplans.py +0 -0
  43. {seleniumbase-4.49.13 → seleniumbase-4.49.14}/seleniumbase/console_scripts/sb_commander.py +0 -0
  44. {seleniumbase-4.49.13 → seleniumbase-4.49.14}/seleniumbase/console_scripts/sb_mkchart.py +0 -0
  45. {seleniumbase-4.49.13 → seleniumbase-4.49.14}/seleniumbase/console_scripts/sb_mkdir.py +0 -0
  46. {seleniumbase-4.49.13 → seleniumbase-4.49.14}/seleniumbase/console_scripts/sb_mkfile.py +0 -0
  47. {seleniumbase-4.49.13 → seleniumbase-4.49.14}/seleniumbase/console_scripts/sb_mkpres.py +0 -0
  48. {seleniumbase-4.49.13 → seleniumbase-4.49.14}/seleniumbase/console_scripts/sb_mkrec.py +0 -0
  49. {seleniumbase-4.49.13 → seleniumbase-4.49.14}/seleniumbase/console_scripts/sb_objectify.py +0 -0
  50. {seleniumbase-4.49.13 → seleniumbase-4.49.14}/seleniumbase/console_scripts/sb_print.py +0 -0
  51. {seleniumbase-4.49.13 → seleniumbase-4.49.14}/seleniumbase/console_scripts/sb_recorder.py +0 -0
  52. {seleniumbase-4.49.13 → seleniumbase-4.49.14}/seleniumbase/core/__init__.py +0 -0
  53. {seleniumbase-4.49.13 → seleniumbase-4.49.14}/seleniumbase/core/application_manager.py +0 -0
  54. {seleniumbase-4.49.13 → seleniumbase-4.49.14}/seleniumbase/core/capabilities_parser.py +0 -0
  55. {seleniumbase-4.49.13 → seleniumbase-4.49.14}/seleniumbase/core/colored_traceback.py +0 -0
  56. {seleniumbase-4.49.13 → seleniumbase-4.49.14}/seleniumbase/core/create_db_tables.sql +0 -0
  57. {seleniumbase-4.49.13 → seleniumbase-4.49.14}/seleniumbase/core/detect_b_ver.py +0 -0
  58. {seleniumbase-4.49.13 → seleniumbase-4.49.14}/seleniumbase/core/download_helper.py +0 -0
  59. {seleniumbase-4.49.13 → seleniumbase-4.49.14}/seleniumbase/core/encoded_images.py +0 -0
  60. {seleniumbase-4.49.13 → seleniumbase-4.49.14}/seleniumbase/core/jqc_helper.py +0 -0
  61. {seleniumbase-4.49.13 → seleniumbase-4.49.14}/seleniumbase/core/log_helper.py +0 -0
  62. {seleniumbase-4.49.13 → seleniumbase-4.49.14}/seleniumbase/core/mysql.py +0 -0
  63. {seleniumbase-4.49.13 → seleniumbase-4.49.14}/seleniumbase/core/nest_asyncio.py +0 -0
  64. {seleniumbase-4.49.13 → seleniumbase-4.49.14}/seleniumbase/core/proxy_helper.py +0 -0
  65. {seleniumbase-4.49.13 → seleniumbase-4.49.14}/seleniumbase/core/recorder_helper.py +0 -0
  66. {seleniumbase-4.49.13 → seleniumbase-4.49.14}/seleniumbase/core/report_helper.py +0 -0
  67. {seleniumbase-4.49.13 → seleniumbase-4.49.14}/seleniumbase/core/s3_manager.py +0 -0
  68. {seleniumbase-4.49.13 → seleniumbase-4.49.14}/seleniumbase/core/sb_driver.py +0 -0
  69. {seleniumbase-4.49.13 → seleniumbase-4.49.14}/seleniumbase/core/session_helper.py +0 -0
  70. {seleniumbase-4.49.13 → seleniumbase-4.49.14}/seleniumbase/core/settings_parser.py +0 -0
  71. {seleniumbase-4.49.13 → seleniumbase-4.49.14}/seleniumbase/core/style_sheet.py +0 -0
  72. {seleniumbase-4.49.13 → seleniumbase-4.49.14}/seleniumbase/core/testcase_manager.py +0 -0
  73. {seleniumbase-4.49.13 → seleniumbase-4.49.14}/seleniumbase/core/tour_helper.py +0 -0
  74. {seleniumbase-4.49.13 → seleniumbase-4.49.14}/seleniumbase/core/visual_helper.py +0 -0
  75. {seleniumbase-4.49.13 → seleniumbase-4.49.14}/seleniumbase/drivers/__init__.py +0 -0
  76. {seleniumbase-4.49.13 → seleniumbase-4.49.14}/seleniumbase/drivers/atlas_drivers/__init__.py +0 -0
  77. {seleniumbase-4.49.13 → seleniumbase-4.49.14}/seleniumbase/drivers/brave_drivers/__init__.py +0 -0
  78. {seleniumbase-4.49.13 → seleniumbase-4.49.14}/seleniumbase/drivers/cft_drivers/__init__.py +0 -0
  79. {seleniumbase-4.49.13 → seleniumbase-4.49.14}/seleniumbase/drivers/chromium_drivers/__init__.py +0 -0
  80. {seleniumbase-4.49.13 → seleniumbase-4.49.14}/seleniumbase/drivers/chs_drivers/__init__.py +0 -0
  81. {seleniumbase-4.49.13 → seleniumbase-4.49.14}/seleniumbase/drivers/comet_drivers/__init__.py +0 -0
  82. {seleniumbase-4.49.13 → seleniumbase-4.49.14}/seleniumbase/drivers/opera_drivers/__init__.py +0 -0
  83. {seleniumbase-4.49.13 → seleniumbase-4.49.14}/seleniumbase/extensions/__init__.py +0 -0
  84. {seleniumbase-4.49.13 → seleniumbase-4.49.14}/seleniumbase/extensions/ad_block.zip +0 -0
  85. {seleniumbase-4.49.13 → seleniumbase-4.49.14}/seleniumbase/extensions/disable_csp.zip +0 -0
  86. {seleniumbase-4.49.13 → seleniumbase-4.49.14}/seleniumbase/extensions/recorder.zip +0 -0
  87. {seleniumbase-4.49.13 → seleniumbase-4.49.14}/seleniumbase/extensions/sbase_ext.zip +0 -0
  88. {seleniumbase-4.49.13 → seleniumbase-4.49.14}/seleniumbase/fixtures/__init__.py +0 -0
  89. {seleniumbase-4.49.13 → seleniumbase-4.49.14}/seleniumbase/fixtures/constants.py +0 -0
  90. {seleniumbase-4.49.13 → seleniumbase-4.49.14}/seleniumbase/fixtures/css_to_xpath.py +0 -0
  91. {seleniumbase-4.49.13 → seleniumbase-4.49.14}/seleniumbase/fixtures/errors.py +0 -0
  92. {seleniumbase-4.49.13 → seleniumbase-4.49.14}/seleniumbase/fixtures/js_utils.py +0 -0
  93. {seleniumbase-4.49.13 → seleniumbase-4.49.14}/seleniumbase/fixtures/page_actions.py +0 -0
  94. {seleniumbase-4.49.13 → seleniumbase-4.49.14}/seleniumbase/fixtures/page_utils.py +0 -0
  95. {seleniumbase-4.49.13 → seleniumbase-4.49.14}/seleniumbase/fixtures/shared_utils.py +0 -0
  96. {seleniumbase-4.49.13 → seleniumbase-4.49.14}/seleniumbase/fixtures/unittest_helper.py +0 -0
  97. {seleniumbase-4.49.13 → seleniumbase-4.49.14}/seleniumbase/fixtures/words.py +0 -0
  98. {seleniumbase-4.49.13 → seleniumbase-4.49.14}/seleniumbase/fixtures/xpath_to_css.py +0 -0
  99. {seleniumbase-4.49.13 → seleniumbase-4.49.14}/seleniumbase/js_code/__init__.py +0 -0
  100. {seleniumbase-4.49.13 → seleniumbase-4.49.14}/seleniumbase/js_code/active_css_js.py +0 -0
  101. {seleniumbase-4.49.13 → seleniumbase-4.49.14}/seleniumbase/js_code/live_js.py +0 -0
  102. {seleniumbase-4.49.13 → seleniumbase-4.49.14}/seleniumbase/js_code/recorder_js.py +0 -0
  103. {seleniumbase-4.49.13 → seleniumbase-4.49.14}/seleniumbase/masterqa/__init__.py +0 -0
  104. {seleniumbase-4.49.13 → seleniumbase-4.49.14}/seleniumbase/masterqa/master_qa.py +0 -0
  105. {seleniumbase-4.49.13 → seleniumbase-4.49.14}/seleniumbase/plugins/__init__.py +0 -0
  106. {seleniumbase-4.49.13 → seleniumbase-4.49.14}/seleniumbase/plugins/base_plugin.py +0 -0
  107. {seleniumbase-4.49.13 → seleniumbase-4.49.14}/seleniumbase/plugins/basic_test_info.py +0 -0
  108. {seleniumbase-4.49.13 → seleniumbase-4.49.14}/seleniumbase/plugins/db_reporting_plugin.py +0 -0
  109. {seleniumbase-4.49.13 → seleniumbase-4.49.14}/seleniumbase/plugins/driver_manager.py +0 -0
  110. {seleniumbase-4.49.13 → seleniumbase-4.49.14}/seleniumbase/plugins/page_source.py +0 -0
  111. {seleniumbase-4.49.13 → seleniumbase-4.49.14}/seleniumbase/plugins/pytest_plugin.py +0 -0
  112. {seleniumbase-4.49.13 → seleniumbase-4.49.14}/seleniumbase/plugins/s3_logging_plugin.py +0 -0
  113. {seleniumbase-4.49.13 → seleniumbase-4.49.14}/seleniumbase/plugins/sb_manager.py +0 -0
  114. {seleniumbase-4.49.13 → seleniumbase-4.49.14}/seleniumbase/plugins/screen_shots.py +0 -0
  115. {seleniumbase-4.49.13 → seleniumbase-4.49.14}/seleniumbase/plugins/selenium_plugin.py +0 -0
  116. {seleniumbase-4.49.13 → seleniumbase-4.49.14}/seleniumbase/resources/__init__.py +0 -0
  117. {seleniumbase-4.49.13 → seleniumbase-4.49.14}/seleniumbase/translate/__init__.py +0 -0
  118. {seleniumbase-4.49.13 → seleniumbase-4.49.14}/seleniumbase/translate/chinese.py +0 -0
  119. {seleniumbase-4.49.13 → seleniumbase-4.49.14}/seleniumbase/translate/dutch.py +0 -0
  120. {seleniumbase-4.49.13 → seleniumbase-4.49.14}/seleniumbase/translate/french.py +0 -0
  121. {seleniumbase-4.49.13 → seleniumbase-4.49.14}/seleniumbase/translate/italian.py +0 -0
  122. {seleniumbase-4.49.13 → seleniumbase-4.49.14}/seleniumbase/translate/japanese.py +0 -0
  123. {seleniumbase-4.49.13 → seleniumbase-4.49.14}/seleniumbase/translate/korean.py +0 -0
  124. {seleniumbase-4.49.13 → seleniumbase-4.49.14}/seleniumbase/translate/master_dict.py +0 -0
  125. {seleniumbase-4.49.13 → seleniumbase-4.49.14}/seleniumbase/translate/portuguese.py +0 -0
  126. {seleniumbase-4.49.13 → seleniumbase-4.49.14}/seleniumbase/translate/russian.py +0 -0
  127. {seleniumbase-4.49.13 → seleniumbase-4.49.14}/seleniumbase/translate/spanish.py +0 -0
  128. {seleniumbase-4.49.13 → seleniumbase-4.49.14}/seleniumbase/translate/translator.py +0 -0
  129. {seleniumbase-4.49.13 → seleniumbase-4.49.14}/seleniumbase/undetected/__init__.py +0 -0
  130. {seleniumbase-4.49.13 → seleniumbase-4.49.14}/seleniumbase/undetected/cdp.py +0 -0
  131. {seleniumbase-4.49.13 → seleniumbase-4.49.14}/seleniumbase/undetected/cdp_driver/__init__.py +0 -0
  132. {seleniumbase-4.49.13 → seleniumbase-4.49.14}/seleniumbase/undetected/cdp_driver/_contradict.py +0 -0
  133. {seleniumbase-4.49.13 → seleniumbase-4.49.14}/seleniumbase/undetected/cdp_driver/browser.py +0 -0
  134. {seleniumbase-4.49.13 → seleniumbase-4.49.14}/seleniumbase/undetected/cdp_driver/cdp_util.py +0 -0
  135. {seleniumbase-4.49.13 → seleniumbase-4.49.14}/seleniumbase/undetected/cdp_driver/connection.py +0 -0
  136. {seleniumbase-4.49.13 → seleniumbase-4.49.14}/seleniumbase/undetected/cdp_driver/element.py +0 -0
  137. {seleniumbase-4.49.13 → seleniumbase-4.49.14}/seleniumbase/undetected/cdp_driver/tab.py +0 -0
  138. {seleniumbase-4.49.13 → seleniumbase-4.49.14}/seleniumbase/undetected/dprocess.py +0 -0
  139. {seleniumbase-4.49.13 → seleniumbase-4.49.14}/seleniumbase/undetected/options.py +0 -0
  140. {seleniumbase-4.49.13 → seleniumbase-4.49.14}/seleniumbase/undetected/patcher.py +0 -0
  141. {seleniumbase-4.49.13 → seleniumbase-4.49.14}/seleniumbase/undetected/reactor.py +0 -0
  142. {seleniumbase-4.49.13 → seleniumbase-4.49.14}/seleniumbase/undetected/webelement.py +0 -0
  143. {seleniumbase-4.49.13 → seleniumbase-4.49.14}/seleniumbase/utilities/__init__.py +0 -0
  144. {seleniumbase-4.49.13 → seleniumbase-4.49.14}/seleniumbase/utilities/selenium_grid/__init__.py +0 -0
  145. {seleniumbase-4.49.13 → seleniumbase-4.49.14}/seleniumbase/utilities/selenium_grid/download_selenium_server.py +0 -0
  146. {seleniumbase-4.49.13 → seleniumbase-4.49.14}/seleniumbase/utilities/selenium_grid/font_color +0 -0
  147. {seleniumbase-4.49.13 → seleniumbase-4.49.14}/seleniumbase/utilities/selenium_grid/grid-hub +0 -0
  148. {seleniumbase-4.49.13 → seleniumbase-4.49.14}/seleniumbase/utilities/selenium_grid/grid-node +0 -0
  149. {seleniumbase-4.49.13 → seleniumbase-4.49.14}/seleniumbase/utilities/selenium_grid/grid_hub.py +0 -0
  150. {seleniumbase-4.49.13 → seleniumbase-4.49.14}/seleniumbase/utilities/selenium_grid/grid_node.py +0 -0
  151. {seleniumbase-4.49.13 → seleniumbase-4.49.14}/seleniumbase/utilities/selenium_grid/register-grid-node.bat +0 -0
  152. {seleniumbase-4.49.13 → seleniumbase-4.49.14}/seleniumbase/utilities/selenium_grid/register-grid-node.sh +0 -0
  153. {seleniumbase-4.49.13 → seleniumbase-4.49.14}/seleniumbase/utilities/selenium_grid/start-grid-hub.bat +0 -0
  154. {seleniumbase-4.49.13 → seleniumbase-4.49.14}/seleniumbase/utilities/selenium_grid/start-grid-hub.sh +0 -0
  155. {seleniumbase-4.49.13 → seleniumbase-4.49.14}/seleniumbase/utilities/selenium_ide/__init__.py +0 -0
  156. {seleniumbase-4.49.13 → seleniumbase-4.49.14}/seleniumbase/utilities/selenium_ide/convert_ide.py +0 -0
  157. {seleniumbase-4.49.13 → seleniumbase-4.49.14}/seleniumbase.egg-info/SOURCES.txt +0 -0
  158. {seleniumbase-4.49.13 → seleniumbase-4.49.14}/seleniumbase.egg-info/dependency_links.txt +0 -0
  159. {seleniumbase-4.49.13 → seleniumbase-4.49.14}/seleniumbase.egg-info/entry_points.txt +0 -0
  160. {seleniumbase-4.49.13 → seleniumbase-4.49.14}/seleniumbase.egg-info/requires.txt +0 -0
  161. {seleniumbase-4.49.13 → seleniumbase-4.49.14}/seleniumbase.egg-info/top_level.txt +0 -0
  162. {seleniumbase-4.49.13 → seleniumbase-4.49.14}/setup.cfg +0 -0
  163. {seleniumbase-4.49.13 → seleniumbase-4.49.14}/setup.py +0 -0
  164. {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.13
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
@@ -0,0 +1,2 @@
1
+ # seleniumbase package
2
+ __version__ = "4.49.14"
@@ -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.gui_hover_x_y = CDPM.gui_hover_x_y
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
- if proxy_string:
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
- """Add CDP methods to extend the driver"""
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.25, uc_lock=False):
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.25):
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.25):
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.25, center=False
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.25, uc_lock=False):
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 __gui_hover_x_y(self, x, y, timeframe=0.25, uc_lock=False):
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.25):
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.25):
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.25):
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
- "WebAuthentication,PasskeyAuth"
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.13
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
@@ -1,2 +0,0 @@
1
- # seleniumbase package
2
- __version__ = "4.49.13"
File without changes
File without changes
File without changes
File without changes