seleniumbase 4.56.5__tar.gz → 4.57.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 (164) hide show
  1. {seleniumbase-4.56.5/seleniumbase.egg-info → seleniumbase-4.57.0}/PKG-INFO +10 -10
  2. {seleniumbase-4.56.5 → seleniumbase-4.57.0}/README.md +3 -3
  3. {seleniumbase-4.56.5 → seleniumbase-4.57.0}/requirements.txt +5 -5
  4. {seleniumbase-4.56.5 → seleniumbase-4.57.0}/seleniumbase/__version__.py +1 -1
  5. {seleniumbase-4.56.5 → seleniumbase-4.57.0}/seleniumbase/core/browser_launcher.py +0 -1
  6. {seleniumbase-4.56.5 → seleniumbase-4.57.0}/seleniumbase/core/sb_cdp.py +5 -2
  7. {seleniumbase-4.56.5 → seleniumbase-4.57.0}/seleniumbase/undetected/cdp_driver/config.py +1 -1
  8. {seleniumbase-4.56.5 → seleniumbase-4.57.0}/seleniumbase/undetected/cdp_driver/tab.py +23 -0
  9. {seleniumbase-4.56.5 → seleniumbase-4.57.0/seleniumbase.egg-info}/PKG-INFO +10 -10
  10. {seleniumbase-4.56.5 → seleniumbase-4.57.0}/seleniumbase.egg-info/requires.txt +6 -6
  11. {seleniumbase-4.56.5 → seleniumbase-4.57.0}/setup.py +6 -6
  12. {seleniumbase-4.56.5 → seleniumbase-4.57.0}/.gitignore +0 -0
  13. {seleniumbase-4.56.5 → seleniumbase-4.57.0}/LICENSE +0 -0
  14. {seleniumbase-4.56.5 → seleniumbase-4.57.0}/MANIFEST.in +0 -0
  15. {seleniumbase-4.56.5 → seleniumbase-4.57.0}/install.sh +0 -0
  16. {seleniumbase-4.56.5 → seleniumbase-4.57.0}/mcp_servers/__init__.py +0 -0
  17. {seleniumbase-4.56.5 → seleniumbase-4.57.0}/mcp_servers/server.py +0 -0
  18. {seleniumbase-4.56.5 → seleniumbase-4.57.0}/pyproject.toml +0 -0
  19. {seleniumbase-4.56.5 → seleniumbase-4.57.0}/pytest.ini +0 -0
  20. {seleniumbase-4.56.5 → seleniumbase-4.57.0}/sbase/__init__.py +0 -0
  21. {seleniumbase-4.56.5 → seleniumbase-4.57.0}/sbase/__main__.py +0 -0
  22. {seleniumbase-4.56.5 → seleniumbase-4.57.0}/sbase/steps.py +0 -0
  23. {seleniumbase-4.56.5 → seleniumbase-4.57.0}/seleniumbase/__init__.py +0 -0
  24. {seleniumbase-4.56.5 → seleniumbase-4.57.0}/seleniumbase/__main__.py +0 -0
  25. {seleniumbase-4.56.5 → seleniumbase-4.57.0}/seleniumbase/behave/__init__.py +0 -0
  26. {seleniumbase-4.56.5 → seleniumbase-4.57.0}/seleniumbase/behave/behave_helper.py +0 -0
  27. {seleniumbase-4.56.5 → seleniumbase-4.57.0}/seleniumbase/behave/behave_sb.py +0 -0
  28. {seleniumbase-4.56.5 → seleniumbase-4.57.0}/seleniumbase/behave/steps.py +0 -0
  29. {seleniumbase-4.56.5 → seleniumbase-4.57.0}/seleniumbase/common/__init__.py +0 -0
  30. {seleniumbase-4.56.5 → seleniumbase-4.57.0}/seleniumbase/common/decorators.py +0 -0
  31. {seleniumbase-4.56.5 → seleniumbase-4.57.0}/seleniumbase/common/encryption.py +0 -0
  32. {seleniumbase-4.56.5 → seleniumbase-4.57.0}/seleniumbase/common/exceptions.py +0 -0
  33. {seleniumbase-4.56.5 → seleniumbase-4.57.0}/seleniumbase/common/obfuscate.py +0 -0
  34. {seleniumbase-4.56.5 → seleniumbase-4.57.0}/seleniumbase/common/unobfuscate.py +0 -0
  35. {seleniumbase-4.56.5 → seleniumbase-4.57.0}/seleniumbase/config/__init__.py +0 -0
  36. {seleniumbase-4.56.5 → seleniumbase-4.57.0}/seleniumbase/config/ad_block_list.py +0 -0
  37. {seleniumbase-4.56.5 → seleniumbase-4.57.0}/seleniumbase/config/proxy_list.py +0 -0
  38. {seleniumbase-4.56.5 → seleniumbase-4.57.0}/seleniumbase/config/settings.py +0 -0
  39. {seleniumbase-4.56.5 → seleniumbase-4.57.0}/seleniumbase/console_scripts/__init__.py +0 -0
  40. {seleniumbase-4.56.5 → seleniumbase-4.57.0}/seleniumbase/console_scripts/logo_helper.py +0 -0
  41. {seleniumbase-4.56.5 → seleniumbase-4.57.0}/seleniumbase/console_scripts/rich_helper.py +0 -0
  42. {seleniumbase-4.56.5 → seleniumbase-4.57.0}/seleniumbase/console_scripts/run.py +0 -0
  43. {seleniumbase-4.56.5 → seleniumbase-4.57.0}/seleniumbase/console_scripts/sb_behave_gui.py +0 -0
  44. {seleniumbase-4.56.5 → seleniumbase-4.57.0}/seleniumbase/console_scripts/sb_caseplans.py +0 -0
  45. {seleniumbase-4.56.5 → seleniumbase-4.57.0}/seleniumbase/console_scripts/sb_commander.py +0 -0
  46. {seleniumbase-4.56.5 → seleniumbase-4.57.0}/seleniumbase/console_scripts/sb_install.py +0 -0
  47. {seleniumbase-4.56.5 → seleniumbase-4.57.0}/seleniumbase/console_scripts/sb_mkchart.py +0 -0
  48. {seleniumbase-4.56.5 → seleniumbase-4.57.0}/seleniumbase/console_scripts/sb_mkdir.py +0 -0
  49. {seleniumbase-4.56.5 → seleniumbase-4.57.0}/seleniumbase/console_scripts/sb_mkfile.py +0 -0
  50. {seleniumbase-4.56.5 → seleniumbase-4.57.0}/seleniumbase/console_scripts/sb_mkpres.py +0 -0
  51. {seleniumbase-4.56.5 → seleniumbase-4.57.0}/seleniumbase/console_scripts/sb_mkrec.py +0 -0
  52. {seleniumbase-4.56.5 → seleniumbase-4.57.0}/seleniumbase/console_scripts/sb_objectify.py +0 -0
  53. {seleniumbase-4.56.5 → seleniumbase-4.57.0}/seleniumbase/console_scripts/sb_print.py +0 -0
  54. {seleniumbase-4.56.5 → seleniumbase-4.57.0}/seleniumbase/console_scripts/sb_recorder.py +0 -0
  55. {seleniumbase-4.56.5 → seleniumbase-4.57.0}/seleniumbase/core/__init__.py +0 -0
  56. {seleniumbase-4.56.5 → seleniumbase-4.57.0}/seleniumbase/core/application_manager.py +0 -0
  57. {seleniumbase-4.56.5 → seleniumbase-4.57.0}/seleniumbase/core/capabilities_parser.py +0 -0
  58. {seleniumbase-4.56.5 → seleniumbase-4.57.0}/seleniumbase/core/colored_traceback.py +0 -0
  59. {seleniumbase-4.56.5 → seleniumbase-4.57.0}/seleniumbase/core/create_db_tables.sql +0 -0
  60. {seleniumbase-4.56.5 → seleniumbase-4.57.0}/seleniumbase/core/detect_b_ver.py +0 -0
  61. {seleniumbase-4.56.5 → seleniumbase-4.57.0}/seleniumbase/core/download_helper.py +0 -0
  62. {seleniumbase-4.56.5 → seleniumbase-4.57.0}/seleniumbase/core/encoded_images.py +0 -0
  63. {seleniumbase-4.56.5 → seleniumbase-4.57.0}/seleniumbase/core/jqc_helper.py +0 -0
  64. {seleniumbase-4.56.5 → seleniumbase-4.57.0}/seleniumbase/core/log_helper.py +0 -0
  65. {seleniumbase-4.56.5 → seleniumbase-4.57.0}/seleniumbase/core/mysql.py +0 -0
  66. {seleniumbase-4.56.5 → seleniumbase-4.57.0}/seleniumbase/core/nest_asyncio.py +0 -0
  67. {seleniumbase-4.56.5 → seleniumbase-4.57.0}/seleniumbase/core/proxy_helper.py +0 -0
  68. {seleniumbase-4.56.5 → seleniumbase-4.57.0}/seleniumbase/core/recorder_helper.py +0 -0
  69. {seleniumbase-4.56.5 → seleniumbase-4.57.0}/seleniumbase/core/report_helper.py +0 -0
  70. {seleniumbase-4.56.5 → seleniumbase-4.57.0}/seleniumbase/core/s3_manager.py +0 -0
  71. {seleniumbase-4.56.5 → seleniumbase-4.57.0}/seleniumbase/core/sb_driver.py +0 -0
  72. {seleniumbase-4.56.5 → seleniumbase-4.57.0}/seleniumbase/core/session_helper.py +0 -0
  73. {seleniumbase-4.56.5 → seleniumbase-4.57.0}/seleniumbase/core/settings_parser.py +0 -0
  74. {seleniumbase-4.56.5 → seleniumbase-4.57.0}/seleniumbase/core/style_sheet.py +0 -0
  75. {seleniumbase-4.56.5 → seleniumbase-4.57.0}/seleniumbase/core/testcase_manager.py +0 -0
  76. {seleniumbase-4.56.5 → seleniumbase-4.57.0}/seleniumbase/core/tour_helper.py +0 -0
  77. {seleniumbase-4.56.5 → seleniumbase-4.57.0}/seleniumbase/core/visual_helper.py +0 -0
  78. {seleniumbase-4.56.5 → seleniumbase-4.57.0}/seleniumbase/drivers/__init__.py +0 -0
  79. {seleniumbase-4.56.5 → seleniumbase-4.57.0}/seleniumbase/drivers/brave_drivers/__init__.py +0 -0
  80. {seleniumbase-4.56.5 → seleniumbase-4.57.0}/seleniumbase/drivers/cft_drivers/__init__.py +0 -0
  81. {seleniumbase-4.56.5 → seleniumbase-4.57.0}/seleniumbase/drivers/chromium_drivers/__init__.py +0 -0
  82. {seleniumbase-4.56.5 → seleniumbase-4.57.0}/seleniumbase/drivers/chs_drivers/__init__.py +0 -0
  83. {seleniumbase-4.56.5 → seleniumbase-4.57.0}/seleniumbase/drivers/comet_drivers/__init__.py +0 -0
  84. {seleniumbase-4.56.5 → seleniumbase-4.57.0}/seleniumbase/drivers/opera_drivers/__init__.py +0 -0
  85. {seleniumbase-4.56.5 → seleniumbase-4.57.0}/seleniumbase/extensions/__init__.py +0 -0
  86. {seleniumbase-4.56.5 → seleniumbase-4.57.0}/seleniumbase/extensions/ad_block.zip +0 -0
  87. {seleniumbase-4.56.5 → seleniumbase-4.57.0}/seleniumbase/extensions/disable_csp.zip +0 -0
  88. {seleniumbase-4.56.5 → seleniumbase-4.57.0}/seleniumbase/extensions/recorder.zip +0 -0
  89. {seleniumbase-4.56.5 → seleniumbase-4.57.0}/seleniumbase/extensions/sbase_ext.zip +0 -0
  90. {seleniumbase-4.56.5 → seleniumbase-4.57.0}/seleniumbase/fixtures/__init__.py +0 -0
  91. {seleniumbase-4.56.5 → seleniumbase-4.57.0}/seleniumbase/fixtures/base_case.py +0 -0
  92. {seleniumbase-4.56.5 → seleniumbase-4.57.0}/seleniumbase/fixtures/constants.py +0 -0
  93. {seleniumbase-4.56.5 → seleniumbase-4.57.0}/seleniumbase/fixtures/css_to_xpath.py +0 -0
  94. {seleniumbase-4.56.5 → seleniumbase-4.57.0}/seleniumbase/fixtures/errors.py +0 -0
  95. {seleniumbase-4.56.5 → seleniumbase-4.57.0}/seleniumbase/fixtures/js_utils.py +0 -0
  96. {seleniumbase-4.56.5 → seleniumbase-4.57.0}/seleniumbase/fixtures/page_actions.py +0 -0
  97. {seleniumbase-4.56.5 → seleniumbase-4.57.0}/seleniumbase/fixtures/page_utils.py +0 -0
  98. {seleniumbase-4.56.5 → seleniumbase-4.57.0}/seleniumbase/fixtures/shared_utils.py +0 -0
  99. {seleniumbase-4.56.5 → seleniumbase-4.57.0}/seleniumbase/fixtures/unittest_helper.py +0 -0
  100. {seleniumbase-4.56.5 → seleniumbase-4.57.0}/seleniumbase/fixtures/words.py +0 -0
  101. {seleniumbase-4.56.5 → seleniumbase-4.57.0}/seleniumbase/fixtures/xpath_to_css.py +0 -0
  102. {seleniumbase-4.56.5 → seleniumbase-4.57.0}/seleniumbase/js_code/__init__.py +0 -0
  103. {seleniumbase-4.56.5 → seleniumbase-4.57.0}/seleniumbase/js_code/active_css_js.py +0 -0
  104. {seleniumbase-4.56.5 → seleniumbase-4.57.0}/seleniumbase/js_code/live_js.py +0 -0
  105. {seleniumbase-4.56.5 → seleniumbase-4.57.0}/seleniumbase/js_code/recorder_js.py +0 -0
  106. {seleniumbase-4.56.5 → seleniumbase-4.57.0}/seleniumbase/masterqa/__init__.py +0 -0
  107. {seleniumbase-4.56.5 → seleniumbase-4.57.0}/seleniumbase/masterqa/master_qa.py +0 -0
  108. {seleniumbase-4.56.5 → seleniumbase-4.57.0}/seleniumbase/plugins/__init__.py +0 -0
  109. {seleniumbase-4.56.5 → seleniumbase-4.57.0}/seleniumbase/plugins/base_plugin.py +0 -0
  110. {seleniumbase-4.56.5 → seleniumbase-4.57.0}/seleniumbase/plugins/basic_test_info.py +0 -0
  111. {seleniumbase-4.56.5 → seleniumbase-4.57.0}/seleniumbase/plugins/db_reporting_plugin.py +0 -0
  112. {seleniumbase-4.56.5 → seleniumbase-4.57.0}/seleniumbase/plugins/driver_manager.py +0 -0
  113. {seleniumbase-4.56.5 → seleniumbase-4.57.0}/seleniumbase/plugins/page_source.py +0 -0
  114. {seleniumbase-4.56.5 → seleniumbase-4.57.0}/seleniumbase/plugins/pytest_plugin.py +0 -0
  115. {seleniumbase-4.56.5 → seleniumbase-4.57.0}/seleniumbase/plugins/s3_logging_plugin.py +0 -0
  116. {seleniumbase-4.56.5 → seleniumbase-4.57.0}/seleniumbase/plugins/sb_manager.py +0 -0
  117. {seleniumbase-4.56.5 → seleniumbase-4.57.0}/seleniumbase/plugins/screen_shots.py +0 -0
  118. {seleniumbase-4.56.5 → seleniumbase-4.57.0}/seleniumbase/plugins/selenium_plugin.py +0 -0
  119. {seleniumbase-4.56.5 → seleniumbase-4.57.0}/seleniumbase/resources/__init__.py +0 -0
  120. {seleniumbase-4.56.5 → seleniumbase-4.57.0}/seleniumbase/translate/__init__.py +0 -0
  121. {seleniumbase-4.56.5 → seleniumbase-4.57.0}/seleniumbase/translate/chinese.py +0 -0
  122. {seleniumbase-4.56.5 → seleniumbase-4.57.0}/seleniumbase/translate/dutch.py +0 -0
  123. {seleniumbase-4.56.5 → seleniumbase-4.57.0}/seleniumbase/translate/french.py +0 -0
  124. {seleniumbase-4.56.5 → seleniumbase-4.57.0}/seleniumbase/translate/italian.py +0 -0
  125. {seleniumbase-4.56.5 → seleniumbase-4.57.0}/seleniumbase/translate/japanese.py +0 -0
  126. {seleniumbase-4.56.5 → seleniumbase-4.57.0}/seleniumbase/translate/korean.py +0 -0
  127. {seleniumbase-4.56.5 → seleniumbase-4.57.0}/seleniumbase/translate/master_dict.py +0 -0
  128. {seleniumbase-4.56.5 → seleniumbase-4.57.0}/seleniumbase/translate/portuguese.py +0 -0
  129. {seleniumbase-4.56.5 → seleniumbase-4.57.0}/seleniumbase/translate/russian.py +0 -0
  130. {seleniumbase-4.56.5 → seleniumbase-4.57.0}/seleniumbase/translate/spanish.py +0 -0
  131. {seleniumbase-4.56.5 → seleniumbase-4.57.0}/seleniumbase/translate/translator.py +0 -0
  132. {seleniumbase-4.56.5 → seleniumbase-4.57.0}/seleniumbase/undetected/__init__.py +0 -0
  133. {seleniumbase-4.56.5 → seleniumbase-4.57.0}/seleniumbase/undetected/cdp.py +0 -0
  134. {seleniumbase-4.56.5 → seleniumbase-4.57.0}/seleniumbase/undetected/cdp_driver/__init__.py +0 -0
  135. {seleniumbase-4.56.5 → seleniumbase-4.57.0}/seleniumbase/undetected/cdp_driver/_contradict.py +0 -0
  136. {seleniumbase-4.56.5 → seleniumbase-4.57.0}/seleniumbase/undetected/cdp_driver/browser.py +0 -0
  137. {seleniumbase-4.56.5 → seleniumbase-4.57.0}/seleniumbase/undetected/cdp_driver/cdp_util.py +0 -0
  138. {seleniumbase-4.56.5 → seleniumbase-4.57.0}/seleniumbase/undetected/cdp_driver/connection.py +0 -0
  139. {seleniumbase-4.56.5 → seleniumbase-4.57.0}/seleniumbase/undetected/cdp_driver/element.py +0 -0
  140. {seleniumbase-4.56.5 → seleniumbase-4.57.0}/seleniumbase/undetected/dprocess.py +0 -0
  141. {seleniumbase-4.56.5 → seleniumbase-4.57.0}/seleniumbase/undetected/options.py +0 -0
  142. {seleniumbase-4.56.5 → seleniumbase-4.57.0}/seleniumbase/undetected/patcher.py +0 -0
  143. {seleniumbase-4.56.5 → seleniumbase-4.57.0}/seleniumbase/undetected/reactor.py +0 -0
  144. {seleniumbase-4.56.5 → seleniumbase-4.57.0}/seleniumbase/undetected/webelement.py +0 -0
  145. {seleniumbase-4.56.5 → seleniumbase-4.57.0}/seleniumbase/utilities/__init__.py +0 -0
  146. {seleniumbase-4.56.5 → seleniumbase-4.57.0}/seleniumbase/utilities/selenium_grid/__init__.py +0 -0
  147. {seleniumbase-4.56.5 → seleniumbase-4.57.0}/seleniumbase/utilities/selenium_grid/download_selenium_server.py +0 -0
  148. {seleniumbase-4.56.5 → seleniumbase-4.57.0}/seleniumbase/utilities/selenium_grid/font_color +0 -0
  149. {seleniumbase-4.56.5 → seleniumbase-4.57.0}/seleniumbase/utilities/selenium_grid/grid-hub +0 -0
  150. {seleniumbase-4.56.5 → seleniumbase-4.57.0}/seleniumbase/utilities/selenium_grid/grid-node +0 -0
  151. {seleniumbase-4.56.5 → seleniumbase-4.57.0}/seleniumbase/utilities/selenium_grid/grid_hub.py +0 -0
  152. {seleniumbase-4.56.5 → seleniumbase-4.57.0}/seleniumbase/utilities/selenium_grid/grid_node.py +0 -0
  153. {seleniumbase-4.56.5 → seleniumbase-4.57.0}/seleniumbase/utilities/selenium_grid/register-grid-node.bat +0 -0
  154. {seleniumbase-4.56.5 → seleniumbase-4.57.0}/seleniumbase/utilities/selenium_grid/register-grid-node.sh +0 -0
  155. {seleniumbase-4.56.5 → seleniumbase-4.57.0}/seleniumbase/utilities/selenium_grid/start-grid-hub.bat +0 -0
  156. {seleniumbase-4.56.5 → seleniumbase-4.57.0}/seleniumbase/utilities/selenium_grid/start-grid-hub.sh +0 -0
  157. {seleniumbase-4.56.5 → seleniumbase-4.57.0}/seleniumbase/utilities/selenium_ide/__init__.py +0 -0
  158. {seleniumbase-4.56.5 → seleniumbase-4.57.0}/seleniumbase/utilities/selenium_ide/convert_ide.py +0 -0
  159. {seleniumbase-4.56.5 → seleniumbase-4.57.0}/seleniumbase.egg-info/SOURCES.txt +0 -0
  160. {seleniumbase-4.56.5 → seleniumbase-4.57.0}/seleniumbase.egg-info/dependency_links.txt +0 -0
  161. {seleniumbase-4.56.5 → seleniumbase-4.57.0}/seleniumbase.egg-info/entry_points.txt +0 -0
  162. {seleniumbase-4.56.5 → seleniumbase-4.57.0}/seleniumbase.egg-info/top_level.txt +0 -0
  163. {seleniumbase-4.56.5 → seleniumbase-4.57.0}/setup.cfg +0 -0
  164. {seleniumbase-4.56.5 → seleniumbase-4.57.0}/virtualenv_install.sh +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: seleniumbase
3
- Version: 4.56.5
3
+ Version: 4.57.0
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
@@ -58,7 +58,7 @@ Classifier: Topic :: Utilities
58
58
  Requires-Python: >=3.10
59
59
  Description-Content-Type: text/markdown
60
60
  License-File: LICENSE
61
- Requires-Dist: pip>=26.2.2
61
+ Requires-Dist: pip>=26.3
62
62
  Requires-Dist: packaging>=26.3
63
63
  Requires-Dist: setuptools>=84.2.1
64
64
  Requires-Dist: wheel>=0.48.0
@@ -66,9 +66,9 @@ Requires-Dist: attrs>=26.1.0
66
66
  Requires-Dist: certifi>=2026.10.23
67
67
  Requires-Dist: exceptiongroup>=1.3.1
68
68
  Requires-Dist: websockets~=16.1.1; python_version == "3.10"
69
- Requires-Dist: websockets>=17.3; python_version >= "3.11"
69
+ Requires-Dist: websockets>=17.4; python_version >= "3.11"
70
70
  Requires-Dist: filelock==4.1.0; python_version == "3.10"
71
- Requires-Dist: filelock>=4.2.4; python_version >= "3.11"
71
+ Requires-Dist: filelock>=4.2.7; python_version >= "3.11"
72
72
  Requires-Dist: fasteners>=0.20
73
73
  Requires-Dist: mycdp>=1.4.0
74
74
  Requires-Dist: pynose>=1.5.5
@@ -93,11 +93,11 @@ Requires-Dist: requests~=2.34.2
93
93
  Requires-Dist: sniffio==1.3.1
94
94
  Requires-Dist: h11==0.16.0
95
95
  Requires-Dist: outcome==1.3.0.post0
96
- Requires-Dist: trio<1,>=0.34.0
96
+ Requires-Dist: trio<1,>=0.35.0
97
97
  Requires-Dist: trio-websocket~=0.12.2
98
98
  Requires-Dist: wsproto~=1.3.2
99
99
  Requires-Dist: websocket-client~=1.9.2
100
- Requires-Dist: selenium==4.51.0
100
+ Requires-Dist: selenium==4.52.0
101
101
  Requires-Dist: cssselect~=1.5.0; python_version < "3.11"
102
102
  Requires-Dist: cssselect<2,>=1.6.0; python_version >= "3.11"
103
103
  Requires-Dist: sortedcontainers==2.4.0
@@ -164,7 +164,7 @@ Requires-Dist: pyee>=14.0.0; python_version >= "3.12" and extra == "playwright"
164
164
  Provides-Extra: pyautogui
165
165
  Requires-Dist: PyAutoGUI>=0.9.54; platform_system != "Linux" and extra == "pyautogui"
166
166
  Provides-Extra: uv
167
- Requires-Dist: uv>=0.13.6; extra == "uv"
167
+ Requires-Dist: uv>=0.13.7; extra == "uv"
168
168
  Dynamic: author
169
169
  Dynamic: author-email
170
170
  Dynamic: classifier
@@ -191,7 +191,7 @@ Dynamic: summary
191
191
 
192
192
  <h1 align="center">📊 SeleniumBase</h1>
193
193
 
194
- <h3 align="center">One framework for browser automation, web scraping, and testing.<br /></h3>
194
+ <h3 align="center">APIs for Web Scraping, Browser Automation, and E2E Testing.<br /></h3>
195
195
 
196
196
  <p align="center"><b align="center">Includes stealth options for bypassing bot-detection and CAPTCHAs.<br /></b></p>
197
197
 
@@ -241,9 +241,9 @@ Dynamic: summary
241
241
 
242
242
  --------
243
243
 
244
- 🥷 <a translate="no" href="https://github.com/seleniumbase/SeleniumBase/blob/master/help_docs/uc_mode.md"><a translate="no" href="https://github.com/seleniumbase/SeleniumBase/blob/master/examples/cdp_mode/ReadMe.md"><b>CDP Mode</b></a> makes browser automation undetectable to anti-bot services and <a href="https://github.com/seleniumbase/SeleniumBase/blob/master/examples/cdp_mode/playwright/ReadMe.md">adds <b>stealth</b> to stock <span translate="no">Playwright</span></a>. Also includes code for bypassing CAPTCHAs.
244
+ 🐙 <a translate="no" href="https://github.com/seleniumbase/SeleniumBase/blob/master/help_docs/uc_mode.md"><a translate="no" href="https://github.com/seleniumbase/SeleniumBase/blob/master/examples/cdp_mode/ReadMe.md"><b>CDP Mode</b></a> bypasses bot-detection and <a href="https://github.com/seleniumbase/SeleniumBase/blob/master/examples/cdp_mode/playwright/ReadMe.md">makes <span translate="no">Playwright</span> stealthy</a>.
245
245
 
246
- 📚 Example scripts that start or end with "<code>test</code>" are specifically designed to be run with <code><b>pytest</b></code>. Other scripts run directly with raw <code><b>python</b></code>. (Those start with "<code>raw</code>" to avoid confusion.)
246
+ ℹ️ Example scripts that start or end with "<code>test</code>" run with <code><b>pytest</b></code>. Other scripts run directly with raw <code><b>python</b></code> (and start with "<code>raw</code>" to avoid confusion).
247
247
 
248
248
  --------
249
249
 
@@ -10,7 +10,7 @@
10
10
 
11
11
  <h1 align="center">📊 SeleniumBase</h1>
12
12
 
13
- <h3 align="center">One framework for browser automation, web scraping, and testing.<br /></h3>
13
+ <h3 align="center">APIs for Web Scraping, Browser Automation, and E2E Testing.<br /></h3>
14
14
 
15
15
  <p align="center"><b align="center">Includes stealth options for bypassing bot-detection and CAPTCHAs.<br /></b></p>
16
16
 
@@ -60,9 +60,9 @@
60
60
 
61
61
  --------
62
62
 
63
- 🥷 <a translate="no" href="https://github.com/seleniumbase/SeleniumBase/blob/master/help_docs/uc_mode.md"><a translate="no" href="https://github.com/seleniumbase/SeleniumBase/blob/master/examples/cdp_mode/ReadMe.md"><b>CDP Mode</b></a> makes browser automation undetectable to anti-bot services and <a href="https://github.com/seleniumbase/SeleniumBase/blob/master/examples/cdp_mode/playwright/ReadMe.md">adds <b>stealth</b> to stock <span translate="no">Playwright</span></a>. Also includes code for bypassing CAPTCHAs.
63
+ 🐙 <a translate="no" href="https://github.com/seleniumbase/SeleniumBase/blob/master/help_docs/uc_mode.md"><a translate="no" href="https://github.com/seleniumbase/SeleniumBase/blob/master/examples/cdp_mode/ReadMe.md"><b>CDP Mode</b></a> bypasses bot-detection and <a href="https://github.com/seleniumbase/SeleniumBase/blob/master/examples/cdp_mode/playwright/ReadMe.md">makes <span translate="no">Playwright</span> stealthy</a>.
64
64
 
65
- 📚 Example scripts that start or end with "<code>test</code>" are specifically designed to be run with <code><b>pytest</b></code>. Other scripts run directly with raw <code><b>python</b></code>. (Those start with "<code>raw</code>" to avoid confusion.)
65
+ ℹ️ Example scripts that start or end with "<code>test</code>" run with <code><b>pytest</b></code>. Other scripts run directly with raw <code><b>python</b></code> (and start with "<code>raw</code>" to avoid confusion).
66
66
 
67
67
  --------
68
68
 
@@ -1,4 +1,4 @@
1
- pip>=26.2.2
1
+ pip>=26.3
2
2
  packaging>=26.3
3
3
  setuptools>=84.2.1
4
4
  wheel>=0.48.0
@@ -6,9 +6,9 @@ attrs>=26.1.0
6
6
  certifi>=2026.10.23
7
7
  exceptiongroup>=1.3.1
8
8
  websockets~=16.1.1;python_version=="3.10"
9
- websockets>=17.3;python_version>="3.11"
9
+ websockets>=17.4;python_version>="3.11"
10
10
  filelock==4.1.0;python_version=="3.10"
11
- filelock>=4.2.4;python_version>="3.11"
11
+ filelock>=4.2.7;python_version>="3.11"
12
12
  fasteners>=0.20
13
13
  mycdp>=1.4.0
14
14
  pynose>=1.5.5
@@ -33,11 +33,11 @@ requests~=2.34.2
33
33
  sniffio==1.3.1
34
34
  h11==0.16.0
35
35
  outcome==1.3.0.post0
36
- trio>=0.34.0,<1
36
+ trio>=0.35.0,<1
37
37
  trio-websocket~=0.12.2
38
38
  wsproto~=1.3.2
39
39
  websocket-client~=1.9.2
40
- selenium==4.51.0
40
+ selenium==4.52.0
41
41
  cssselect~=1.5.0;python_version<"3.11"
42
42
  cssselect>=1.6.0,<2;python_version>="3.11"
43
43
  sortedcontainers==2.4.0
@@ -1,2 +1,2 @@
1
1
  # seleniumbase package
2
- __version__ = "4.56.5"
2
+ __version__ = "4.57.0"
@@ -2828,7 +2828,6 @@ def _set_chrome_options(
2828
2828
  included_disabled_features.append("NetworkPrediction")
2829
2829
  included_disabled_features.append("WebAuthentication")
2830
2830
  included_disabled_features.append("PasskeyAuth")
2831
- included_disabled_features.append("MediaRouter")
2832
2831
  included_disabled_features.append("DialMediaRouteProvider")
2833
2832
  included_disabled_features.append("WebRtcHideLocalIpsWithMdns")
2834
2833
  if is_using_uc(undetectable, browser_name):
@@ -1931,11 +1931,14 @@ class CDPMethods():
1931
1931
  raise KeyError(attribute)
1932
1932
  return value
1933
1933
 
1934
- def get_attribute(self, selector, attribute):
1934
+ def get_attribute(self, selector, attribute, timeout=None):
1935
1935
  """Find an element and return the value of an attribute.
1936
1936
  If the element doesn't exist: Raises an exception.
1937
1937
  If the attribute doesn't exist: Returns None."""
1938
- return self.find_element(selector).get_attribute(attribute)
1938
+ if not timeout:
1939
+ timeout = settings.SMALL_TIMEOUT
1940
+ element = self.find_element(selector, timeout=timeout)
1941
+ return element.get_attribute(attribute)
1939
1942
 
1940
1943
  def get_element_html(self, selector, timeout=None):
1941
1944
  """Find an element and return the outerHTML."""
@@ -327,7 +327,7 @@ class Config:
327
327
  "ComponentUpdater,NetworkPrediction,"
328
328
  "DisableLoadExtensionCommandLineSwitch,WebAuthentication,"
329
329
  "OmniboxUIFeedback,OmniboxPopupShortcut,PasskeyAuth,"
330
- "MediaRouter,DialMediaRouteProvider,WebRtcHideLocalIpsWithMdns"
330
+ "DialMediaRouteProvider,WebRtcHideLocalIpsWithMdns"
331
331
  ]
332
332
  if self.expert:
333
333
  args += [
@@ -129,6 +129,22 @@ class Tab(Connection):
129
129
  """
130
130
  browser: cdp_browser.Browser
131
131
  _download_behavior: list[str] = None
132
+ _promise_prefixes = (
133
+ "new Promise(",
134
+ "Promise.resolve(",
135
+ "Promise.reject(",
136
+ "Promise.all(",
137
+ "Promise.race(",
138
+ "Promise.allSettled(",
139
+ "Promise.any(",
140
+ "Promise.withResolvers(",
141
+ "fetch(",
142
+ "async ",
143
+ "(async ",
144
+ "await ",
145
+ "(await ",
146
+ "import(",
147
+ )
132
148
 
133
149
  def __init__(
134
150
  self,
@@ -720,6 +736,13 @@ class Tab(Connection):
720
736
  async def evaluate(
721
737
  self, expression: str, await_promise=False, return_by_value=True
722
738
  ):
739
+ expression = expression.strip()
740
+ if (
741
+ expression
742
+ and not await_promise
743
+ and expression.startswith(self._promise_prefixes)
744
+ ):
745
+ await_promise = True
723
746
  remote_object, errors = await self.send(
724
747
  cdp.runtime.evaluate(
725
748
  expression=expression,
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: seleniumbase
3
- Version: 4.56.5
3
+ Version: 4.57.0
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
@@ -58,7 +58,7 @@ Classifier: Topic :: Utilities
58
58
  Requires-Python: >=3.10
59
59
  Description-Content-Type: text/markdown
60
60
  License-File: LICENSE
61
- Requires-Dist: pip>=26.2.2
61
+ Requires-Dist: pip>=26.3
62
62
  Requires-Dist: packaging>=26.3
63
63
  Requires-Dist: setuptools>=84.2.1
64
64
  Requires-Dist: wheel>=0.48.0
@@ -66,9 +66,9 @@ Requires-Dist: attrs>=26.1.0
66
66
  Requires-Dist: certifi>=2026.10.23
67
67
  Requires-Dist: exceptiongroup>=1.3.1
68
68
  Requires-Dist: websockets~=16.1.1; python_version == "3.10"
69
- Requires-Dist: websockets>=17.3; python_version >= "3.11"
69
+ Requires-Dist: websockets>=17.4; python_version >= "3.11"
70
70
  Requires-Dist: filelock==4.1.0; python_version == "3.10"
71
- Requires-Dist: filelock>=4.2.4; python_version >= "3.11"
71
+ Requires-Dist: filelock>=4.2.7; python_version >= "3.11"
72
72
  Requires-Dist: fasteners>=0.20
73
73
  Requires-Dist: mycdp>=1.4.0
74
74
  Requires-Dist: pynose>=1.5.5
@@ -93,11 +93,11 @@ Requires-Dist: requests~=2.34.2
93
93
  Requires-Dist: sniffio==1.3.1
94
94
  Requires-Dist: h11==0.16.0
95
95
  Requires-Dist: outcome==1.3.0.post0
96
- Requires-Dist: trio<1,>=0.34.0
96
+ Requires-Dist: trio<1,>=0.35.0
97
97
  Requires-Dist: trio-websocket~=0.12.2
98
98
  Requires-Dist: wsproto~=1.3.2
99
99
  Requires-Dist: websocket-client~=1.9.2
100
- Requires-Dist: selenium==4.51.0
100
+ Requires-Dist: selenium==4.52.0
101
101
  Requires-Dist: cssselect~=1.5.0; python_version < "3.11"
102
102
  Requires-Dist: cssselect<2,>=1.6.0; python_version >= "3.11"
103
103
  Requires-Dist: sortedcontainers==2.4.0
@@ -164,7 +164,7 @@ Requires-Dist: pyee>=14.0.0; python_version >= "3.12" and extra == "playwright"
164
164
  Provides-Extra: pyautogui
165
165
  Requires-Dist: PyAutoGUI>=0.9.54; platform_system != "Linux" and extra == "pyautogui"
166
166
  Provides-Extra: uv
167
- Requires-Dist: uv>=0.13.6; extra == "uv"
167
+ Requires-Dist: uv>=0.13.7; extra == "uv"
168
168
  Dynamic: author
169
169
  Dynamic: author-email
170
170
  Dynamic: classifier
@@ -191,7 +191,7 @@ Dynamic: summary
191
191
 
192
192
  <h1 align="center">📊 SeleniumBase</h1>
193
193
 
194
- <h3 align="center">One framework for browser automation, web scraping, and testing.<br /></h3>
194
+ <h3 align="center">APIs for Web Scraping, Browser Automation, and E2E Testing.<br /></h3>
195
195
 
196
196
  <p align="center"><b align="center">Includes stealth options for bypassing bot-detection and CAPTCHAs.<br /></b></p>
197
197
 
@@ -241,9 +241,9 @@ Dynamic: summary
241
241
 
242
242
  --------
243
243
 
244
- 🥷 <a translate="no" href="https://github.com/seleniumbase/SeleniumBase/blob/master/help_docs/uc_mode.md"><a translate="no" href="https://github.com/seleniumbase/SeleniumBase/blob/master/examples/cdp_mode/ReadMe.md"><b>CDP Mode</b></a> makes browser automation undetectable to anti-bot services and <a href="https://github.com/seleniumbase/SeleniumBase/blob/master/examples/cdp_mode/playwright/ReadMe.md">adds <b>stealth</b> to stock <span translate="no">Playwright</span></a>. Also includes code for bypassing CAPTCHAs.
244
+ 🐙 <a translate="no" href="https://github.com/seleniumbase/SeleniumBase/blob/master/help_docs/uc_mode.md"><a translate="no" href="https://github.com/seleniumbase/SeleniumBase/blob/master/examples/cdp_mode/ReadMe.md"><b>CDP Mode</b></a> bypasses bot-detection and <a href="https://github.com/seleniumbase/SeleniumBase/blob/master/examples/cdp_mode/playwright/ReadMe.md">makes <span translate="no">Playwright</span> stealthy</a>.
245
245
 
246
- 📚 Example scripts that start or end with "<code>test</code>" are specifically designed to be run with <code><b>pytest</b></code>. Other scripts run directly with raw <code><b>python</b></code>. (Those start with "<code>raw</code>" to avoid confusion.)
246
+ ℹ️ Example scripts that start or end with "<code>test</code>" run with <code><b>pytest</b></code>. Other scripts run directly with raw <code><b>python</b></code> (and start with "<code>raw</code>" to avoid confusion).
247
247
 
248
248
  --------
249
249
 
@@ -1,4 +1,4 @@
1
- pip>=26.2.2
1
+ pip>=26.3
2
2
  packaging>=26.3
3
3
  setuptools>=84.2.1
4
4
  wheel>=0.48.0
@@ -28,11 +28,11 @@ requests~=2.34.2
28
28
  sniffio==1.3.1
29
29
  h11==0.16.0
30
30
  outcome==1.3.0.post0
31
- trio<1,>=0.34.0
31
+ trio<1,>=0.35.0
32
32
  trio-websocket~=0.12.2
33
33
  wsproto~=1.3.2
34
34
  websocket-client~=1.9.2
35
- selenium==4.51.0
35
+ selenium==4.52.0
36
36
  sortedcontainers==2.4.0
37
37
  execnet==2.1.2
38
38
  iniconfig~=2.3.1
@@ -69,8 +69,8 @@ filelock==4.1.0
69
69
  pytest-rerunfailures==16.3
70
70
 
71
71
  [:python_version >= "3.11"]
72
- websockets>=17.3
73
- filelock>=4.2.4
72
+ websockets>=17.4
73
+ filelock>=4.2.7
74
74
  cssselect<2,>=1.6.0
75
75
  pluggy<1.8,>=1.6.0
76
76
  pytest==9.1.1
@@ -154,4 +154,4 @@ proxy.py==2.4.3
154
154
  PyAutoGUI>=0.9.54
155
155
 
156
156
  [uv]
157
- uv>=0.13.6
157
+ uv>=0.13.7
@@ -164,7 +164,7 @@ setup(
164
164
  ],
165
165
  python_requires=">=3.10",
166
166
  install_requires=[
167
- 'pip>=26.2.2',
167
+ 'pip>=26.3',
168
168
  'packaging>=26.3',
169
169
  'setuptools>=84.2.1',
170
170
  'wheel>=0.48.0',
@@ -172,9 +172,9 @@ setup(
172
172
  'certifi>=2026.10.23',
173
173
  'exceptiongroup>=1.3.1',
174
174
  'websockets~=16.1.1;python_version=="3.10"',
175
- 'websockets>=17.3;python_version>="3.11"',
175
+ 'websockets>=17.4;python_version>="3.11"',
176
176
  'filelock==4.1.0;python_version=="3.10"',
177
- 'filelock>=4.2.4;python_version>="3.11"',
177
+ 'filelock>=4.2.7;python_version>="3.11"',
178
178
  'fasteners>=0.20',
179
179
  'mycdp>=1.4.0',
180
180
  'pynose>=1.5.5',
@@ -199,11 +199,11 @@ setup(
199
199
  'sniffio==1.3.1',
200
200
  'h11==0.16.0',
201
201
  'outcome==1.3.0.post0',
202
- 'trio>=0.34.0,<1',
202
+ 'trio>=0.35.0,<1',
203
203
  'trio-websocket~=0.12.2',
204
204
  'wsproto~=1.3.2',
205
205
  'websocket-client~=1.9.2',
206
- 'selenium==4.51.0',
206
+ 'selenium==4.52.0',
207
207
  'cssselect~=1.5.0;python_version<"3.11"',
208
208
  'cssselect>=1.6.0,<2;python_version>="3.11"',
209
209
  'sortedcontainers==2.4.0',
@@ -312,7 +312,7 @@ setup(
312
312
  # pip install -e .[uv]
313
313
  # (For the MCP integration and more.)
314
314
  "uv": [
315
- "uv>=0.13.6"
315
+ "uv>=0.13.7"
316
316
  ],
317
317
  },
318
318
  packages=[
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes