seleniumbase 4.35.2__tar.gz → 4.35.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.
Files changed (155) hide show
  1. {seleniumbase-4.35.2/seleniumbase.egg-info → seleniumbase-4.35.3}/PKG-INFO +3 -3
  2. {seleniumbase-4.35.2 → seleniumbase-4.35.3}/requirements.txt +1 -1
  3. {seleniumbase-4.35.2 → seleniumbase-4.35.3}/seleniumbase/__version__.py +1 -1
  4. {seleniumbase-4.35.2 → seleniumbase-4.35.3}/seleniumbase/core/browser_launcher.py +8 -0
  5. {seleniumbase-4.35.2 → seleniumbase-4.35.3}/seleniumbase/core/sb_cdp.py +46 -9
  6. {seleniumbase-4.35.2 → seleniumbase-4.35.3}/seleniumbase/fixtures/base_case.py +3 -0
  7. {seleniumbase-4.35.2 → seleniumbase-4.35.3}/seleniumbase/undetected/cdp_driver/browser.py +6 -7
  8. {seleniumbase-4.35.2 → seleniumbase-4.35.3}/seleniumbase/undetected/cdp_driver/connection.py +1 -1
  9. {seleniumbase-4.35.2 → seleniumbase-4.35.3}/seleniumbase/undetected/cdp_driver/tab.py +1 -0
  10. {seleniumbase-4.35.2 → seleniumbase-4.35.3/seleniumbase.egg-info}/PKG-INFO +3 -3
  11. {seleniumbase-4.35.2 → seleniumbase-4.35.3}/seleniumbase.egg-info/requires.txt +2 -2
  12. {seleniumbase-4.35.2 → seleniumbase-4.35.3}/setup.py +2 -2
  13. {seleniumbase-4.35.2 → seleniumbase-4.35.3}/.gitignore +0 -0
  14. {seleniumbase-4.35.2 → seleniumbase-4.35.3}/LICENSE +0 -0
  15. {seleniumbase-4.35.2 → seleniumbase-4.35.3}/MANIFEST.in +0 -0
  16. {seleniumbase-4.35.2 → seleniumbase-4.35.3}/README.md +0 -0
  17. {seleniumbase-4.35.2 → seleniumbase-4.35.3}/install.sh +0 -0
  18. {seleniumbase-4.35.2 → seleniumbase-4.35.3}/pyproject.toml +0 -0
  19. {seleniumbase-4.35.2 → seleniumbase-4.35.3}/pytest.ini +0 -0
  20. {seleniumbase-4.35.2 → seleniumbase-4.35.3}/sbase/__init__.py +0 -0
  21. {seleniumbase-4.35.2 → seleniumbase-4.35.3}/sbase/__main__.py +0 -0
  22. {seleniumbase-4.35.2 → seleniumbase-4.35.3}/sbase/steps.py +0 -0
  23. {seleniumbase-4.35.2 → seleniumbase-4.35.3}/seleniumbase/__init__.py +0 -0
  24. {seleniumbase-4.35.2 → seleniumbase-4.35.3}/seleniumbase/__main__.py +0 -0
  25. {seleniumbase-4.35.2 → seleniumbase-4.35.3}/seleniumbase/behave/__init__.py +0 -0
  26. {seleniumbase-4.35.2 → seleniumbase-4.35.3}/seleniumbase/behave/behave_helper.py +0 -0
  27. {seleniumbase-4.35.2 → seleniumbase-4.35.3}/seleniumbase/behave/behave_sb.py +0 -0
  28. {seleniumbase-4.35.2 → seleniumbase-4.35.3}/seleniumbase/behave/steps.py +0 -0
  29. {seleniumbase-4.35.2 → seleniumbase-4.35.3}/seleniumbase/common/__init__.py +0 -0
  30. {seleniumbase-4.35.2 → seleniumbase-4.35.3}/seleniumbase/common/decorators.py +0 -0
  31. {seleniumbase-4.35.2 → seleniumbase-4.35.3}/seleniumbase/common/encryption.py +0 -0
  32. {seleniumbase-4.35.2 → seleniumbase-4.35.3}/seleniumbase/common/exceptions.py +0 -0
  33. {seleniumbase-4.35.2 → seleniumbase-4.35.3}/seleniumbase/common/obfuscate.py +0 -0
  34. {seleniumbase-4.35.2 → seleniumbase-4.35.3}/seleniumbase/common/unobfuscate.py +0 -0
  35. {seleniumbase-4.35.2 → seleniumbase-4.35.3}/seleniumbase/config/__init__.py +0 -0
  36. {seleniumbase-4.35.2 → seleniumbase-4.35.3}/seleniumbase/config/ad_block_list.py +0 -0
  37. {seleniumbase-4.35.2 → seleniumbase-4.35.3}/seleniumbase/config/proxy_list.py +0 -0
  38. {seleniumbase-4.35.2 → seleniumbase-4.35.3}/seleniumbase/config/settings.py +0 -0
  39. {seleniumbase-4.35.2 → seleniumbase-4.35.3}/seleniumbase/console_scripts/__init__.py +0 -0
  40. {seleniumbase-4.35.2 → seleniumbase-4.35.3}/seleniumbase/console_scripts/logo_helper.py +0 -0
  41. {seleniumbase-4.35.2 → seleniumbase-4.35.3}/seleniumbase/console_scripts/rich_helper.py +0 -0
  42. {seleniumbase-4.35.2 → seleniumbase-4.35.3}/seleniumbase/console_scripts/run.py +0 -0
  43. {seleniumbase-4.35.2 → seleniumbase-4.35.3}/seleniumbase/console_scripts/sb_behave_gui.py +0 -0
  44. {seleniumbase-4.35.2 → seleniumbase-4.35.3}/seleniumbase/console_scripts/sb_caseplans.py +0 -0
  45. {seleniumbase-4.35.2 → seleniumbase-4.35.3}/seleniumbase/console_scripts/sb_commander.py +0 -0
  46. {seleniumbase-4.35.2 → seleniumbase-4.35.3}/seleniumbase/console_scripts/sb_install.py +0 -0
  47. {seleniumbase-4.35.2 → seleniumbase-4.35.3}/seleniumbase/console_scripts/sb_mkchart.py +0 -0
  48. {seleniumbase-4.35.2 → seleniumbase-4.35.3}/seleniumbase/console_scripts/sb_mkdir.py +0 -0
  49. {seleniumbase-4.35.2 → seleniumbase-4.35.3}/seleniumbase/console_scripts/sb_mkfile.py +0 -0
  50. {seleniumbase-4.35.2 → seleniumbase-4.35.3}/seleniumbase/console_scripts/sb_mkpres.py +0 -0
  51. {seleniumbase-4.35.2 → seleniumbase-4.35.3}/seleniumbase/console_scripts/sb_mkrec.py +0 -0
  52. {seleniumbase-4.35.2 → seleniumbase-4.35.3}/seleniumbase/console_scripts/sb_objectify.py +0 -0
  53. {seleniumbase-4.35.2 → seleniumbase-4.35.3}/seleniumbase/console_scripts/sb_print.py +0 -0
  54. {seleniumbase-4.35.2 → seleniumbase-4.35.3}/seleniumbase/console_scripts/sb_recorder.py +0 -0
  55. {seleniumbase-4.35.2 → seleniumbase-4.35.3}/seleniumbase/core/__init__.py +0 -0
  56. {seleniumbase-4.35.2 → seleniumbase-4.35.3}/seleniumbase/core/application_manager.py +0 -0
  57. {seleniumbase-4.35.2 → seleniumbase-4.35.3}/seleniumbase/core/capabilities_parser.py +0 -0
  58. {seleniumbase-4.35.2 → seleniumbase-4.35.3}/seleniumbase/core/colored_traceback.py +0 -0
  59. {seleniumbase-4.35.2 → seleniumbase-4.35.3}/seleniumbase/core/create_db_tables.sql +0 -0
  60. {seleniumbase-4.35.2 → seleniumbase-4.35.3}/seleniumbase/core/detect_b_ver.py +0 -0
  61. {seleniumbase-4.35.2 → seleniumbase-4.35.3}/seleniumbase/core/download_helper.py +0 -0
  62. {seleniumbase-4.35.2 → seleniumbase-4.35.3}/seleniumbase/core/encoded_images.py +0 -0
  63. {seleniumbase-4.35.2 → seleniumbase-4.35.3}/seleniumbase/core/jqc_helper.py +0 -0
  64. {seleniumbase-4.35.2 → seleniumbase-4.35.3}/seleniumbase/core/log_helper.py +0 -0
  65. {seleniumbase-4.35.2 → seleniumbase-4.35.3}/seleniumbase/core/mysql.py +0 -0
  66. {seleniumbase-4.35.2 → seleniumbase-4.35.3}/seleniumbase/core/proxy_helper.py +0 -0
  67. {seleniumbase-4.35.2 → seleniumbase-4.35.3}/seleniumbase/core/recorder_helper.py +0 -0
  68. {seleniumbase-4.35.2 → seleniumbase-4.35.3}/seleniumbase/core/report_helper.py +0 -0
  69. {seleniumbase-4.35.2 → seleniumbase-4.35.3}/seleniumbase/core/s3_manager.py +0 -0
  70. {seleniumbase-4.35.2 → seleniumbase-4.35.3}/seleniumbase/core/sb_driver.py +0 -0
  71. {seleniumbase-4.35.2 → seleniumbase-4.35.3}/seleniumbase/core/session_helper.py +0 -0
  72. {seleniumbase-4.35.2 → seleniumbase-4.35.3}/seleniumbase/core/settings_parser.py +0 -0
  73. {seleniumbase-4.35.2 → seleniumbase-4.35.3}/seleniumbase/core/style_sheet.py +0 -0
  74. {seleniumbase-4.35.2 → seleniumbase-4.35.3}/seleniumbase/core/testcase_manager.py +0 -0
  75. {seleniumbase-4.35.2 → seleniumbase-4.35.3}/seleniumbase/core/tour_helper.py +0 -0
  76. {seleniumbase-4.35.2 → seleniumbase-4.35.3}/seleniumbase/core/visual_helper.py +0 -0
  77. {seleniumbase-4.35.2 → seleniumbase-4.35.3}/seleniumbase/drivers/__init__.py +0 -0
  78. {seleniumbase-4.35.2 → seleniumbase-4.35.3}/seleniumbase/extensions/__init__.py +0 -0
  79. {seleniumbase-4.35.2 → seleniumbase-4.35.3}/seleniumbase/extensions/ad_block.zip +0 -0
  80. {seleniumbase-4.35.2 → seleniumbase-4.35.3}/seleniumbase/extensions/disable_csp.zip +0 -0
  81. {seleniumbase-4.35.2 → seleniumbase-4.35.3}/seleniumbase/extensions/recorder.zip +0 -0
  82. {seleniumbase-4.35.2 → seleniumbase-4.35.3}/seleniumbase/extensions/sbase_ext.zip +0 -0
  83. {seleniumbase-4.35.2 → seleniumbase-4.35.3}/seleniumbase/fixtures/__init__.py +0 -0
  84. {seleniumbase-4.35.2 → seleniumbase-4.35.3}/seleniumbase/fixtures/constants.py +0 -0
  85. {seleniumbase-4.35.2 → seleniumbase-4.35.3}/seleniumbase/fixtures/css_to_xpath.py +0 -0
  86. {seleniumbase-4.35.2 → seleniumbase-4.35.3}/seleniumbase/fixtures/errors.py +0 -0
  87. {seleniumbase-4.35.2 → seleniumbase-4.35.3}/seleniumbase/fixtures/js_utils.py +0 -0
  88. {seleniumbase-4.35.2 → seleniumbase-4.35.3}/seleniumbase/fixtures/page_actions.py +0 -0
  89. {seleniumbase-4.35.2 → seleniumbase-4.35.3}/seleniumbase/fixtures/page_utils.py +0 -0
  90. {seleniumbase-4.35.2 → seleniumbase-4.35.3}/seleniumbase/fixtures/shared_utils.py +0 -0
  91. {seleniumbase-4.35.2 → seleniumbase-4.35.3}/seleniumbase/fixtures/unittest_helper.py +0 -0
  92. {seleniumbase-4.35.2 → seleniumbase-4.35.3}/seleniumbase/fixtures/words.py +0 -0
  93. {seleniumbase-4.35.2 → seleniumbase-4.35.3}/seleniumbase/fixtures/xpath_to_css.py +0 -0
  94. {seleniumbase-4.35.2 → seleniumbase-4.35.3}/seleniumbase/js_code/__init__.py +0 -0
  95. {seleniumbase-4.35.2 → seleniumbase-4.35.3}/seleniumbase/js_code/active_css_js.py +0 -0
  96. {seleniumbase-4.35.2 → seleniumbase-4.35.3}/seleniumbase/js_code/live_js.py +0 -0
  97. {seleniumbase-4.35.2 → seleniumbase-4.35.3}/seleniumbase/js_code/recorder_js.py +0 -0
  98. {seleniumbase-4.35.2 → seleniumbase-4.35.3}/seleniumbase/masterqa/__init__.py +0 -0
  99. {seleniumbase-4.35.2 → seleniumbase-4.35.3}/seleniumbase/masterqa/master_qa.py +0 -0
  100. {seleniumbase-4.35.2 → seleniumbase-4.35.3}/seleniumbase/plugins/__init__.py +0 -0
  101. {seleniumbase-4.35.2 → seleniumbase-4.35.3}/seleniumbase/plugins/base_plugin.py +0 -0
  102. {seleniumbase-4.35.2 → seleniumbase-4.35.3}/seleniumbase/plugins/basic_test_info.py +0 -0
  103. {seleniumbase-4.35.2 → seleniumbase-4.35.3}/seleniumbase/plugins/db_reporting_plugin.py +0 -0
  104. {seleniumbase-4.35.2 → seleniumbase-4.35.3}/seleniumbase/plugins/driver_manager.py +0 -0
  105. {seleniumbase-4.35.2 → seleniumbase-4.35.3}/seleniumbase/plugins/page_source.py +0 -0
  106. {seleniumbase-4.35.2 → seleniumbase-4.35.3}/seleniumbase/plugins/pytest_plugin.py +0 -0
  107. {seleniumbase-4.35.2 → seleniumbase-4.35.3}/seleniumbase/plugins/s3_logging_plugin.py +0 -0
  108. {seleniumbase-4.35.2 → seleniumbase-4.35.3}/seleniumbase/plugins/sb_manager.py +0 -0
  109. {seleniumbase-4.35.2 → seleniumbase-4.35.3}/seleniumbase/plugins/screen_shots.py +0 -0
  110. {seleniumbase-4.35.2 → seleniumbase-4.35.3}/seleniumbase/plugins/selenium_plugin.py +0 -0
  111. {seleniumbase-4.35.2 → seleniumbase-4.35.3}/seleniumbase/resources/__init__.py +0 -0
  112. {seleniumbase-4.35.2 → seleniumbase-4.35.3}/seleniumbase/translate/__init__.py +0 -0
  113. {seleniumbase-4.35.2 → seleniumbase-4.35.3}/seleniumbase/translate/chinese.py +0 -0
  114. {seleniumbase-4.35.2 → seleniumbase-4.35.3}/seleniumbase/translate/dutch.py +0 -0
  115. {seleniumbase-4.35.2 → seleniumbase-4.35.3}/seleniumbase/translate/french.py +0 -0
  116. {seleniumbase-4.35.2 → seleniumbase-4.35.3}/seleniumbase/translate/italian.py +0 -0
  117. {seleniumbase-4.35.2 → seleniumbase-4.35.3}/seleniumbase/translate/japanese.py +0 -0
  118. {seleniumbase-4.35.2 → seleniumbase-4.35.3}/seleniumbase/translate/korean.py +0 -0
  119. {seleniumbase-4.35.2 → seleniumbase-4.35.3}/seleniumbase/translate/master_dict.py +0 -0
  120. {seleniumbase-4.35.2 → seleniumbase-4.35.3}/seleniumbase/translate/portuguese.py +0 -0
  121. {seleniumbase-4.35.2 → seleniumbase-4.35.3}/seleniumbase/translate/russian.py +0 -0
  122. {seleniumbase-4.35.2 → seleniumbase-4.35.3}/seleniumbase/translate/spanish.py +0 -0
  123. {seleniumbase-4.35.2 → seleniumbase-4.35.3}/seleniumbase/translate/translator.py +0 -0
  124. {seleniumbase-4.35.2 → seleniumbase-4.35.3}/seleniumbase/undetected/__init__.py +0 -0
  125. {seleniumbase-4.35.2 → seleniumbase-4.35.3}/seleniumbase/undetected/cdp.py +0 -0
  126. {seleniumbase-4.35.2 → seleniumbase-4.35.3}/seleniumbase/undetected/cdp_driver/__init__.py +0 -0
  127. {seleniumbase-4.35.2 → seleniumbase-4.35.3}/seleniumbase/undetected/cdp_driver/_contradict.py +0 -0
  128. {seleniumbase-4.35.2 → seleniumbase-4.35.3}/seleniumbase/undetected/cdp_driver/cdp_util.py +0 -0
  129. {seleniumbase-4.35.2 → seleniumbase-4.35.3}/seleniumbase/undetected/cdp_driver/config.py +0 -0
  130. {seleniumbase-4.35.2 → seleniumbase-4.35.3}/seleniumbase/undetected/cdp_driver/element.py +0 -0
  131. {seleniumbase-4.35.2 → seleniumbase-4.35.3}/seleniumbase/undetected/dprocess.py +0 -0
  132. {seleniumbase-4.35.2 → seleniumbase-4.35.3}/seleniumbase/undetected/options.py +0 -0
  133. {seleniumbase-4.35.2 → seleniumbase-4.35.3}/seleniumbase/undetected/patcher.py +0 -0
  134. {seleniumbase-4.35.2 → seleniumbase-4.35.3}/seleniumbase/undetected/reactor.py +0 -0
  135. {seleniumbase-4.35.2 → seleniumbase-4.35.3}/seleniumbase/undetected/webelement.py +0 -0
  136. {seleniumbase-4.35.2 → seleniumbase-4.35.3}/seleniumbase/utilities/__init__.py +0 -0
  137. {seleniumbase-4.35.2 → seleniumbase-4.35.3}/seleniumbase/utilities/selenium_grid/__init__.py +0 -0
  138. {seleniumbase-4.35.2 → seleniumbase-4.35.3}/seleniumbase/utilities/selenium_grid/download_selenium_server.py +0 -0
  139. {seleniumbase-4.35.2 → seleniumbase-4.35.3}/seleniumbase/utilities/selenium_grid/font_color +0 -0
  140. {seleniumbase-4.35.2 → seleniumbase-4.35.3}/seleniumbase/utilities/selenium_grid/grid-hub +0 -0
  141. {seleniumbase-4.35.2 → seleniumbase-4.35.3}/seleniumbase/utilities/selenium_grid/grid-node +0 -0
  142. {seleniumbase-4.35.2 → seleniumbase-4.35.3}/seleniumbase/utilities/selenium_grid/grid_hub.py +0 -0
  143. {seleniumbase-4.35.2 → seleniumbase-4.35.3}/seleniumbase/utilities/selenium_grid/grid_node.py +0 -0
  144. {seleniumbase-4.35.2 → seleniumbase-4.35.3}/seleniumbase/utilities/selenium_grid/register-grid-node.bat +0 -0
  145. {seleniumbase-4.35.2 → seleniumbase-4.35.3}/seleniumbase/utilities/selenium_grid/register-grid-node.sh +0 -0
  146. {seleniumbase-4.35.2 → seleniumbase-4.35.3}/seleniumbase/utilities/selenium_grid/start-grid-hub.bat +0 -0
  147. {seleniumbase-4.35.2 → seleniumbase-4.35.3}/seleniumbase/utilities/selenium_grid/start-grid-hub.sh +0 -0
  148. {seleniumbase-4.35.2 → seleniumbase-4.35.3}/seleniumbase/utilities/selenium_ide/__init__.py +0 -0
  149. {seleniumbase-4.35.2 → seleniumbase-4.35.3}/seleniumbase/utilities/selenium_ide/convert_ide.py +0 -0
  150. {seleniumbase-4.35.2 → seleniumbase-4.35.3}/seleniumbase.egg-info/SOURCES.txt +0 -0
  151. {seleniumbase-4.35.2 → seleniumbase-4.35.3}/seleniumbase.egg-info/dependency_links.txt +0 -0
  152. {seleniumbase-4.35.2 → seleniumbase-4.35.3}/seleniumbase.egg-info/entry_points.txt +0 -0
  153. {seleniumbase-4.35.2 → seleniumbase-4.35.3}/seleniumbase.egg-info/top_level.txt +0 -0
  154. {seleniumbase-4.35.2 → seleniumbase-4.35.3}/setup.cfg +0 -0
  155. {seleniumbase-4.35.2 → seleniumbase-4.35.3}/virtualenv_install.sh +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: seleniumbase
3
- Version: 4.35.2
3
+ Version: 4.35.3
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
@@ -110,7 +110,7 @@ Requires-Dist: sortedcontainers==2.4.0
110
110
  Requires-Dist: execnet==2.1.1
111
111
  Requires-Dist: iniconfig==2.0.0
112
112
  Requires-Dist: pluggy==1.5.0
113
- Requires-Dist: pytest==8.3.4
113
+ Requires-Dist: pytest==8.3.5
114
114
  Requires-Dist: pytest-html==4.0.2
115
115
  Requires-Dist: pytest-metadata==3.1.1
116
116
  Requires-Dist: pytest-ordering==0.6
@@ -151,7 +151,7 @@ Requires-Dist: mss==9.0.2; extra == "mss"
151
151
  Provides-Extra: pdfminer
152
152
  Requires-Dist: pdfminer.six==20240706; extra == "pdfminer"
153
153
  Requires-Dist: cryptography==39.0.2; python_version < "3.9" and extra == "pdfminer"
154
- Requires-Dist: cryptography==44.0.1; python_version >= "3.9" and extra == "pdfminer"
154
+ Requires-Dist: cryptography==44.0.2; python_version >= "3.9" and extra == "pdfminer"
155
155
  Requires-Dist: cffi==1.17.1; extra == "pdfminer"
156
156
  Requires-Dist: pycparser==2.22; extra == "pdfminer"
157
157
  Provides-Extra: pillow
@@ -49,7 +49,7 @@ sortedcontainers==2.4.0
49
49
  execnet==2.1.1
50
50
  iniconfig==2.0.0
51
51
  pluggy==1.5.0
52
- pytest==8.3.4
52
+ pytest==8.3.5
53
53
  pytest-html==4.0.2
54
54
  pytest-metadata==3.1.1
55
55
  pytest-ordering==0.6
@@ -1,2 +1,2 @@
1
1
  # seleniumbase package
2
- __version__ = "4.35.2"
2
+ __version__ = "4.35.3"
@@ -682,6 +682,13 @@ def uc_open_with_cdp_mode(driver, url=None):
682
682
  cdp.gui_hover_element = CDPM.gui_hover_element
683
683
  cdp.gui_hover_and_click = CDPM.gui_hover_and_click
684
684
  cdp.internalize_links = CDPM.internalize_links
685
+ cdp.switch_to_window = CDPM.switch_to_window
686
+ cdp.switch_to_newest_window = CDPM.switch_to_newest_window
687
+ cdp.switch_to_tab = CDPM.switch_to_tab
688
+ cdp.switch_to_newest_tab = CDPM.switch_to_newest_tab
689
+ cdp.close_active_tab = CDPM.close_active_tab
690
+ cdp.get_active_tab = CDPM.get_active_tab
691
+ cdp.get_tabs = CDPM.get_tabs
685
692
  cdp.get_window = CDPM.get_window
686
693
  cdp.get_element_attributes = CDPM.get_element_attributes
687
694
  cdp.get_element_attribute = CDPM.get_element_attribute
@@ -2033,6 +2040,7 @@ def _set_chrome_options(
2033
2040
  prefs["download.default_directory"] = downloads_path
2034
2041
  prefs["download.directory_upgrade"] = True
2035
2042
  prefs["download.prompt_for_download"] = False
2043
+ prefs["download_bubble.partial_view_enabled"] = False
2036
2044
  prefs["credentials_enable_service"] = False
2037
2045
  prefs["local_discovery.notifications_enabled"] = False
2038
2046
  prefs["safebrowsing.enabled"] = False # Prevent PW "data breach" pop-ups
@@ -1014,10 +1014,51 @@ class CDPMethods():
1014
1014
  self.set_window_rect(x, y, width, height)
1015
1015
  self.__add_light_pause()
1016
1016
 
1017
+ def switch_to_window(self, window):
1018
+ self.switch_to_tab(window)
1019
+
1020
+ def switch_to_newest_window(self):
1021
+ self.switch_to_tab(-1)
1022
+
1023
+ def switch_to_tab(self, tab):
1024
+ driver = self.driver
1025
+ if hasattr(driver, "cdp_base"):
1026
+ driver = driver.cdp_base
1027
+ if isinstance(tab, int):
1028
+ self.page = driver.tabs[tab]
1029
+ elif isinstance(tab, cdp_util.Tab):
1030
+ self.page = tab
1031
+ else:
1032
+ raise Exception("`tab` must be an int or a Tab type!")
1033
+ self.bring_active_window_to_front()
1034
+
1035
+ def switch_to_newest_tab(self):
1036
+ self.switch_to_tab(-1)
1037
+
1038
+ def close_active_tab(self):
1039
+ """Close the active tab.
1040
+ The active tab is the one currenly controlled by CDP.
1041
+ The active tab MIGHT NOT be the currently visible tab!
1042
+ (If a page opens a new tab, the new tab WON'T be active)
1043
+ To switch the active tab, call: sb.switch_to_tab(tab)"""
1044
+ return self.loop.run_until_complete(self.page.close())
1045
+
1046
+ def get_active_tab(self):
1047
+ """Return the active tab.
1048
+ The active tab is the one currenly controlled by CDP.
1049
+ The active tab MIGHT NOT be the currently visible tab!
1050
+ (If a page opens a new tab, the new tab WON'T be active)
1051
+ To switch the active tab, call: sb.switch_to_tab(tab)"""
1052
+ return self.page
1053
+
1054
+ def get_tabs(self):
1055
+ driver = self.driver
1056
+ if hasattr(driver, "cdp_base"):
1057
+ driver = driver.cdp_base
1058
+ return driver.tabs
1059
+
1017
1060
  def get_window(self):
1018
- return self.loop.run_until_complete(
1019
- self.page.get_window()
1020
- )
1061
+ return self.loop.run_until_complete(self.page.get_window())
1021
1062
 
1022
1063
  def get_text(self, selector):
1023
1064
  return self.find_element(selector).text_all
@@ -1211,14 +1252,10 @@ class CDPMethods():
1211
1252
  return ((e_x + e_width / 2.0) + 0.5, (e_y + e_height / 2.0) + 0.5)
1212
1253
 
1213
1254
  def get_document(self):
1214
- return self.loop.run_until_complete(
1215
- self.page.get_document()
1216
- )
1255
+ return self.loop.run_until_complete(self.page.get_document())
1217
1256
 
1218
1257
  def get_flattened_document(self):
1219
- return self.loop.run_until_complete(
1220
- self.page.get_flattened_document()
1221
- )
1258
+ return self.loop.run_until_complete(self.page.get_flattened_document())
1222
1259
 
1223
1260
  def get_element_attributes(self, selector):
1224
1261
  selector = self.__convert_to_css_if_xpath(selector)
@@ -3918,6 +3918,9 @@ class BaseCase(unittest.TestCase):
3918
3918
  timeout = settings.SMALL_TIMEOUT
3919
3919
  if self.timeout_multiplier and timeout == settings.SMALL_TIMEOUT:
3920
3920
  timeout = self.__get_new_timeout(timeout)
3921
+ if self.__is_cdp_swap_needed() and not isinstance(window, str):
3922
+ self.cdp.switch_to_tab(window)
3923
+ return
3921
3924
  page_actions.switch_to_window(self.driver, window, timeout)
3922
3925
 
3923
3926
  def switch_to_default_window(self):
@@ -660,7 +660,7 @@ class CookieJar:
660
660
  break
661
661
  else:
662
662
  connection = self._browser.connection
663
- cookies = await connection.send(cdp.storage.get_cookies())
663
+ cookies = await connection.send(cdp.network.get_cookies())
664
664
  if requests_cookie_format:
665
665
  import requests.cookies
666
666
 
@@ -690,8 +690,7 @@ class CookieJar:
690
690
  break
691
691
  else:
692
692
  connection = self._browser.connection
693
- cookies = await connection.send(cdp.storage.get_cookies())
694
- await connection.send(cdp.storage.set_cookies(cookies))
693
+ await connection.send(cdp.network.set_cookies(cookies))
695
694
 
696
695
  async def save(self, file: PathLike = ".session.dat", pattern: str = ".*"):
697
696
  """
@@ -718,7 +717,7 @@ class CookieJar:
718
717
  break
719
718
  else:
720
719
  connection = self._browser.connection
721
- cookies = await connection.send(cdp.storage.get_cookies())
720
+ cookies = await connection.send(cdp.network.get_cookies())
722
721
  # if not connection:
723
722
  # return
724
723
  # if not connection.websocket:
@@ -776,7 +775,7 @@ class CookieJar:
776
775
  cookie.value,
777
776
  )
778
777
  break
779
- await connection.send(cdp.storage.set_cookies(included_cookies))
778
+ await connection.send(cdp.network.set_cookies(included_cookies))
780
779
 
781
780
  async def clear(self):
782
781
  """
@@ -791,9 +790,9 @@ class CookieJar:
791
790
  break
792
791
  else:
793
792
  connection = self._browser.connection
794
- cookies = await connection.send(cdp.storage.get_cookies())
793
+ cookies = await connection.send(cdp.network.get_cookies())
795
794
  if cookies:
796
- await connection.send(cdp.storage.clear_cookies())
795
+ await connection.send(cdp.network.clear_cookies())
797
796
 
798
797
 
799
798
  class HTTPApi:
@@ -382,7 +382,7 @@ class Connection(metaclass=CantTouchThis):
382
382
  async def send(
383
383
  self,
384
384
  cdp_obj: Generator[dict[str, Any], dict[str, Any], Any],
385
- _is_update=False,
385
+ _is_update=True,
386
386
  ) -> Any:
387
387
  """
388
388
  Send a protocol command.
@@ -852,6 +852,7 @@ class Tab(Connection):
852
852
  await self.send(
853
853
  cdp.target.close_target(target_id=self.target.target_id)
854
854
  )
855
+ await asyncio.sleep(0.1)
855
856
 
856
857
  async def get_window(self) -> Tuple[
857
858
  cdp.browser.WindowID, cdp.browser.Bounds
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: seleniumbase
3
- Version: 4.35.2
3
+ Version: 4.35.3
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
@@ -110,7 +110,7 @@ Requires-Dist: sortedcontainers==2.4.0
110
110
  Requires-Dist: execnet==2.1.1
111
111
  Requires-Dist: iniconfig==2.0.0
112
112
  Requires-Dist: pluggy==1.5.0
113
- Requires-Dist: pytest==8.3.4
113
+ Requires-Dist: pytest==8.3.5
114
114
  Requires-Dist: pytest-html==4.0.2
115
115
  Requires-Dist: pytest-metadata==3.1.1
116
116
  Requires-Dist: pytest-ordering==0.6
@@ -151,7 +151,7 @@ Requires-Dist: mss==9.0.2; extra == "mss"
151
151
  Provides-Extra: pdfminer
152
152
  Requires-Dist: pdfminer.six==20240706; extra == "pdfminer"
153
153
  Requires-Dist: cryptography==39.0.2; python_version < "3.9" and extra == "pdfminer"
154
- Requires-Dist: cryptography==44.0.1; python_version >= "3.9" and extra == "pdfminer"
154
+ Requires-Dist: cryptography==44.0.2; python_version >= "3.9" and extra == "pdfminer"
155
155
  Requires-Dist: cffi==1.17.1; extra == "pdfminer"
156
156
  Requires-Dist: pycparser==2.22; extra == "pdfminer"
157
157
  Provides-Extra: pillow
@@ -34,7 +34,7 @@ sortedcontainers==2.4.0
34
34
  execnet==2.1.1
35
35
  iniconfig==2.0.0
36
36
  pluggy==1.5.0
37
- pytest==8.3.4
37
+ pytest==8.3.5
38
38
  pytest-html==4.0.2
39
39
  pytest-metadata==3.1.1
40
40
  pytest-ordering==0.6
@@ -122,7 +122,7 @@ pycparser==2.22
122
122
  cryptography==39.0.2
123
123
 
124
124
  [pdfminer:python_version >= "3.9"]
125
- cryptography==44.0.1
125
+ cryptography==44.0.2
126
126
 
127
127
  [pillow]
128
128
 
@@ -198,7 +198,7 @@ setup(
198
198
  'execnet==2.1.1',
199
199
  'iniconfig==2.0.0',
200
200
  'pluggy==1.5.0',
201
- 'pytest==8.3.4',
201
+ 'pytest==8.3.5',
202
202
  "pytest-html==4.0.2", # Newer ones had issues
203
203
  'pytest-metadata==3.1.1',
204
204
  "pytest-ordering==0.6",
@@ -259,7 +259,7 @@ setup(
259
259
  "pdfminer": [
260
260
  'pdfminer.six==20240706',
261
261
  'cryptography==39.0.2;python_version<"3.9"',
262
- 'cryptography==44.0.1;python_version>="3.9"',
262
+ 'cryptography==44.0.2;python_version>="3.9"',
263
263
  'cffi==1.17.1',
264
264
  "pycparser==2.22",
265
265
  ],
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes