seleniumbase 4.37.11__tar.gz → 4.38.0__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.11/seleniumbase.egg-info → seleniumbase-4.38.0}/PKG-INFO +5 -5
  2. {seleniumbase-4.37.11 → seleniumbase-4.38.0}/requirements.txt +3 -3
  3. seleniumbase-4.38.0/seleniumbase/__version__.py +2 -0
  4. {seleniumbase-4.37.11 → seleniumbase-4.38.0}/seleniumbase/core/browser_launcher.py +17 -10
  5. {seleniumbase-4.37.11 → seleniumbase-4.38.0}/seleniumbase/plugins/sb_manager.py +11 -16
  6. {seleniumbase-4.37.11 → seleniumbase-4.38.0}/seleniumbase/undetected/cdp_driver/connection.py +7 -6
  7. {seleniumbase-4.37.11 → seleniumbase-4.38.0/seleniumbase.egg-info}/PKG-INFO +5 -5
  8. {seleniumbase-4.37.11 → seleniumbase-4.38.0}/seleniumbase.egg-info/requires.txt +4 -4
  9. {seleniumbase-4.37.11 → seleniumbase-4.38.0}/setup.py +4 -4
  10. seleniumbase-4.37.11/seleniumbase/__version__.py +0 -2
  11. {seleniumbase-4.37.11 → seleniumbase-4.38.0}/.gitignore +0 -0
  12. {seleniumbase-4.37.11 → seleniumbase-4.38.0}/LICENSE +0 -0
  13. {seleniumbase-4.37.11 → seleniumbase-4.38.0}/MANIFEST.in +0 -0
  14. {seleniumbase-4.37.11 → seleniumbase-4.38.0}/README.md +0 -0
  15. {seleniumbase-4.37.11 → seleniumbase-4.38.0}/install.sh +0 -0
  16. {seleniumbase-4.37.11 → seleniumbase-4.38.0}/pyproject.toml +0 -0
  17. {seleniumbase-4.37.11 → seleniumbase-4.38.0}/pytest.ini +0 -0
  18. {seleniumbase-4.37.11 → seleniumbase-4.38.0}/sbase/__init__.py +0 -0
  19. {seleniumbase-4.37.11 → seleniumbase-4.38.0}/sbase/__main__.py +0 -0
  20. {seleniumbase-4.37.11 → seleniumbase-4.38.0}/sbase/steps.py +0 -0
  21. {seleniumbase-4.37.11 → seleniumbase-4.38.0}/seleniumbase/__init__.py +0 -0
  22. {seleniumbase-4.37.11 → seleniumbase-4.38.0}/seleniumbase/__main__.py +0 -0
  23. {seleniumbase-4.37.11 → seleniumbase-4.38.0}/seleniumbase/behave/__init__.py +0 -0
  24. {seleniumbase-4.37.11 → seleniumbase-4.38.0}/seleniumbase/behave/behave_helper.py +0 -0
  25. {seleniumbase-4.37.11 → seleniumbase-4.38.0}/seleniumbase/behave/behave_sb.py +0 -0
  26. {seleniumbase-4.37.11 → seleniumbase-4.38.0}/seleniumbase/behave/steps.py +0 -0
  27. {seleniumbase-4.37.11 → seleniumbase-4.38.0}/seleniumbase/common/__init__.py +0 -0
  28. {seleniumbase-4.37.11 → seleniumbase-4.38.0}/seleniumbase/common/decorators.py +0 -0
  29. {seleniumbase-4.37.11 → seleniumbase-4.38.0}/seleniumbase/common/encryption.py +0 -0
  30. {seleniumbase-4.37.11 → seleniumbase-4.38.0}/seleniumbase/common/exceptions.py +0 -0
  31. {seleniumbase-4.37.11 → seleniumbase-4.38.0}/seleniumbase/common/obfuscate.py +0 -0
  32. {seleniumbase-4.37.11 → seleniumbase-4.38.0}/seleniumbase/common/unobfuscate.py +0 -0
  33. {seleniumbase-4.37.11 → seleniumbase-4.38.0}/seleniumbase/config/__init__.py +0 -0
  34. {seleniumbase-4.37.11 → seleniumbase-4.38.0}/seleniumbase/config/ad_block_list.py +0 -0
  35. {seleniumbase-4.37.11 → seleniumbase-4.38.0}/seleniumbase/config/proxy_list.py +0 -0
  36. {seleniumbase-4.37.11 → seleniumbase-4.38.0}/seleniumbase/config/settings.py +0 -0
  37. {seleniumbase-4.37.11 → seleniumbase-4.38.0}/seleniumbase/console_scripts/__init__.py +0 -0
  38. {seleniumbase-4.37.11 → seleniumbase-4.38.0}/seleniumbase/console_scripts/logo_helper.py +0 -0
  39. {seleniumbase-4.37.11 → seleniumbase-4.38.0}/seleniumbase/console_scripts/rich_helper.py +0 -0
  40. {seleniumbase-4.37.11 → seleniumbase-4.38.0}/seleniumbase/console_scripts/run.py +0 -0
  41. {seleniumbase-4.37.11 → seleniumbase-4.38.0}/seleniumbase/console_scripts/sb_behave_gui.py +0 -0
  42. {seleniumbase-4.37.11 → seleniumbase-4.38.0}/seleniumbase/console_scripts/sb_caseplans.py +0 -0
  43. {seleniumbase-4.37.11 → seleniumbase-4.38.0}/seleniumbase/console_scripts/sb_commander.py +0 -0
  44. {seleniumbase-4.37.11 → seleniumbase-4.38.0}/seleniumbase/console_scripts/sb_install.py +0 -0
  45. {seleniumbase-4.37.11 → seleniumbase-4.38.0}/seleniumbase/console_scripts/sb_mkchart.py +0 -0
  46. {seleniumbase-4.37.11 → seleniumbase-4.38.0}/seleniumbase/console_scripts/sb_mkdir.py +0 -0
  47. {seleniumbase-4.37.11 → seleniumbase-4.38.0}/seleniumbase/console_scripts/sb_mkfile.py +0 -0
  48. {seleniumbase-4.37.11 → seleniumbase-4.38.0}/seleniumbase/console_scripts/sb_mkpres.py +0 -0
  49. {seleniumbase-4.37.11 → seleniumbase-4.38.0}/seleniumbase/console_scripts/sb_mkrec.py +0 -0
  50. {seleniumbase-4.37.11 → seleniumbase-4.38.0}/seleniumbase/console_scripts/sb_objectify.py +0 -0
  51. {seleniumbase-4.37.11 → seleniumbase-4.38.0}/seleniumbase/console_scripts/sb_print.py +0 -0
  52. {seleniumbase-4.37.11 → seleniumbase-4.38.0}/seleniumbase/console_scripts/sb_recorder.py +0 -0
  53. {seleniumbase-4.37.11 → seleniumbase-4.38.0}/seleniumbase/core/__init__.py +0 -0
  54. {seleniumbase-4.37.11 → seleniumbase-4.38.0}/seleniumbase/core/application_manager.py +0 -0
  55. {seleniumbase-4.37.11 → seleniumbase-4.38.0}/seleniumbase/core/capabilities_parser.py +0 -0
  56. {seleniumbase-4.37.11 → seleniumbase-4.38.0}/seleniumbase/core/colored_traceback.py +0 -0
  57. {seleniumbase-4.37.11 → seleniumbase-4.38.0}/seleniumbase/core/create_db_tables.sql +0 -0
  58. {seleniumbase-4.37.11 → seleniumbase-4.38.0}/seleniumbase/core/detect_b_ver.py +0 -0
  59. {seleniumbase-4.37.11 → seleniumbase-4.38.0}/seleniumbase/core/download_helper.py +0 -0
  60. {seleniumbase-4.37.11 → seleniumbase-4.38.0}/seleniumbase/core/encoded_images.py +0 -0
  61. {seleniumbase-4.37.11 → seleniumbase-4.38.0}/seleniumbase/core/jqc_helper.py +0 -0
  62. {seleniumbase-4.37.11 → seleniumbase-4.38.0}/seleniumbase/core/log_helper.py +0 -0
  63. {seleniumbase-4.37.11 → seleniumbase-4.38.0}/seleniumbase/core/mysql.py +0 -0
  64. {seleniumbase-4.37.11 → seleniumbase-4.38.0}/seleniumbase/core/proxy_helper.py +0 -0
  65. {seleniumbase-4.37.11 → seleniumbase-4.38.0}/seleniumbase/core/recorder_helper.py +0 -0
  66. {seleniumbase-4.37.11 → seleniumbase-4.38.0}/seleniumbase/core/report_helper.py +0 -0
  67. {seleniumbase-4.37.11 → seleniumbase-4.38.0}/seleniumbase/core/s3_manager.py +0 -0
  68. {seleniumbase-4.37.11 → seleniumbase-4.38.0}/seleniumbase/core/sb_cdp.py +0 -0
  69. {seleniumbase-4.37.11 → seleniumbase-4.38.0}/seleniumbase/core/sb_driver.py +0 -0
  70. {seleniumbase-4.37.11 → seleniumbase-4.38.0}/seleniumbase/core/session_helper.py +0 -0
  71. {seleniumbase-4.37.11 → seleniumbase-4.38.0}/seleniumbase/core/settings_parser.py +0 -0
  72. {seleniumbase-4.37.11 → seleniumbase-4.38.0}/seleniumbase/core/style_sheet.py +0 -0
  73. {seleniumbase-4.37.11 → seleniumbase-4.38.0}/seleniumbase/core/testcase_manager.py +0 -0
  74. {seleniumbase-4.37.11 → seleniumbase-4.38.0}/seleniumbase/core/tour_helper.py +0 -0
  75. {seleniumbase-4.37.11 → seleniumbase-4.38.0}/seleniumbase/core/visual_helper.py +0 -0
  76. {seleniumbase-4.37.11 → seleniumbase-4.38.0}/seleniumbase/drivers/__init__.py +0 -0
  77. {seleniumbase-4.37.11 → seleniumbase-4.38.0}/seleniumbase/extensions/__init__.py +0 -0
  78. {seleniumbase-4.37.11 → seleniumbase-4.38.0}/seleniumbase/extensions/ad_block.zip +0 -0
  79. {seleniumbase-4.37.11 → seleniumbase-4.38.0}/seleniumbase/extensions/disable_csp.zip +0 -0
  80. {seleniumbase-4.37.11 → seleniumbase-4.38.0}/seleniumbase/extensions/recorder.zip +0 -0
  81. {seleniumbase-4.37.11 → seleniumbase-4.38.0}/seleniumbase/extensions/sbase_ext.zip +0 -0
  82. {seleniumbase-4.37.11 → seleniumbase-4.38.0}/seleniumbase/fixtures/__init__.py +0 -0
  83. {seleniumbase-4.37.11 → seleniumbase-4.38.0}/seleniumbase/fixtures/base_case.py +0 -0
  84. {seleniumbase-4.37.11 → seleniumbase-4.38.0}/seleniumbase/fixtures/constants.py +0 -0
  85. {seleniumbase-4.37.11 → seleniumbase-4.38.0}/seleniumbase/fixtures/css_to_xpath.py +0 -0
  86. {seleniumbase-4.37.11 → seleniumbase-4.38.0}/seleniumbase/fixtures/errors.py +0 -0
  87. {seleniumbase-4.37.11 → seleniumbase-4.38.0}/seleniumbase/fixtures/js_utils.py +0 -0
  88. {seleniumbase-4.37.11 → seleniumbase-4.38.0}/seleniumbase/fixtures/page_actions.py +0 -0
  89. {seleniumbase-4.37.11 → seleniumbase-4.38.0}/seleniumbase/fixtures/page_utils.py +0 -0
  90. {seleniumbase-4.37.11 → seleniumbase-4.38.0}/seleniumbase/fixtures/shared_utils.py +0 -0
  91. {seleniumbase-4.37.11 → seleniumbase-4.38.0}/seleniumbase/fixtures/unittest_helper.py +0 -0
  92. {seleniumbase-4.37.11 → seleniumbase-4.38.0}/seleniumbase/fixtures/words.py +0 -0
  93. {seleniumbase-4.37.11 → seleniumbase-4.38.0}/seleniumbase/fixtures/xpath_to_css.py +0 -0
  94. {seleniumbase-4.37.11 → seleniumbase-4.38.0}/seleniumbase/js_code/__init__.py +0 -0
  95. {seleniumbase-4.37.11 → seleniumbase-4.38.0}/seleniumbase/js_code/active_css_js.py +0 -0
  96. {seleniumbase-4.37.11 → seleniumbase-4.38.0}/seleniumbase/js_code/live_js.py +0 -0
  97. {seleniumbase-4.37.11 → seleniumbase-4.38.0}/seleniumbase/js_code/recorder_js.py +0 -0
  98. {seleniumbase-4.37.11 → seleniumbase-4.38.0}/seleniumbase/masterqa/__init__.py +0 -0
  99. {seleniumbase-4.37.11 → seleniumbase-4.38.0}/seleniumbase/masterqa/master_qa.py +0 -0
  100. {seleniumbase-4.37.11 → seleniumbase-4.38.0}/seleniumbase/plugins/__init__.py +0 -0
  101. {seleniumbase-4.37.11 → seleniumbase-4.38.0}/seleniumbase/plugins/base_plugin.py +0 -0
  102. {seleniumbase-4.37.11 → seleniumbase-4.38.0}/seleniumbase/plugins/basic_test_info.py +0 -0
  103. {seleniumbase-4.37.11 → seleniumbase-4.38.0}/seleniumbase/plugins/db_reporting_plugin.py +0 -0
  104. {seleniumbase-4.37.11 → seleniumbase-4.38.0}/seleniumbase/plugins/driver_manager.py +0 -0
  105. {seleniumbase-4.37.11 → seleniumbase-4.38.0}/seleniumbase/plugins/page_source.py +0 -0
  106. {seleniumbase-4.37.11 → seleniumbase-4.38.0}/seleniumbase/plugins/pytest_plugin.py +0 -0
  107. {seleniumbase-4.37.11 → seleniumbase-4.38.0}/seleniumbase/plugins/s3_logging_plugin.py +0 -0
  108. {seleniumbase-4.37.11 → seleniumbase-4.38.0}/seleniumbase/plugins/screen_shots.py +0 -0
  109. {seleniumbase-4.37.11 → seleniumbase-4.38.0}/seleniumbase/plugins/selenium_plugin.py +0 -0
  110. {seleniumbase-4.37.11 → seleniumbase-4.38.0}/seleniumbase/resources/__init__.py +0 -0
  111. {seleniumbase-4.37.11 → seleniumbase-4.38.0}/seleniumbase/translate/__init__.py +0 -0
  112. {seleniumbase-4.37.11 → seleniumbase-4.38.0}/seleniumbase/translate/chinese.py +0 -0
  113. {seleniumbase-4.37.11 → seleniumbase-4.38.0}/seleniumbase/translate/dutch.py +0 -0
  114. {seleniumbase-4.37.11 → seleniumbase-4.38.0}/seleniumbase/translate/french.py +0 -0
  115. {seleniumbase-4.37.11 → seleniumbase-4.38.0}/seleniumbase/translate/italian.py +0 -0
  116. {seleniumbase-4.37.11 → seleniumbase-4.38.0}/seleniumbase/translate/japanese.py +0 -0
  117. {seleniumbase-4.37.11 → seleniumbase-4.38.0}/seleniumbase/translate/korean.py +0 -0
  118. {seleniumbase-4.37.11 → seleniumbase-4.38.0}/seleniumbase/translate/master_dict.py +0 -0
  119. {seleniumbase-4.37.11 → seleniumbase-4.38.0}/seleniumbase/translate/portuguese.py +0 -0
  120. {seleniumbase-4.37.11 → seleniumbase-4.38.0}/seleniumbase/translate/russian.py +0 -0
  121. {seleniumbase-4.37.11 → seleniumbase-4.38.0}/seleniumbase/translate/spanish.py +0 -0
  122. {seleniumbase-4.37.11 → seleniumbase-4.38.0}/seleniumbase/translate/translator.py +0 -0
  123. {seleniumbase-4.37.11 → seleniumbase-4.38.0}/seleniumbase/undetected/__init__.py +0 -0
  124. {seleniumbase-4.37.11 → seleniumbase-4.38.0}/seleniumbase/undetected/cdp.py +0 -0
  125. {seleniumbase-4.37.11 → seleniumbase-4.38.0}/seleniumbase/undetected/cdp_driver/__init__.py +0 -0
  126. {seleniumbase-4.37.11 → seleniumbase-4.38.0}/seleniumbase/undetected/cdp_driver/_contradict.py +0 -0
  127. {seleniumbase-4.37.11 → seleniumbase-4.38.0}/seleniumbase/undetected/cdp_driver/browser.py +0 -0
  128. {seleniumbase-4.37.11 → seleniumbase-4.38.0}/seleniumbase/undetected/cdp_driver/cdp_util.py +0 -0
  129. {seleniumbase-4.37.11 → seleniumbase-4.38.0}/seleniumbase/undetected/cdp_driver/config.py +0 -0
  130. {seleniumbase-4.37.11 → seleniumbase-4.38.0}/seleniumbase/undetected/cdp_driver/element.py +0 -0
  131. {seleniumbase-4.37.11 → seleniumbase-4.38.0}/seleniumbase/undetected/cdp_driver/tab.py +0 -0
  132. {seleniumbase-4.37.11 → seleniumbase-4.38.0}/seleniumbase/undetected/dprocess.py +0 -0
  133. {seleniumbase-4.37.11 → seleniumbase-4.38.0}/seleniumbase/undetected/options.py +0 -0
  134. {seleniumbase-4.37.11 → seleniumbase-4.38.0}/seleniumbase/undetected/patcher.py +0 -0
  135. {seleniumbase-4.37.11 → seleniumbase-4.38.0}/seleniumbase/undetected/reactor.py +0 -0
  136. {seleniumbase-4.37.11 → seleniumbase-4.38.0}/seleniumbase/undetected/webelement.py +0 -0
  137. {seleniumbase-4.37.11 → seleniumbase-4.38.0}/seleniumbase/utilities/__init__.py +0 -0
  138. {seleniumbase-4.37.11 → seleniumbase-4.38.0}/seleniumbase/utilities/selenium_grid/__init__.py +0 -0
  139. {seleniumbase-4.37.11 → seleniumbase-4.38.0}/seleniumbase/utilities/selenium_grid/download_selenium_server.py +0 -0
  140. {seleniumbase-4.37.11 → seleniumbase-4.38.0}/seleniumbase/utilities/selenium_grid/font_color +0 -0
  141. {seleniumbase-4.37.11 → seleniumbase-4.38.0}/seleniumbase/utilities/selenium_grid/grid-hub +0 -0
  142. {seleniumbase-4.37.11 → seleniumbase-4.38.0}/seleniumbase/utilities/selenium_grid/grid-node +0 -0
  143. {seleniumbase-4.37.11 → seleniumbase-4.38.0}/seleniumbase/utilities/selenium_grid/grid_hub.py +0 -0
  144. {seleniumbase-4.37.11 → seleniumbase-4.38.0}/seleniumbase/utilities/selenium_grid/grid_node.py +0 -0
  145. {seleniumbase-4.37.11 → seleniumbase-4.38.0}/seleniumbase/utilities/selenium_grid/register-grid-node.bat +0 -0
  146. {seleniumbase-4.37.11 → seleniumbase-4.38.0}/seleniumbase/utilities/selenium_grid/register-grid-node.sh +0 -0
  147. {seleniumbase-4.37.11 → seleniumbase-4.38.0}/seleniumbase/utilities/selenium_grid/start-grid-hub.bat +0 -0
  148. {seleniumbase-4.37.11 → seleniumbase-4.38.0}/seleniumbase/utilities/selenium_grid/start-grid-hub.sh +0 -0
  149. {seleniumbase-4.37.11 → seleniumbase-4.38.0}/seleniumbase/utilities/selenium_ide/__init__.py +0 -0
  150. {seleniumbase-4.37.11 → seleniumbase-4.38.0}/seleniumbase/utilities/selenium_ide/convert_ide.py +0 -0
  151. {seleniumbase-4.37.11 → seleniumbase-4.38.0}/seleniumbase.egg-info/SOURCES.txt +0 -0
  152. {seleniumbase-4.37.11 → seleniumbase-4.38.0}/seleniumbase.egg-info/dependency_links.txt +0 -0
  153. {seleniumbase-4.37.11 → seleniumbase-4.38.0}/seleniumbase.egg-info/entry_points.txt +0 -0
  154. {seleniumbase-4.37.11 → seleniumbase-4.38.0}/seleniumbase.egg-info/top_level.txt +0 -0
  155. {seleniumbase-4.37.11 → seleniumbase-4.38.0}/setup.cfg +0 -0
  156. {seleniumbase-4.37.11 → seleniumbase-4.38.0}/virtualenv_install.sh +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: seleniumbase
3
- Version: 4.37.11
3
+ Version: 4.38.0
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
@@ -60,7 +60,7 @@ Requires-Python: >=3.8
60
60
  Description-Content-Type: text/markdown
61
61
  License-File: LICENSE
62
62
  Requires-Dist: pip>=25.0.1; python_version < "3.9"
63
- Requires-Dist: pip>=25.1; python_version >= "3.9"
63
+ Requires-Dist: pip>=25.1.1; python_version >= "3.9"
64
64
  Requires-Dist: packaging>=25.0
65
65
  Requires-Dist: setuptools~=70.2; python_version < "3.10"
66
66
  Requires-Dist: setuptools>=80.1.0; python_version >= "3.10"
@@ -93,7 +93,7 @@ Requires-Dist: tabcompleter>=1.4.0
93
93
  Requires-Dist: pdbp>=1.7.0
94
94
  Requires-Dist: idna==3.10
95
95
  Requires-Dist: chardet==5.2.0
96
- Requires-Dist: charset-normalizer==3.4.1
96
+ Requires-Dist: charset-normalizer<4,>=3.4.2
97
97
  Requires-Dist: urllib3<2,>=1.26.20; python_version < "3.10"
98
98
  Requires-Dist: urllib3<2.5.0,>=1.26.20; python_version >= "3.10"
