seleniumbase 4.37.10__tar.gz → 4.37.11__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 (156) hide show
  1. {seleniumbase-4.37.10/seleniumbase.egg-info → seleniumbase-4.37.11}/PKG-INFO +2 -2
  2. {seleniumbase-4.37.10 → seleniumbase-4.37.11}/requirements.txt +1 -1
  3. seleniumbase-4.37.11/seleniumbase/__version__.py +2 -0
  4. {seleniumbase-4.37.10 → seleniumbase-4.37.11}/seleniumbase/core/browser_launcher.py +10 -0
  5. {seleniumbase-4.37.10 → seleniumbase-4.37.11}/seleniumbase/fixtures/base_case.py +12 -0
  6. {seleniumbase-4.37.10 → seleniumbase-4.37.11}/seleniumbase/plugins/sb_manager.py +16 -7
  7. {seleniumbase-4.37.10 → seleniumbase-4.37.11}/seleniumbase/undetected/__init__.py +1 -3
  8. {seleniumbase-4.37.10 → seleniumbase-4.37.11}/seleniumbase/undetected/cdp_driver/connection.py +3 -0
  9. {seleniumbase-4.37.10 → seleniumbase-4.37.11/seleniumbase.egg-info}/PKG-INFO +2 -2
  10. {seleniumbase-4.37.10 → seleniumbase-4.37.11}/seleniumbase.egg-info/requires.txt +1 -1
  11. {seleniumbase-4.37.10 → seleniumbase-4.37.11}/setup.py +1 -1
  12. seleniumbase-4.37.10/seleniumbase/__version__.py +0 -2
  13. {seleniumbase-4.37.10 → seleniumbase-4.37.11}/.gitignore +0 -0
  14. {seleniumbase-4.37.10 → seleniumbase-4.37.11}/LICENSE +0 -0
  15. {seleniumbase-4.37.10 → seleniumbase-4.37.11}/MANIFEST.in +0 -0
  16. {seleniumbase-4.37.10 → seleniumbase-4.37.11}/README.md +0 -0
  17. {seleniumbase-4.37.10 → seleniumbase-4.37.11}/install.sh +0 -0
  18. {seleniumbase-4.37.10 → seleniumbase-4.37.11}/pyproject.toml +0 -0
  19. {seleniumbase-4.37.10 → seleniumbase-4.37.11}/pytest.ini +0 -0
  20. {seleniumbase-4.37.10 → seleniumbase-4.37.11}/sbase/__init__.py +0 -0
  21. {seleniumbase-4.37.10 → seleniumbase-4.37.11}/sbase/__main__.py +0 -0
  22. {seleniumbase-4.37.10 → seleniumbase-4.37.11}/sbase/steps.py +0 -0
  23. {seleniumbase-4.37.10 → seleniumbase-4.37.11}/seleniumbase/__init__.py +0 -0
  24. {seleniumbase-4.37.10 → seleniumbase-4.37.11}/seleniumbase/__main__.py +0 -0
  25. {seleniumbase-4.37.10 → seleniumbase-4.37.11}/seleniumbase/behave/__init__.py +0 -0
  26. {seleniumbase-4.37.10 → seleniumbase-4.37.11}/seleniumbase/behave/behave_helper.py +0 -0
  27. {seleniumbase-4.37.10 → seleniumbase-4.37.11}/seleniumbase/behave/behave_sb.py +0 -0
  28. {seleniumbase-4.37.10 → seleniumbase-4.37.11}/seleniumbase/behave/steps.py +0 -0
  29. {seleniumbase-4.37.10 → seleniumbase-4.37.11}/seleniumbase/common/__init__.py +0 -0
  30. {seleniumbase-4.37.10 → seleniumbase-4.37.11}/seleniumbase/common/decorators.py +0 -0
  31. {seleniumbase-4.37.10 → seleniumbase-4.37.11}/seleniumbase/common/encryption.py +0 -0
  32. {seleniumbase-4.37.10 → seleniumbase-4.37.11}/seleniumbase/common/exceptions.py +0 -0
  33. {seleniumbase-4.37.10 → seleniumbase-4.37.11}/seleniumbase/common/obfuscate.py +0 -0
  34. {seleniumbase-4.37.10 → seleniumbase-4.37.11}/seleniumbase/common/unobfuscate.py +0 -0
  35. {seleniumbase-4.37.10 → seleniumbase-4.37.11}/seleniumbase/config/__init__.py +0 -0
  36. {seleniumbase-4.37.10 → seleniumbase-4.37.11}/seleniumbase/config/ad_block_list.py +0 -0
  37. {seleniumbase-4.37.10 → seleniumbase-4.37.11}/seleniumbase/config/proxy_list.py +0 -0
  38. {seleniumbase-4.37.10 → seleniumbase-4.37.11}/seleniumbase/config/settings.py +0 -0
  39. {seleniumbase-4.37.10 → seleniumbase-4.37.11}/seleniumbase/console_scripts/__init__.py +0 -0
  40. {seleniumbase-4.37.10 → seleniumbase-4.37.11}/seleniumbase/console_scripts/logo_helper.py +0 -0
  41. {seleniumbase-4.37.10 → seleniumbase-4.37.11}/seleniumbase/console_scripts/rich_helper.py +0 -0
  42. {seleniumbase-4.37.10 → seleniumbase-4.37.11}/seleniumbase/console_scripts/run.py +0 -0
  43. {seleniumbase-4.37.10 → seleniumbase-4.37.11}/seleniumbase/console_scripts/sb_behave_gui.py +0 -0
  44. {seleniumbase-4.37.10 → seleniumbase-4.37.11}/seleniumbase/console_scripts/sb_caseplans.py +0 -0
  45. {seleniumbase-4.37.10 → seleniumbase-4.37.11}/seleniumbase/console_scripts/sb_commander.py +0 -0
  46. {seleniumbase-4.37.10 → seleniumbase-4.37.11}/seleniumbase/console_scripts/sb_install.py +0 -0
  47. {seleniumbase-4.37.10 → seleniumbase-4.37.11}/seleniumbase/console_scripts/sb_mkchart.py +0 -0
  48. {seleniumbase-4.37.10 → seleniumbase-4.37.11}/seleniumbase/console_scripts/sb_mkdir.py +0 -0
  49. {seleniumbase-4.37.10 → seleniumbase-4.37.11}/seleniumbase/console_scripts/sb_mkfile.py +0 -0
  50. {seleniumbase-4.37.10 → seleniumbase-4.37.11}/seleniumbase/console_scripts/sb_mkpres.py +0 -0
  51. {seleniumbase-4.37.10 → seleniumbase-4.37.11}/seleniumbase/console_scripts/sb_mkrec.py +0 -0
  52. {seleniumbase-4.37.10 → seleniumbase-4.37.11}/seleniumbase/console_scripts/sb_objectify.py +0 -0
  53. {seleniumbase-4.37.10 → seleniumbase-4.37.11}/seleniumbase/console_scripts/sb_print.py +0 -0
  54. {seleniumbase-4.37.10 → seleniumbase-4.37.11}/seleniumbase/console_scripts/sb_recorder.py +0 -0
  55. {seleniumbase-4.37.10 → seleniumbase-4.37.11}/seleniumbase/core/__init__.py +0 -0
  56. {seleniumbase-4.37.10 → seleniumbase-4.37.11}/seleniumbase/core/application_manager.py +0 -0
  57. {seleniumbase-4.37.10 → seleniumbase-4.37.11}/seleniumbase/core/capabilities_parser.py +0 -0
  58. {seleniumbase-4.37.10 → seleniumbase-4.37.11}/seleniumbase/core/colored_traceback.py +0 -0
  59. {seleniumbase-4.37.10 → seleniumbase-4.37.11}/seleniumbase/core/create_db_tables.sql +0 -0
  60. {seleniumbase-4.37.10 → seleniumbase-4.37.11}/seleniumbase/core/detect_b_ver.py +0 -0
  61. {seleniumbase-4.37.10 → seleniumbase-4.37.11}/seleniumbase/core/download_helper.py +0 -0
  62. {seleniumbase-4.37.10 → seleniumbase-4.37.11}/seleniumbase/core/encoded_images.py +0 -0
  63. {seleniumbase-4.37.10 → seleniumbase-4.37.11}/seleniumbase/core/jqc_helper.py +0 -0
  64. {seleniumbase-4.37.10 → seleniumbase-4.37.11}/seleniumbase/core/log_helper.py +0 -0
  65. {seleniumbase-4.37.10 → seleniumbase-4.37.11}/seleniumbase/core/mysql.py +0 -0
  66. {seleniumbase-4.37.10 → seleniumbase-4.37.11}/seleniumbase/core/proxy_helper.py +0 -0
  67. {seleniumbase-4.37.10 → seleniumbase-4.37.11}/seleniumbase/core/recorder_helper.py +0 -0
  68. {seleniumbase-4.37.10 → seleniumbase-4.37.11}/seleniumbase/core/report_helper.py +0 -0
  69. {seleniumbase-4.37.10 → seleniumbase-4.37.11}/seleniumbase/core/s3_manager.py +0 -0
  70. {seleniumbase-4.37.10 → seleniumbase-4.37.11}/seleniumbase/core/sb_cdp.py +0 -0
  71. {seleniumbase-4.37.10 → seleniumbase-4.37.11}/seleniumbase/core/sb_driver.py +0 -0
  72. {seleniumbase-4.37.10 → seleniumbase-4.37.11}/seleniumbase/core/session_helper.py +0 -0
  73. {seleniumbase-4.37.10 → seleniumbase-4.37.11}/seleniumbase/core/settings_parser.py +0 -0
  74. {seleniumbase-4.37.10 → seleniumbase-4.37.11}/seleniumbase/core/style_sheet.py +0 -0
  75. {seleniumbase-4.37.10 → seleniumbase-4.37.11}/seleniumbase/core/testcase_manager.py +0 -0
  76. {seleniumbase-4.37.10 → seleniumbase-4.37.11}/seleniumbase/core/tour_helper.py +0 -0
  77. {seleniumbase-4.37.10 → seleniumbase-4.37.11}/seleniumbase/core/visual_helper.py +0 -0
  78. {seleniumbase-4.37.10 → seleniumbase-4.37.11}/seleniumbase/drivers/__init__.py +0 -0
  79. {seleniumbase-4.37.10 → seleniumbase-4.37.11}/seleniumbase/extensions/__init__.py +0 -0
  80. {seleniumbase-4.37.10 → seleniumbase-4.37.11}/seleniumbase/extensions/ad_block.zip +0 -0
  81. {seleniumbase-4.37.10 → seleniumbase-4.37.11}/seleniumbase/extensions/disable_csp.zip +0 -0
  82. {seleniumbase-4.37.10 → seleniumbase-4.37.11}/seleniumbase/extensions/recorder.zip +0 -0
  83. {seleniumbase-4.37.10 → seleniumbase-4.37.11}/seleniumbase/extensions/sbase_ext.zip +0 -0
  84. {seleniumbase-4.37.10 → seleniumbase-4.37.11}/seleniumbase/fixtures/__init__.py +0 -0
  85. {seleniumbase-4.37.10 → seleniumbase-4.37.11}/seleniumbase/fixtures/constants.py +0 -0
  86. {seleniumbase-4.37.10 → seleniumbase-4.37.11}/seleniumbase/fixtures/css_to_xpath.py +0 -0
  87. {seleniumbase-4.37.10 → seleniumbase-4.37.11}/seleniumbase/fixtures/errors.py +0 -0
  88. {seleniumbase-4.37.10 → seleniumbase-4.37.11}/seleniumbase/fixtures/js_utils.py +0 -0
  89. {seleniumbase-4.37.10 → seleniumbase-4.37.11}/seleniumbase/fixtures/page_actions.py +0 -0
  90. {seleniumbase-4.37.10 → seleniumbase-4.37.11}/seleniumbase/fixtures/page_utils.py +0 -0
  91. {seleniumbase-4.37.10 → seleniumbase-4.37.11}/seleniumbase/fixtures/shared_utils.py +0 -0
  92. {seleniumbase-4.37.10 → seleniumbase-4.37.11}/seleniumbase/fixtures/unittest_helper.py +0 -0
  93. {seleniumbase-4.37.10 → seleniumbase-4.37.11}/seleniumbase/fixtures/words.py +0 -0
  94. {seleniumbase-4.37.10 → seleniumbase-4.37.11}/seleniumbase/fixtures/xpath_to_css.py +0 -0
  95. {seleniumbase-4.37.10 → seleniumbase-4.37.11}/seleniumbase/js_code/__init__.py +0 -0
  96. {seleniumbase-4.37.10 → seleniumbase-4.37.11}/seleniumbase/js_code/active_css_js.py +0 -0
  97. {seleniumbase-4.37.10 → seleniumbase-4.37.11}/seleniumbase/js_code/live_js.py +0 -0
  98. {seleniumbase-4.37.10 → seleniumbase-4.37.11}/seleniumbase/js_code/recorder_js.py +0 -0
  99. {seleniumbase-4.37.10 → seleniumbase-4.37.11}/seleniumbase/masterqa/__init__.py +0 -0
  100. {seleniumbase-4.37.10 → seleniumbase-4.37.11}/seleniumbase/masterqa/master_qa.py +0 -0
  101. {seleniumbase-4.37.10 → seleniumbase-4.37.11}/seleniumbase/plugins/__init__.py +0 -0
  102. {seleniumbase-4.37.10 → seleniumbase-4.37.11}/seleniumbase/plugins/base_plugin.py +0 -0
  103. {seleniumbase-4.37.10 → seleniumbase-4.37.11}/seleniumbase/plugins/basic_test_info.py +0 -0
  104. {seleniumbase-4.37.10 → seleniumbase-4.37.11}/seleniumbase/plugins/db_reporting_plugin.py +0 -0
  105. {seleniumbase-4.37.10 → seleniumbase-4.37.11}/seleniumbase/plugins/driver_manager.py +0 -0
  106. {seleniumbase-4.37.10 → seleniumbase-4.37.11}/seleniumbase/plugins/page_source.py +0 -0
  107. {seleniumbase-4.37.10 → seleniumbase-4.37.11}/seleniumbase/plugins/pytest_plugin.py +0 -0
  108. {seleniumbase-4.37.10 → seleniumbase-4.37.11}/seleniumbase/plugins/s3_logging_plugin.py +0 -0
  109. {seleniumbase-4.37.10 → seleniumbase-4.37.11}/seleniumbase/plugins/screen_shots.py +0 -0
  110. {seleniumbase-4.37.10 → seleniumbase-4.37.11}/seleniumbase/plugins/selenium_plugin.py +0 -0
  111. {seleniumbase-4.37.10 → seleniumbase-4.37.11}/seleniumbase/resources/__init__.py +0 -0
  112. {seleniumbase-4.37.10 → seleniumbase-4.37.11}/seleniumbase/translate/__init__.py +0 -0
  113. {seleniumbase-4.37.10 → seleniumbase-4.37.11}/seleniumbase/translate/chinese.py +0 -0
  114. {seleniumbase-4.37.10 → seleniumbase-4.37.11}/seleniumbase/translate/dutch.py +0 -0
  115. {seleniumbase-4.37.10 → seleniumbase-4.37.11}/seleniumbase/translate/french.py +0 -0
  116. {seleniumbase-4.37.10 → seleniumbase-4.37.11}/seleniumbase/translate/italian.py +0 -0
  117. {seleniumbase-4.37.10 → seleniumbase-4.37.11}/seleniumbase/translate/japanese.py +0 -0
  118. {seleniumbase-4.37.10 → seleniumbase-4.37.11}/seleniumbase/translate/korean.py +0 -0
  119. {seleniumbase-4.37.10 → seleniumbase-4.37.11}/seleniumbase/translate/master_dict.py +0 -0
  120. {seleniumbase-4.37.10 → seleniumbase-4.37.11}/seleniumbase/translate/portuguese.py +0 -0
  121. {seleniumbase-4.37.10 → seleniumbase-4.37.11}/seleniumbase/translate/russian.py +0 -0
  122. {seleniumbase-4.37.10 → seleniumbase-4.37.11}/seleniumbase/translate/spanish.py +0 -0
  123. {seleniumbase-4.37.10 → seleniumbase-4.37.11}/seleniumbase/translate/translator.py +0 -0
  124. {seleniumbase-4.37.10 → seleniumbase-4.37.11}/seleniumbase/undetected/cdp.py +0 -0
  125. {seleniumbase-4.37.10 → seleniumbase-4.37.11}/seleniumbase/undetected/cdp_driver/__init__.py +0 -0
  126. {seleniumbase-4.37.10 → seleniumbase-4.37.11}/seleniumbase/undetected/cdp_driver/_contradict.py +0 -0
  127. {seleniumbase-4.37.10 → seleniumbase-4.37.11}/seleniumbase/undetected/cdp_driver/browser.py +0 -0
  128. {seleniumbase-4.37.10 → seleniumbase-4.37.11}/seleniumbase/undetected/cdp_driver/cdp_util.py +0 -0
  129. {seleniumbase-4.37.10 → seleniumbase-4.37.11}/seleniumbase/undetected/cdp_driver/config.py +0 -0
  130. {seleniumbase-4.37.10 → seleniumbase-4.37.11}/seleniumbase/undetected/cdp_driver/element.py +0 -0
  131. {seleniumbase-4.37.10 → seleniumbase-4.37.11}/seleniumbase/undetected/cdp_driver/tab.py +0 -0
  132. {seleniumbase-4.37.10 → seleniumbase-4.37.11}/seleniumbase/undetected/dprocess.py +0 -0
  133. {seleniumbase-4.37.10 → seleniumbase-4.37.11}/seleniumbase/undetected/options.py +0 -0
  134. {seleniumbase-4.37.10 → seleniumbase-4.37.11}/seleniumbase/undetected/patcher.py +0 -0
  135. {seleniumbase-4.37.10 → seleniumbase-4.37.11}/seleniumbase/undetected/reactor.py +0 -0
  136. {seleniumbase-4.37.10 → seleniumbase-4.37.11}/seleniumbase/undetected/webelement.py +0 -0
  137. {seleniumbase-4.37.10 → seleniumbase-4.37.11}/seleniumbase/utilities/__init__.py +0 -0
  138. {seleniumbase-4.37.10 → seleniumbase-4.37.11}/seleniumbase/utilities/selenium_grid/__init__.py +0 -0
  139. {seleniumbase-4.37.10 → seleniumbase-4.37.11}/seleniumbase/utilities/selenium_grid/download_selenium_server.py +0 -0
  140. {seleniumbase-4.37.10 → seleniumbase-4.37.11}/seleniumbase/utilities/selenium_grid/font_color +0 -0
  141. {seleniumbase-4.37.10 → seleniumbase-4.37.11}/seleniumbase/utilities/selenium_grid/grid-hub +0 -0
  142. {seleniumbase-4.37.10 → seleniumbase-4.37.11}/seleniumbase/utilities/selenium_grid/grid-node +0 -0
  143. {seleniumbase-4.37.10 → seleniumbase-4.37.11}/seleniumbase/utilities/selenium_grid/grid_hub.py +0 -0
  144. {seleniumbase-4.37.10 → seleniumbase-4.37.11}/seleniumbase/utilities/selenium_grid/grid_node.py +0 -0
  145. {seleniumbase-4.37.10 → seleniumbase-4.37.11}/seleniumbase/utilities/selenium_grid/register-grid-node.bat +0 -0
  146. {seleniumbase-4.37.10 → seleniumbase-4.37.11}/seleniumbase/utilities/selenium_grid/register-grid-node.sh +0 -0
  147. {seleniumbase-4.37.10 → seleniumbase-4.37.11}/seleniumbase/utilities/selenium_grid/start-grid-hub.bat +0 -0
  148. {seleniumbase-4.37.10 → seleniumbase-4.37.11}/seleniumbase/utilities/selenium_grid/start-grid-hub.sh +0 -0
  149. {seleniumbase-4.37.10 → seleniumbase-4.37.11}/seleniumbase/utilities/selenium_ide/__init__.py +0 -0
  150. {seleniumbase-4.37.10 → seleniumbase-4.37.11}/seleniumbase/utilities/selenium_ide/convert_ide.py +0 -0
  151. {seleniumbase-4.37.10 → seleniumbase-4.37.11}/seleniumbase.egg-info/SOURCES.txt +0 -0
  152. {seleniumbase-4.37.10 → seleniumbase-4.37.11}/seleniumbase.egg-info/dependency_links.txt +0 -0
  153. {seleniumbase-4.37.10 → seleniumbase-4.37.11}/seleniumbase.egg-info/entry_points.txt +0 -0
  154. {seleniumbase-4.37.10 → seleniumbase-4.37.11}/seleniumbase.egg-info/top_level.txt +0 -0
  155. {seleniumbase-4.37.10 → seleniumbase-4.37.11}/setup.cfg +0 -0
  156. {seleniumbase-4.37.10 → seleniumbase-4.37.11}/virtualenv_install.sh +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: seleniumbase
3
- Version: 4.37.10
3
+ Version: 4.37.11
4
4
  Summary: A complete web automation framework for end-to-end testing.
5
5
  Home-page: https://github.com/seleniumbase/SeleniumBase
6
6
  Author: Michael Mintz
@@ -63,7 +63,7 @@ Requires-Dist: pip>=25.0.1; python_version < "3.9"
63
63
  Requires-Dist: pip>=25.1; python_version >= "3.9"
64
64
  Requires-Dist: packaging>=25.0
65
65
  Requires-Dist: setuptools~=70.2; python_version < "3.10"
66
- Requires-Dist: setuptools>=80.0.0; python_version >= "3.10"
66
+ Requires-Dist: setuptools>=80.1.0; python_version >= "3.10"
67
67
  Requires-Dist: wheel>=0.45.1
68
68
  Requires-Dist: attrs>=25.3.0
69
69
  Requires-Dist: certifi>=2025.4.26
@@ -2,7 +2,7 @@ pip>=25.0.1;python_version<"3.9"
2
2
  pip>=25.1;python_version>="3.9"
3
3
  packaging>=25.0
4
4
  setuptools~=70.2;python_version<"3.10"
5
- setuptools>=80.0.0;python_version>="3.10"
5
+ setuptools>=80.1.0;python_version>="3.10"
6
6
  wheel>=0.45.1
7
7
  attrs>=25.3.0
8
8
  certifi>=2025.4.26
@@ -0,0 +1,2 @@
1
+ # seleniumbase package
2
+ __version__ = "4.37.11"
@@ -519,6 +519,16 @@ def uc_open_with_cdp_mode(driver, url=None, **kwargs):
519
519
  import asyncio
520
520
  from seleniumbase.undetected.cdp_driver import cdp_util
521
521
 
522
+ if (
523
+ hasattr(driver, "_is_using_cdp")
524
+ and driver._is_using_cdp
525
+ and hasattr(driver, "cdp")
526
+ and driver.cdp
527
+ ):
528
+ # CDP Mode was already initialized
529
+ driver.disconnect()
530
+ driver.cdp.open(url, **kwargs)
531
+ return
522
532
  current_url = None
523
533
  try:
524
534
  current_url = driver.current_url
@@ -3534,12 +3534,24 @@ class BaseCase(unittest.TestCase):
3534
3534
 
3535
3535
  def set_window_size(self, width, height):
3536
3536
  self.__check_scope()
3537
+ if self.__is_cdp_swap_needed():
3538
+ position = self.cdp.get_window_position()
3539
+ x = position["x"]
3540
+ y = position["y"]
3541
+ self.cdp.set_window_rect(x, y, width, height)
3542
+ return
3537
3543
  self._check_browser()
3538
3544
  self.driver.set_window_size(width, height)
3539
3545
  self.__demo_mode_pause_if_active(tiny=True)
3540
3546
 
3541
3547
  def set_window_position(self, x, y):
3542
3548
  self.__check_scope()
3549
+ if self.__is_cdp_swap_needed():
3550
+ size = self.cdp.get_window_size()
3551
+ width = size["width"]
3552
+ height = size["height"]
3553
+ self.cdp.set_window_rect(x, y, width, height)
3554
+ return
3543
3555
  self._check_browser()
3544
3556
  self.driver.set_window_position(x, y)
3545
3557
  self.__demo_mode_pause_if_active(tiny=True)
@@ -1369,14 +1369,23 @@ def SB(
1369
1369
  "%s%s%s%s%s"
1370
1370
  % (c1, left_space, end_text, right_space, cr)
1371
1371
  )
1372
- if undetectable and hasattr(sb, "_drivers_browser_map"):
1372
+ python3_12_or_newer = (sys.version_info >= (3, 12))
1373
+ if undetectable:
1373
1374
  import asyncio
1374
- for driver in sb._drivers_browser_map.keys():
1375
- if hasattr(driver, "cdp") and driver.cdp:
1376
- asyncio.set_event_loop(driver.cdp.loop)
1377
- tasks = [tab.aclose() for tab in driver.cdp.get_tabs()]
1378
- tasks.append(driver.cdp.driver.connection.aclose())
1379
- driver.cdp.loop.run_until_complete(asyncio.gather(*tasks))
1375
+ if not python3_12_or_newer and hasattr(sb_config, "_cdp_aclose"):
1376
+ with suppress(Exception):
1377
+ loop = asyncio.get_event_loop()
1378
+ asyncio.set_event_loop(loop)
1379
+ loop.run_until_complete(sb_config._cdp_aclose())
1380
+ if python3_12_or_newer and hasattr(sb, "_drivers_browser_map"):
1381
+ for driver in sb._drivers_browser_map.keys():
1382
+ if hasattr(driver, "cdp") and driver.cdp:
1383
+ asyncio.set_event_loop(driver.cdp.loop)
1384
+ tasks = [tab.aclose() for tab in driver.cdp.get_tabs()]
1385
+ tasks.append(driver.cdp.driver.connection.aclose())
1386
+ driver.cdp.loop.run_until_complete(
1387
+ asyncio.gather(*tasks)
1388
+ )
1380
1389
  driver.cdp.loop.close()
1381
1390
  gc.collect()
1382
1391
  if test and test_name and not test_passed and raise_test_failure:
@@ -523,9 +523,7 @@ class Chrome(selenium.webdriver.chrome.webdriver.WebDriver):
523
523
  with suppress(Exception):
524
524
  for window_handle in self.window_handles:
525
525
  self.switch_to.window(window_handle)
526
- if self.current_url.startswith(
527
- "chrome-extension://"
528
- ):
526
+ if self.current_url.startswith("chrome-extension://"):
529
527
  # https://issues.chromium.org/issues/396611138
530
528
  # (Remove the Linux conditional when resolved)
531
529
  # (So that close() is always called)
@@ -19,6 +19,7 @@ from typing import (
19
19
  )
20
20
  import websockets
21
21
  from websockets.protocol import State
22
+ from seleniumbase import config as sb_config
22
23
  from . import cdp_util as util
23
24
  import mycdp as cdp
24
25
  import mycdp.network
@@ -270,6 +271,7 @@ class Connection(metaclass=CantTouchThis):
270
271
  max_size=MAX_SIZE,
271
272
  )
272
273
  self.listener = Listener(self)
274
+ sb_config._cdp_aclose = self.aclose
273
275
  except (Exception,) as e:
274
276
  logger.debug("Exception during opening of websocket: %s", e)
275
277
  if self.listener:
@@ -444,6 +446,7 @@ class Connection(metaclass=CantTouchThis):
444
446
  if not _is_update:
445
447
  await self._register_handlers()
446
448
  await self.websocket.send(tx.message)
449
+ sb_config._cdp_aclose = self.aclose
447
450
  try:
448
451
  return await tx
449
452
  except ProtocolException as e:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: seleniumbase
3
- Version: 4.37.10
3
+ Version: 4.37.11
4
4
  Summary: A complete web automation framework for end-to-end testing.
5
5
  Home-page: https://github.com/seleniumbase/SeleniumBase
6
6
  Author: Michael Mintz
@@ -63,7 +63,7 @@ Requires-Dist: pip>=25.0.1; python_version < "3.9"
63
63
  Requires-Dist: pip>=25.1; python_version >= "3.9"
64
64
  Requires-Dist: packaging>=25.0
65
65
  Requires-Dist: setuptools~=70.2; python_version < "3.10"
66
- Requires-Dist: setuptools>=80.0.0; python_version >= "3.10"
66
+ Requires-Dist: setuptools>=80.1.0; python_version >= "3.10"
67
67
  Requires-Dist: wheel>=0.45.1
68
68
  Requires-Dist: attrs>=25.3.0
69
69
  Requires-Dist: certifi>=2025.4.26
@@ -67,7 +67,7 @@ cssselect==1.2.0
67
67
  pytest-rerunfailures==14.0
68
68
 
69
69
  [:python_version >= "3.10"]
70
- setuptools>=80.0.0
70
+ setuptools>=80.1.0
71
71
  urllib3<2.5.0,>=1.26.20
72
72
 
73
73
  [:python_version >= "3.9"]
@@ -151,7 +151,7 @@ setup(
151
151
  'pip>=25.1;python_version>="3.9"',
152
152
  'packaging>=25.0',
153
153
  'setuptools~=70.2;python_version<"3.10"', # Newer ones had issues
154
- 'setuptools>=80.0.0;python_version>="3.10"',
154
+ 'setuptools>=80.1.0;python_version>="3.10"',
155
155
  'wheel>=0.45.1',
156
156
  'attrs>=25.3.0',
157
157
  "certifi>=2025.4.26",
@@ -1,2 +0,0 @@
1
- # seleniumbase package
2
- __version__ = "4.37.10"
File without changes
File without changes
File without changes