99
99
  Requires-Dist: requests==2.32.3
@@ -106,7 +106,7 @@ Requires-Dist: trio-websocket==0.12.2
106
106
  Requires-Dist: wsproto==1.2.0
107
107
  Requires-Dist: websocket-client==1.8.0
108
108
  Requires-Dist: selenium==4.27.1; python_version < "3.9"
109
- Requires-Dist: selenium==4.31.0; python_version >= "3.9"
109
+ Requires-Dist: selenium==4.32.0; python_version >= "3.9"
110
110
  Requires-Dist: cssselect==1.2.0; python_version < "3.9"
111
111
  Requires-Dist: cssselect==1.3.0; python_version >= "3.9"
112
112
  Requires-Dist: sortedcontainers==2.4.0
@@ -156,7 +156,7 @@ Provides-Extra: pdfminer
156
156
  Requires-Dist: pdfminer.six==20250324; python_version < "3.9" and extra == "pdfminer"
157
157
  Requires-Dist: pdfminer.six==20250416; python_version >= "3.9" and extra == "pdfminer"
158
158
  Requires-Dist: cryptography==39.0.2; python_version < "3.9" and extra == "pdfminer"
159
- Requires-Dist: cryptography==44.0.2; python_version >= "3.9" and extra == "pdfminer"
159
+ Requires-Dist: cryptography==44.0.3; python_version >= "3.9" and extra == "pdfminer"
160
160
  Requires-Dist: cffi==1.17.1; extra == "pdfminer"
161
161
  Requires-Dist: pycparser==2.22; extra == "pdfminer"
162
162
  Provides-Extra: pillow
@@ -1,5 +1,5 @@
1
1
  pip>=25.0.1;python_version<"3.9"
2
- pip>=25.1;python_version>="3.9"
2
+ pip>=25.1.1;python_version>="3.9"
3
3
  packaging>=25.0
4
4
  setuptools~=70.2;python_version<"3.10"
5
5
  setuptools>=80.1.0;python_version>="3.10"
@@ -32,7 +32,7 @@ tabcompleter>=1.4.0
32
32
  pdbp>=1.7.0
33
33
  idna==3.10
34
34
  chardet==5.2.0
35
- charset-normalizer==3.4.1
35
+ charset-normalizer>=3.4.2,<4
36
36
  urllib3>=1.26.20,<2;python_version<"3.10"
37
37
  urllib3>=1.26.20,<2.5.0;python_version>="3.10"
38
38
  requests==2.32.3
@@ -45,7 +45,7 @@ trio-websocket==0.12.2
45
45
  wsproto==1.2.0
46
46
  websocket-client==1.8.0
47
47
  selenium==4.27.1;python_version<"3.9"
48
- selenium==4.31.0;python_version>="3.9"
48
+ selenium==4.32.0;python_version>="3.9"
49
49
  cssselect==1.2.0;python_version<"3.9"
50
50
  cssselect==1.3.0;python_version>="3.9"
51
51
  sortedcontainers==2.4.0
@@ -0,0 +1,2 @@
1
+ # seleniumbase package
2
+ __version__ = "4.38.0"
@@ -519,16 +519,6 @@ 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
532
522
  current_url = None
533
523
  try:
534
524
  current_url = driver.current_url
@@ -553,6 +543,23 @@ def uc_open_with_cdp_mode(driver, url=None, **kwargs):
553
543
  if url_protocol not in ["about", "data", "chrome"]:
554
544
  safe_url = False
555
545
 
546
+ if (
547
+ hasattr(driver, "_is_using_cdp")
548
+ and driver._is_using_cdp
549
+ and hasattr(driver, "cdp")
550
+ and driver.cdp
551
+ and hasattr(driver.cdp, "loop")
552
+ ):
553
+ # CDP Mode was already initialized
554
+ driver.cdp.open(url, **kwargs)
555
+ if not safe_url:
556
+ time.sleep(constants.UC.CDP_MODE_OPEN_WAIT)
557
+ if IS_WINDOWS:
558
+ time.sleep(constants.UC.EXTRA_WINDOWS_WAIT)
559
+ else:
560
+ time.sleep(0.012)
561
+ return
562
+
556
563
  headless = False
557
564
  headed = None
558
565
  xvfb = None
@@ -1369,23 +1369,18 @@ def SB(
1369
1369
  "%s%s%s%s%s"
1370
1370
  % (c1, left_space, end_text, right_space, cr)
1371
1371
  )
1372
- python3_12_or_newer = (sys.version_info >= (3, 12))
1373
- if undetectable:
1372
+ if undetectable and hasattr(sb, "_drivers_browser_map"):
1374
1373
  import asyncio
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
- )
1374
+ for driver in sb._drivers_browser_map.keys():
1375
+ if (
1376
+ hasattr(driver, "cdp")
1377
+ and driver.cdp
1378
+ and hasattr(driver.cdp, "loop")
1379
+ ):
1380
+ asyncio.set_event_loop(driver.cdp.loop)
1381
+ tasks = [tab.aclose() for tab in driver.cdp.get_tabs()]
1382
+ tasks.append(driver.cdp.driver.connection.aclose())
1383
+ driver.cdp.loop.run_until_complete(asyncio.gather(*tasks))
1389
1384
  driver.cdp.loop.close()
1390
1385
  gc.collect()
1391
1386
  if test and test_name and not test_passed and raise_test_failure:
@@ -19,7 +19,6 @@ from typing import (
19
19
  )
20
20
  import websockets
21
21
  from websockets.protocol import State
22
- from seleniumbase import config as sb_config
23
22
  from . import cdp_util as util
24
23
  import mycdp as cdp
25
24
  import mycdp.network
@@ -271,11 +270,10 @@ class Connection(metaclass=CantTouchThis):
271
270
  max_size=MAX_SIZE,
272
271
  )
273
272
  self.listener = Listener(self)
274
- sb_config._cdp_aclose = self.aclose
275
273
  except (Exception,) as e:
276
274
  logger.debug("Exception during opening of websocket: %s", e)
277
275
  if self.listener:
278
- self.listener.cancel()
276
+ await self.listener.cancel()
279
277
  raise
280
278
  if not self.listener or not self.listener.running:
281
279
  self.listener = Listener(self)
@@ -300,7 +298,7 @@ class Connection(metaclass=CantTouchThis):
300
298
  self.websocket_url
301
299
  )
302
300
  if self.listener and self.listener.running:
303
- self.listener.cancel()
301
+ await self.listener.cancel()
304
302
  self.enabled_domains.clear()
305
303
  logger.debug(
306
304
  "\n❌ Closed websocket connection to %s", self.websocket_url
@@ -446,7 +444,6 @@ class Connection(metaclass=CantTouchThis):
446
444
  if not _is_update:
447
445
  await self._register_handlers()
448
446
  await self.websocket.send(tx.message)
449
- sb_config._cdp_aclose = self.aclose
450
447
  try:
451
448
  return await tx
452
449
  except ProtocolException as e:
@@ -557,9 +554,13 @@ class Listener:
557
554
  def time_before_considered_idle(self, seconds: Union[int, float]):
558
555
  self._time_before_considered_idle = seconds
559
556
 
560
- def cancel(self):
557
+ async def cancel(self):
561
558
  if self.task and not self.task.cancelled():
562
559
  self.task.cancel()
560
+ try:
561
+ await self.task
562
+ except asyncio.CancelledError:
563
+ pass
563
564
 
564
565
  @property
565
566
  def running(self):
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: seleniumbase
3
- Version: 4.37.11
3
+ Version: 4.38.0
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
@@ -60,7 +60,7 @@ Requires-Python: >=3.8
60
60
  Description-Content-Type: text/markdown
61
61
  License-File: LICENSE
62
62
  Requires-Dist: pip>=25.0.1; python_version < "3.9"
63
- Requires-Dist: pip>=25.1; python_version >= "3.9"
63
+ Requires-Dist: pip>=25.1.1; python_version >= "3.9"
64
64
  Requires-Dist: packaging>=25.0
65
65
  Requires-Dist: setuptools~=70.2; python_version < "3.10"
66
66
  Requires-Dist: setuptools>=80.1.0; python_version >= "3.10"
@@ -93,7 +93,7 @@ Requires-Dist: tabcompleter>=1.4.0
93
93
  Requires-Dist: pdbp>=1.7.0
94
94
  Requires-Dist: idna==3.10
95
95
  Requires-Dist: chardet==5.2.0
96
- Requires-Dist: charset-normalizer==3.4.1
96
+ Requires-Dist: charset-normalizer<4,>=3.4.2
97
97
  Requires-Dist: urllib3<2,>=1.26.20; python_version < "3.10"
98
98
  Requires-Dist: urllib3<2.5.0,>=1.26.20; python_version >= "3.10"
99
99
  Requires-Dist: requests==2.32.3
@@ -106,7 +106,7 @@ Requires-Dist: trio-websocket==0.12.2
106
106
  Requires-Dist: wsproto==1.2.0
107
107
  Requires-Dist: websocket-client==1.8.0
108
108
  Requires-Dist: selenium==4.27.1; python_version < "3.9"
109
- Requires-Dist: selenium==4.31.0; python_version >= "3.9"
109
+ Requires-Dist: selenium==4.32.0; python_version >= "3.9"
110
110
  Requires-Dist: cssselect==1.2.0; python_version < "3.9"
111
111
  Requires-Dist: cssselect==1.3.0; python_version >= "3.9"
112
112
  Requires-Dist: sortedcontainers==2.4.0
@@ -156,7 +156,7 @@ Provides-Extra: pdfminer
156
156
  Requires-Dist: pdfminer.six==20250324; python_version < "3.9" and extra == "pdfminer"
157
157
  Requires-Dist: pdfminer.six==20250416; python_version >= "3.9" and extra == "pdfminer"
158
158
  Requires-Dist: cryptography==39.0.2; python_version < "3.9" and extra == "pdfminer"
159
- Requires-Dist: cryptography==44.0.2; python_version >= "3.9" and extra == "pdfminer"
159
+ Requires-Dist: cryptography==44.0.3; python_version >= "3.9" and extra == "pdfminer"
160
160
  Requires-Dist: cffi==1.17.1; extra == "pdfminer"
161
161
  Requires-Dist: pycparser==2.22; extra == "pdfminer"
162
162
  Provides-Extra: pillow
@@ -19,7 +19,7 @@ tabcompleter>=1.4.0
19
19
  pdbp>=1.7.0
20
20
  idna==3.10
21
21
  chardet==5.2.0
22
- charset-normalizer==3.4.1
22
+ charset-normalizer<4,>=3.4.2
23
23
  requests==2.32.3
24
24
  sniffio==1.3.1
25
25
  h11==0.16.0
@@ -71,13 +71,13 @@ setuptools>=80.1.0
71
71
  urllib3<2.5.0,>=1.26.20
72
72
 
73
73
  [:python_version >= "3.9"]
74
- pip>=25.1
74
+ pip>=25.1.1
75
75
  websockets>=15.0.1
76
76
  filelock>=3.18.0
77
77
  platformdirs>=4.3.7
78
78
  MarkupSafe>=3.0.2
79
79
  trio==0.30.0
80
- selenium==4.31.0
80
+ selenium==4.32.0
81
81
  cssselect==1.3.0
82
82
  pytest-rerunfailures==15.0
83
83
 
@@ -131,7 +131,7 @@ cryptography==39.0.2
131
131
 
132
132
  [pdfminer:python_version >= "3.9"]
133
133
  pdfminer.six==20250416
134
- cryptography==44.0.2
134
+ cryptography==44.0.3
135
135
 
136
136
  [pillow]
137
137
 
@@ -148,7 +148,7 @@ setup(
148
148
  python_requires=">=3.8",
149
149
  install_requires=[
150
150
  'pip>=25.0.1;python_version<"3.9"',
151
- 'pip>=25.1;python_version>="3.9"',
151
+ 'pip>=25.1.1;python_version>="3.9"',
152
152
  'packaging>=25.0',
153
153
  'setuptools~=70.2;python_version<"3.10"', # Newer ones had issues
154
154
  'setuptools>=80.1.0;python_version>="3.10"',
@@ -181,7 +181,7 @@ setup(
181
181
  "pdbp>=1.7.0",
182
182
  "idna==3.10",
183
183
  'chardet==5.2.0',
184
- 'charset-normalizer==3.4.1',
184
+ 'charset-normalizer>=3.4.2,<4',
185
185
  'urllib3>=1.26.20,<2;python_version<"3.10"',
186
186
  'urllib3>=1.26.20,<2.5.0;python_version>="3.10"',
187
187
  'requests==2.32.3',
@@ -194,7 +194,7 @@ setup(
194
194
  'wsproto==1.2.0',
195
195
  'websocket-client==1.8.0',
196
196
  'selenium==4.27.1;python_version<"3.9"',
197
- 'selenium==4.31.0;python_version>="3.9"',
197
+ 'selenium==4.32.0;python_version>="3.9"',
198
198
  'cssselect==1.2.0;python_version<"3.9"',
199
199
  'cssselect==1.3.0;python_version>="3.9"',
200
200
  "sortedcontainers==2.4.0",
@@ -264,7 +264,7 @@ setup(
264
264
  'pdfminer.six==20250324;python_version<"3.9"',
265
265
  'pdfminer.six==20250416;python_version>="3.9"',
266
266
  'cryptography==39.0.2;python_version<"3.9"',
267
- 'cryptography==44.0.2;python_version>="3.9"',
267
+ 'cryptography==44.0.3;python_version>="3.9"',
268
268
  'cffi==1.17.1',
269
269
  "pycparser==2.22",
270
270
  ],
@@ -1,2 +0,0 @@
1
- # seleniumbase package
2
- __version__ = "4.37.11"
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes