seleniumbase 4.52.2__tar.gz → 4.52.4__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.52.2/seleniumbase.egg-info → seleniumbase-4.52.4}/PKG-INFO +7 -3
  2. {seleniumbase-4.52.2 → seleniumbase-4.52.4}/README.md +5 -1
  3. {seleniumbase-4.52.2 → seleniumbase-4.52.4}/mcp_servers/server.py +1 -1
  4. {seleniumbase-4.52.2 → seleniumbase-4.52.4}/requirements.txt +1 -1
  5. {seleniumbase-4.52.2 → seleniumbase-4.52.4}/seleniumbase/__version__.py +1 -1
  6. {seleniumbase-4.52.2 → seleniumbase-4.52.4}/seleniumbase/config/settings.py +8 -0
  7. {seleniumbase-4.52.2 → seleniumbase-4.52.4}/seleniumbase/core/browser_launcher.py +13 -0
  8. {seleniumbase-4.52.2 → seleniumbase-4.52.4}/seleniumbase/core/settings_parser.py +2 -0
  9. {seleniumbase-4.52.2 → seleniumbase-4.52.4}/seleniumbase/fixtures/base_case.py +4 -1
  10. {seleniumbase-4.52.2 → seleniumbase-4.52.4/seleniumbase.egg-info}/PKG-INFO +7 -3
  11. {seleniumbase-4.52.2 → seleniumbase-4.52.4}/seleniumbase.egg-info/requires.txt +1 -1
  12. {seleniumbase-4.52.2 → seleniumbase-4.52.4}/setup.py +1 -1
  13. {seleniumbase-4.52.2 → seleniumbase-4.52.4}/.gitignore +0 -0
  14. {seleniumbase-4.52.2 → seleniumbase-4.52.4}/LICENSE +0 -0
  15. {seleniumbase-4.52.2 → seleniumbase-4.52.4}/MANIFEST.in +0 -0
  16. {seleniumbase-4.52.2 → seleniumbase-4.52.4}/install.sh +0 -0
  17. {seleniumbase-4.52.2 → seleniumbase-4.52.4}/mcp_servers/__init__.py +0 -0
  18. {seleniumbase-4.52.2 → seleniumbase-4.52.4}/pyproject.toml +0 -0
  19. {seleniumbase-4.52.2 → seleniumbase-4.52.4}/pytest.ini +0 -0
  20. {seleniumbase-4.52.2 → seleniumbase-4.52.4}/sbase/__init__.py +0 -0
  21. {seleniumbase-4.52.2 → seleniumbase-4.52.4}/sbase/__main__.py +0 -0
  22. {seleniumbase-4.52.2 → seleniumbase-4.52.4}/sbase/steps.py +0 -0
  23. {seleniumbase-4.52.2 → seleniumbase-4.52.4}/seleniumbase/__init__.py +0 -0
  24. {seleniumbase-4.52.2 → seleniumbase-4.52.4}/seleniumbase/__main__.py +0 -0
  25. {seleniumbase-4.52.2 → seleniumbase-4.52.4}/seleniumbase/behave/__init__.py +0 -0
  26. {seleniumbase-4.52.2 → seleniumbase-4.52.4}/seleniumbase/behave/behave_helper.py +0 -0
  27. {seleniumbase-4.52.2 → seleniumbase-4.52.4}/seleniumbase/behave/behave_sb.py +0 -0
  28. {seleniumbase-4.52.2 → seleniumbase-4.52.4}/seleniumbase/behave/steps.py +0 -0
  29. {seleniumbase-4.52.2 → seleniumbase-4.52.4}/seleniumbase/common/__init__.py +0 -0
  30. {seleniumbase-4.52.2 → seleniumbase-4.52.4}/seleniumbase/common/decorators.py +0 -0
  31. {seleniumbase-4.52.2 → seleniumbase-4.52.4}/seleniumbase/common/encryption.py +0 -0
  32. {seleniumbase-4.52.2 → seleniumbase-4.52.4}/seleniumbase/common/exceptions.py +0 -0
  33. {seleniumbase-4.52.2 → seleniumbase-4.52.4}/seleniumbase/common/obfuscate.py +0 -0
  34. {seleniumbase-4.52.2 → seleniumbase-4.52.4}/seleniumbase/common/unobfuscate.py +0 -0
  35. {seleniumbase-4.52.2 → seleniumbase-4.52.4}/seleniumbase/config/__init__.py +0 -0
  36. {seleniumbase-4.52.2 → seleniumbase-4.52.4}/seleniumbase/config/ad_block_list.py +0 -0
  37. {seleniumbase-4.52.2 → seleniumbase-4.52.4}/seleniumbase/config/proxy_list.py +0 -0
  38. {seleniumbase-4.52.2 → seleniumbase-4.52.4}/seleniumbase/console_scripts/__init__.py +0 -0
  39. {seleniumbase-4.52.2 → seleniumbase-4.52.4}/seleniumbase/console_scripts/logo_helper.py +0 -0
  40. {seleniumbase-4.52.2 → seleniumbase-4.52.4}/seleniumbase/console_scripts/rich_helper.py +0 -0
  41. {seleniumbase-4.52.2 → seleniumbase-4.52.4}/seleniumbase/console_scripts/run.py +0 -0
  42. {seleniumbase-4.52.2 → seleniumbase-4.52.4}/seleniumbase/console_scripts/sb_behave_gui.py +0 -0
  43. {seleniumbase-4.52.2 → seleniumbase-4.52.4}/seleniumbase/console_scripts/sb_caseplans.py +0 -0
  44. {seleniumbase-4.52.2 → seleniumbase-4.52.4}/seleniumbase/console_scripts/sb_commander.py +0 -0
  45. {seleniumbase-4.52.2 → seleniumbase-4.52.4}/seleniumbase/console_scripts/sb_install.py +0 -0
  46. {seleniumbase-4.52.2 → seleniumbase-4.52.4}/seleniumbase/console_scripts/sb_mkchart.py +0 -0
  47. {seleniumbase-4.52.2 → seleniumbase-4.52.4}/seleniumbase/console_scripts/sb_mkdir.py +0 -0
  48. {seleniumbase-4.52.2 → seleniumbase-4.52.4}/seleniumbase/console_scripts/sb_mkfile.py +0 -0
  49. {seleniumbase-4.52.2 → seleniumbase-4.52.4}/seleniumbase/console_scripts/sb_mkpres.py +0 -0
  50. {seleniumbase-4.52.2 → seleniumbase-4.52.4}/seleniumbase/console_scripts/sb_mkrec.py +0 -0
  51. {seleniumbase-4.52.2 → seleniumbase-4.52.4}/seleniumbase/console_scripts/sb_objectify.py +0 -0
  52. {seleniumbase-4.52.2 → seleniumbase-4.52.4}/seleniumbase/console_scripts/sb_print.py +0 -0
  53. {seleniumbase-4.52.2 → seleniumbase-4.52.4}/seleniumbase/console_scripts/sb_recorder.py +0 -0
  54. {seleniumbase-4.52.2 → seleniumbase-4.52.4}/seleniumbase/core/__init__.py +0 -0
  55. {seleniumbase-4.52.2 → seleniumbase-4.52.4}/seleniumbase/core/application_manager.py +0 -0
  56. {seleniumbase-4.52.2 → seleniumbase-4.52.4}/seleniumbase/core/capabilities_parser.py +0 -0
  57. {seleniumbase-4.52.2 → seleniumbase-4.52.4}/seleniumbase/core/colored_traceback.py +0 -0
  58. {seleniumbase-4.52.2 → seleniumbase-4.52.4}/seleniumbase/core/create_db_tables.sql +0 -0
  59. {seleniumbase-4.52.2 → seleniumbase-4.52.4}/seleniumbase/core/detect_b_ver.py +0 -0
  60. {seleniumbase-4.52.2 → seleniumbase-4.52.4}/seleniumbase/core/download_helper.py +0 -0
  61. {seleniumbase-4.52.2 → seleniumbase-4.52.4}/seleniumbase/core/encoded_images.py +0 -0
  62. {seleniumbase-4.52.2 → seleniumbase-4.52.4}/seleniumbase/core/jqc_helper.py +0 -0
  63. {seleniumbase-4.52.2 → seleniumbase-4.52.4}/seleniumbase/core/log_helper.py +0 -0
  64. {seleniumbase-4.52.2 → seleniumbase-4.52.4}/seleniumbase/core/mysql.py +0 -0
  65. {seleniumbase-4.52.2 → seleniumbase-4.52.4}/seleniumbase/core/nest_asyncio.py +0 -0
  66. {seleniumbase-4.52.2 → seleniumbase-4.52.4}/seleniumbase/core/proxy_helper.py +0 -0
  67. {seleniumbase-4.52.2 → seleniumbase-4.52.4}/seleniumbase/core/recorder_helper.py +0 -0
  68. {seleniumbase-4.52.2 → seleniumbase-4.52.4}/seleniumbase/core/report_helper.py +0 -0
  69. {seleniumbase-4.52.2 → seleniumbase-4.52.4}/seleniumbase/core/s3_manager.py +0 -0
  70. {seleniumbase-4.52.2 → seleniumbase-4.52.4}/seleniumbase/core/sb_cdp.py +0 -0
  71. {seleniumbase-4.52.2 → seleniumbase-4.52.4}/seleniumbase/core/sb_driver.py +0 -0
  72. {seleniumbase-4.52.2 → seleniumbase-4.52.4}/seleniumbase/core/session_helper.py +0 -0
  73. {seleniumbase-4.52.2 → seleniumbase-4.52.4}/seleniumbase/core/style_sheet.py +0 -0
  74. {seleniumbase-4.52.2 → seleniumbase-4.52.4}/seleniumbase/core/testcase_manager.py +0 -0
  75. {seleniumbase-4.52.2 → seleniumbase-4.52.4}/seleniumbase/core/tour_helper.py +0 -0
  76. {seleniumbase-4.52.2 → seleniumbase-4.52.4}/seleniumbase/core/visual_helper.py +0 -0
  77. {seleniumbase-4.52.2 → seleniumbase-4.52.4}/seleniumbase/drivers/__init__.py +0 -0
  78. {seleniumbase-4.52.2 → seleniumbase-4.52.4}/seleniumbase/drivers/brave_drivers/__init__.py +0 -0
  79. {seleniumbase-4.52.2 → seleniumbase-4.52.4}/seleniumbase/drivers/cft_drivers/__init__.py +0 -0
  80. {seleniumbase-4.52.2 → seleniumbase-4.52.4}/seleniumbase/drivers/chromium_drivers/__init__.py +0 -0
  81. {seleniumbase-4.52.2 → seleniumbase-4.52.4}/seleniumbase/drivers/chs_drivers/__init__.py +0 -0
  82. {seleniumbase-4.52.2 → seleniumbase-4.52.4}/seleniumbase/drivers/comet_drivers/__init__.py +0 -0
  83. {seleniumbase-4.52.2 → seleniumbase-4.52.4}/seleniumbase/drivers/opera_drivers/__init__.py +0 -0
  84. {seleniumbase-4.52.2 → seleniumbase-4.52.4}/seleniumbase/extensions/__init__.py +0 -0
  85. {seleniumbase-4.52.2 → seleniumbase-4.52.4}/seleniumbase/extensions/ad_block.zip +0 -0
  86. {seleniumbase-4.52.2 → seleniumbase-4.52.4}/seleniumbase/extensions/disable_csp.zip +0 -0
  87. {seleniumbase-4.52.2 → seleniumbase-4.52.4}/seleniumbase/extensions/recorder.zip +0 -0
  88. {seleniumbase-4.52.2 → seleniumbase-4.52.4}/seleniumbase/extensions/sbase_ext.zip +0 -0
  89. {seleniumbase-4.52.2 → seleniumbase-4.52.4}/seleniumbase/fixtures/__init__.py +0 -0
  90. {seleniumbase-4.52.2 → seleniumbase-4.52.4}/seleniumbase/fixtures/constants.py +0 -0
  91. {seleniumbase-4.52.2 → seleniumbase-4.52.4}/seleniumbase/fixtures/css_to_xpath.py +0 -0
  92. {seleniumbase-4.52.2 → seleniumbase-4.52.4}/seleniumbase/fixtures/errors.py +0 -0
  93. {seleniumbase-4.52.2 → seleniumbase-4.52.4}/seleniumbase/fixtures/js_utils.py +0 -0
  94. {seleniumbase-4.52.2 → seleniumbase-4.52.4}/seleniumbase/fixtures/page_actions.py +0 -0
  95. {seleniumbase-4.52.2 → seleniumbase-4.52.4}/seleniumbase/fixtures/page_utils.py +0 -0
  96. {seleniumbase-4.52.2 → seleniumbase-4.52.4}/seleniumbase/fixtures/shared_utils.py +0 -0
  97. {seleniumbase-4.52.2 → seleniumbase-4.52.4}/seleniumbase/fixtures/unittest_helper.py +0 -0
  98. {seleniumbase-4.52.2 → seleniumbase-4.52.4}/seleniumbase/fixtures/words.py +0 -0
  99. {seleniumbase-4.52.2 → seleniumbase-4.52.4}/seleniumbase/fixtures/xpath_to_css.py +0 -0
  100. {seleniumbase-4.52.2 → seleniumbase-4.52.4}/seleniumbase/js_code/__init__.py +0 -0
  101. {seleniumbase-4.52.2 → seleniumbase-4.52.4}/seleniumbase/js_code/active_css_js.py +0 -0
  102. {seleniumbase-4.52.2 → seleniumbase-4.52.4}/seleniumbase/js_code/live_js.py +0 -0
  103. {seleniumbase-4.52.2 → seleniumbase-4.52.4}/seleniumbase/js_code/recorder_js.py +0 -0
  104. {seleniumbase-4.52.2 → seleniumbase-4.52.4}/seleniumbase/masterqa/__init__.py +0 -0
  105. {seleniumbase-4.52.2 → seleniumbase-4.52.4}/seleniumbase/masterqa/master_qa.py +0 -0
  106. {seleniumbase-4.52.2 → seleniumbase-4.52.4}/seleniumbase/plugins/__init__.py +0 -0
  107. {seleniumbase-4.52.2 → seleniumbase-4.52.4}/seleniumbase/plugins/base_plugin.py +0 -0
  108. {seleniumbase-4.52.2 → seleniumbase-4.52.4}/seleniumbase/plugins/basic_test_info.py +0 -0
  109. {seleniumbase-4.52.2 → seleniumbase-4.52.4}/seleniumbase/plugins/db_reporting_plugin.py +0 -0
  110. {seleniumbase-4.52.2 → seleniumbase-4.52.4}/seleniumbase/plugins/driver_manager.py +0 -0
  111. {seleniumbase-4.52.2 → seleniumbase-4.52.4}/seleniumbase/plugins/page_source.py +0 -0
  112. {seleniumbase-4.52.2 → seleniumbase-4.52.4}/seleniumbase/plugins/pytest_plugin.py +0 -0
  113. {seleniumbase-4.52.2 → seleniumbase-4.52.4}/seleniumbase/plugins/s3_logging_plugin.py +0 -0
  114. {seleniumbase-4.52.2 → seleniumbase-4.52.4}/seleniumbase/plugins/sb_manager.py +0 -0
  115. {seleniumbase-4.52.2 → seleniumbase-4.52.4}/seleniumbase/plugins/screen_shots.py +0 -0
  116. {seleniumbase-4.52.2 → seleniumbase-4.52.4}/seleniumbase/plugins/selenium_plugin.py +0 -0
  117. {seleniumbase-4.52.2 → seleniumbase-4.52.4}/seleniumbase/resources/__init__.py +0 -0
  118. {seleniumbase-4.52.2 → seleniumbase-4.52.4}/seleniumbase/translate/__init__.py +0 -0
  119. {seleniumbase-4.52.2 → seleniumbase-4.52.4}/seleniumbase/translate/chinese.py +0 -0
  120. {seleniumbase-4.52.2 → seleniumbase-4.52.4}/seleniumbase/translate/dutch.py +0 -0
  121. {seleniumbase-4.52.2 → seleniumbase-4.52.4}/seleniumbase/translate/french.py +0 -0
  122. {seleniumbase-4.52.2 → seleniumbase-4.52.4}/seleniumbase/translate/italian.py +0 -0
  123. {seleniumbase-4.52.2 → seleniumbase-4.52.4}/seleniumbase/translate/japanese.py +0 -0
  124. {seleniumbase-4.52.2 → seleniumbase-4.52.4}/seleniumbase/translate/korean.py +0 -0
  125. {seleniumbase-4.52.2 → seleniumbase-4.52.4}/seleniumbase/translate/master_dict.py +0 -0
  126. {seleniumbase-4.52.2 → seleniumbase-4.52.4}/seleniumbase/translate/portuguese.py +0 -0
  127. {seleniumbase-4.52.2 → seleniumbase-4.52.4}/seleniumbase/translate/russian.py +0 -0
  128. {seleniumbase-4.52.2 → seleniumbase-4.52.4}/seleniumbase/translate/spanish.py +0 -0
  129. {seleniumbase-4.52.2 → seleniumbase-4.52.4}/seleniumbase/translate/translator.py +0 -0
  130. {seleniumbase-4.52.2 → seleniumbase-4.52.4}/seleniumbase/undetected/__init__.py +0 -0
  131. {seleniumbase-4.52.2 → seleniumbase-4.52.4}/seleniumbase/undetected/cdp.py +0 -0
  132. {seleniumbase-4.52.2 → seleniumbase-4.52.4}/seleniumbase/undetected/cdp_driver/__init__.py +0 -0
  133. {seleniumbase-4.52.2 → seleniumbase-4.52.4}/seleniumbase/undetected/cdp_driver/_contradict.py +0 -0
  134. {seleniumbase-4.52.2 → seleniumbase-4.52.4}/seleniumbase/undetected/cdp_driver/browser.py +0 -0
  135. {seleniumbase-4.52.2 → seleniumbase-4.52.4}/seleniumbase/undetected/cdp_driver/cdp_util.py +0 -0
  136. {seleniumbase-4.52.2 → seleniumbase-4.52.4}/seleniumbase/undetected/cdp_driver/config.py +0 -0
  137. {seleniumbase-4.52.2 → seleniumbase-4.52.4}/seleniumbase/undetected/cdp_driver/connection.py +0 -0
  138. {seleniumbase-4.52.2 → seleniumbase-4.52.4}/seleniumbase/undetected/cdp_driver/element.py +0 -0
  139. {seleniumbase-4.52.2 → seleniumbase-4.52.4}/seleniumbase/undetected/cdp_driver/tab.py +0 -0
  140. {seleniumbase-4.52.2 → seleniumbase-4.52.4}/seleniumbase/undetected/dprocess.py +0 -0
  141. {seleniumbase-4.52.2 → seleniumbase-4.52.4}/seleniumbase/undetected/options.py +0 -0
  142. {seleniumbase-4.52.2 → seleniumbase-4.52.4}/seleniumbase/undetected/patcher.py +0 -0
  143. {seleniumbase-4.52.2 → seleniumbase-4.52.4}/seleniumbase/undetected/reactor.py +0 -0
  144. {seleniumbase-4.52.2 → seleniumbase-4.52.4}/seleniumbase/undetected/webelement.py +0 -0
  145. {seleniumbase-4.52.2 → seleniumbase-4.52.4}/seleniumbase/utilities/__init__.py +0 -0
  146. {seleniumbase-4.52.2 → seleniumbase-4.52.4}/seleniumbase/utilities/selenium_grid/__init__.py +0 -0
  147. {seleniumbase-4.52.2 → seleniumbase-4.52.4}/seleniumbase/utilities/selenium_grid/download_selenium_server.py +0 -0
  148. {seleniumbase-4.52.2 → seleniumbase-4.52.4}/seleniumbase/utilities/selenium_grid/font_color +0 -0
  149. {seleniumbase-4.52.2 → seleniumbase-4.52.4}/seleniumbase/utilities/selenium_grid/grid-hub +0 -0
  150. {seleniumbase-4.52.2 → seleniumbase-4.52.4}/seleniumbase/utilities/selenium_grid/grid-node +0 -0
  151. {seleniumbase-4.52.2 → seleniumbase-4.52.4}/seleniumbase/utilities/selenium_grid/grid_hub.py +0 -0
  152. {seleniumbase-4.52.2 → seleniumbase-4.52.4}/seleniumbase/utilities/selenium_grid/grid_node.py +0 -0
  153. {seleniumbase-4.52.2 → seleniumbase-4.52.4}/seleniumbase/utilities/selenium_grid/register-grid-node.bat +0 -0
  154. {seleniumbase-4.52.2 → seleniumbase-4.52.4}/seleniumbase/utilities/selenium_grid/register-grid-node.sh +0 -0
  155. {seleniumbase-4.52.2 → seleniumbase-4.52.4}/seleniumbase/utilities/selenium_grid/start-grid-hub.bat +0 -0
  156. {seleniumbase-4.52.2 → seleniumbase-4.52.4}/seleniumbase/utilities/selenium_grid/start-grid-hub.sh +0 -0
  157. {seleniumbase-4.52.2 → seleniumbase-4.52.4}/seleniumbase/utilities/selenium_ide/__init__.py +0 -0
  158. {seleniumbase-4.52.2 → seleniumbase-4.52.4}/seleniumbase/utilities/selenium_ide/convert_ide.py +0 -0
  159. {seleniumbase-4.52.2 → seleniumbase-4.52.4}/seleniumbase.egg-info/SOURCES.txt +0 -0
  160. {seleniumbase-4.52.2 → seleniumbase-4.52.4}/seleniumbase.egg-info/dependency_links.txt +0 -0
  161. {seleniumbase-4.52.2 → seleniumbase-4.52.4}/seleniumbase.egg-info/entry_points.txt +0 -0
  162. {seleniumbase-4.52.2 → seleniumbase-4.52.4}/seleniumbase.egg-info/top_level.txt +0 -0
  163. {seleniumbase-4.52.2 → seleniumbase-4.52.4}/setup.cfg +0 -0
  164. {seleniumbase-4.52.2 → seleniumbase-4.52.4}/virtualenv_install.sh +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: seleniumbase
3
- Version: 4.52.2
3
+ Version: 4.52.4
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
@@ -71,7 +71,7 @@ Requires-Dist: filelock>=3.32.4
71
71
  Requires-Dist: fasteners>=0.20
72
72
  Requires-Dist: mycdp>=1.4.0
73
73
  Requires-Dist: pynose>=1.5.5
74
- Requires-Dist: platformdirs>=4.11.3
74
+ Requires-Dist: platformdirs>=4.11.4
75
75
  Requires-Dist: typing-extensions>=4.16.0
76
76
  Requires-Dist: sbvirtualdisplay>=1.4.0
77
77
  Requires-Dist: MarkupSafe>=3.0.3
@@ -215,7 +215,7 @@ Dynamic: summary
215
215
  <a href="https://github.com/seleniumbase/SeleniumBase/blob/master/examples/tour_examples/ReadMe.md">🚎 Tours</a>
216
216
  <br />
217
217
  <a href="https://github.com/seleniumbase/SeleniumBase/blob/master/mcp_servers/">🤖 MCP</a> |
218
- <a href="https://github.com/seleniumbase/SeleniumBase/blob/master/help_docs/js_package_manager.md">🟨 JS-Mgr</a> |
218
+ <a href="https://github.com/seleniumbase/SeleniumBase/blob/master/help_docs/js_package_manager.md">🟨 JS Mgr</a> |
219
219
  <a href="https://github.com/seleniumbase/SeleniumBase/blob/master/help_docs/translations.md">🌏 Translator</a> |
220
220
  <a href="https://github.com/seleniumbase/SeleniumBase/blob/master/examples/presenter/ReadMe.md">🎞️ Presenter</a> |
221
221
  <a href="https://github.com/seleniumbase/SeleniumBase/blob/master/examples/visual_testing/ReadMe.md">🖼️ Visual</a> |
@@ -234,6 +234,10 @@ Dynamic: summary
234
234
  <li><code><b>pip install playwright</b></code> for the optional integration. (Or use <code>uv add</code>)</li>
235
235
  </ul>
236
236
 
237
+ <ul>
238
+ <li><b>🤖 For the <code>seleniumbase-mcp</code> MCP server, <a href="https://github.com/seleniumbase/SeleniumBase/blob/master/mcp_servers/">see the MCP ReadMe</a>.</b></li>
239
+ </ul>
240
+
237
241
  --------
238
242
 
239
243
  <b>📝 Here's a Python example that uses <a href="https://github.com/seleniumbase/SeleniumBase/blob/master/examples/cdp_mode/ReadMe.md#-pure-cdp-mode-sb_cdp">Pure CDP Mode</a> (<code>sb_cdp</code>):</b><br />(It navigates to Browserscan where it bypasses bot-detection.)
@@ -43,7 +43,7 @@
43
43
  <a href="https://github.com/seleniumbase/SeleniumBase/blob/master/examples/tour_examples/ReadMe.md">🚎 Tours</a>
44
44
  <br />
45
45
  <a href="https://github.com/seleniumbase/SeleniumBase/blob/master/mcp_servers/">🤖 MCP</a> |
46
- <a href="https://github.com/seleniumbase/SeleniumBase/blob/master/help_docs/js_package_manager.md">🟨 JS-Mgr</a> |
46
+ <a href="https://github.com/seleniumbase/SeleniumBase/blob/master/help_docs/js_package_manager.md">🟨 JS Mgr</a> |
47
47
  <a href="https://github.com/seleniumbase/SeleniumBase/blob/master/help_docs/translations.md">🌏 Translator</a> |
48
48
  <a href="https://github.com/seleniumbase/SeleniumBase/blob/master/examples/presenter/ReadMe.md">🎞️ Presenter</a> |
49
49
  <a href="https://github.com/seleniumbase/SeleniumBase/blob/master/examples/visual_testing/ReadMe.md">🖼️ Visual</a> |
@@ -62,6 +62,10 @@
62
62
  <li><code><b>pip install playwright</b></code> for the optional integration. (Or use <code>uv add</code>)</li>
63
63
  </ul>
64
64
 
65
+ <ul>
66
+ <li><b>🤖 For the <code>seleniumbase-mcp</code> MCP server, <a href="https://github.com/seleniumbase/SeleniumBase/blob/master/mcp_servers/">see the MCP ReadMe</a>.</b></li>
67
+ </ul>
68
+
65
69
  --------
66
70
 
67
71
  <b>📝 Here's a Python example that uses <a href="https://github.com/seleniumbase/SeleniumBase/blob/master/examples/cdp_mode/ReadMe.md#-pure-cdp-mode-sb_cdp">Pure CDP Mode</a> (<code>sb_cdp</code>):</b><br />(It navigates to Browserscan where it bypasses bot-detection.)
@@ -20,7 +20,7 @@ immediately to a plain dict (tag, text, html) rather than returning a handle.
20
20
  If you need to act on a *specific* one of several matching elements, use
21
21
  click_nth_element / click_nth_visible_element rather than find + click.
22
22
  """
23
-
23
+ from __future__ import annotations
24
24
  import atexit
25
25
  import sys
26
26
  from typing import Any
@@ -11,7 +11,7 @@ filelock>=3.32.4
11
11
  fasteners>=0.20
12
12
  mycdp>=1.4.0
13
13
  pynose>=1.5.5
14
- platformdirs>=4.11.3
14
+ platformdirs>=4.11.4
15
15
  typing-extensions>=4.16.0
16
16
  sbvirtualdisplay>=1.4.0
17
17
  MarkupSafe>=3.0.3
@@ -1,2 +1,2 @@
1
1
  # seleniumbase package
2
- __version__ = "4.52.2"
2
+ __version__ = "4.52.4"
@@ -23,6 +23,14 @@ EXTREME_TIMEOUT = 30
23
23
  # In global Selenium settings, this value is set to 300 seconds by default.
24
24
  PAGE_LOAD_TIMEOUT = 120
25
25
 
26
+ # Default client-side timeout (in seconds) for each HTTP request that a
27
+ # Remote WebDriver client sends to a Selenium server / Selenium Grid.
28
+ # When set to None, requests have no client-side timeout, which means
29
+ # a WebDriver command can block forever if a grid node dies mid-session.
30
+ # If used, set this higher than PAGE_LOAD_TIMEOUT, and higher than the
31
+ # time a new-session request may wait in your grid's session queue.
32
+ REMOTE_WEBDRIVER_TIMEOUT = None
33
+
26
34
  # Default page load strategy.
27
35
  # ["normal", "eager", "none"]
28
36
  # Selenium default = "normal"
@@ -19,6 +19,7 @@ from selenium.common.exceptions import InvalidSessionIdException
19
19
  from selenium.common.exceptions import SessionNotCreatedException
20
20
  from selenium.webdriver.chrome.service import Service as ChromeService
21
21
  from selenium.webdriver.common import utils as common_utils
22
+ from selenium.webdriver.remote.client_config import ClientConfig
22
23
  from seleniumbase import config as sb_config
23
24
  from seleniumbase import decorators
24
25
  from seleniumbase import drivers # webdriver storage folder for SeleniumBase
@@ -3719,6 +3720,12 @@ def get_remote_driver(
3719
3720
  address += "wd/hub"
3720
3721
  else:
3721
3722
  address += "/wd/hub"
3723
+ client_config = None
3724
+ if settings.REMOTE_WEBDRIVER_TIMEOUT:
3725
+ client_config = ClientConfig(
3726
+ remote_server_addr=address,
3727
+ timeout=settings.REMOTE_WEBDRIVER_TIMEOUT,
3728
+ )
3722
3729
  downloads_path = DOWNLOADS_FOLDER
3723
3730
  desired_caps = {}
3724
3731
  extra_caps = {}
@@ -3845,6 +3852,7 @@ def get_remote_driver(
3845
3852
  chrome_options.set_capability(key, ext_caps[key])
3846
3853
  driver = webdriver.Remote(
3847
3854
  command_executor=address,
3855
+ client_config=client_config,
3848
3856
  options=chrome_options,
3849
3857
  )
3850
3858
  return extend_driver(driver)
@@ -3910,6 +3918,7 @@ def get_remote_driver(
3910
3918
  firefox_options.set_capability(key, ext_caps[key])
3911
3919
  driver = webdriver.Remote(
3912
3920
  command_executor=address,
3921
+ client_config=client_config,
3913
3922
  options=firefox_options,
3914
3923
  )
3915
3924
  return extend_driver(driver)
@@ -3919,6 +3928,7 @@ def get_remote_driver(
3919
3928
  remote_options.set_capability("cloud:options", desired_caps)
3920
3929
  driver = webdriver.Remote(
3921
3930
  command_executor=address,
3931
+ client_config=client_config,
3922
3932
  options=remote_options,
3923
3933
  )
3924
3934
  return extend_driver(driver)
@@ -4018,6 +4028,7 @@ def get_remote_driver(
4018
4028
  edge_options.set_capability(key, ext_caps[key])
4019
4029
  driver = webdriver.Remote(
4020
4030
  command_executor=address,
4031
+ client_config=client_config,
4021
4032
  options=edge_options,
4022
4033
  )
4023
4034
  return extend_driver(driver)
@@ -4027,6 +4038,7 @@ def get_remote_driver(
4027
4038
  remote_options.set_capability("cloud:options", desired_caps)
4028
4039
  driver = webdriver.Remote(
4029
4040
  command_executor=address,
4041
+ client_config=client_config,
4030
4042
  options=remote_options,
4031
4043
  )
4032
4044
  return extend_driver(driver)
@@ -4039,6 +4051,7 @@ def get_remote_driver(
4039
4051
  remote_options.set_capability("bstack:options", desired_caps)
4040
4052
  driver = webdriver.Remote(
4041
4053
  command_executor=address,
4054
+ client_config=client_config,
4042
4055
  options=remote_options,
4043
4056
  )
4044
4057
  return extend_driver(driver)
@@ -73,6 +73,8 @@ def set_settings(settings_file):
73
73
  settings.EXTREME_TIMEOUT = override_settings[key]
74
74
  elif key == "PAGE_LOAD_TIMEOUT":
75
75
  settings.PAGE_LOAD_TIMEOUT = override_settings[key]
76
+ elif key == "REMOTE_WEBDRIVER_TIMEOUT":
77
+ settings.REMOTE_WEBDRIVER_TIMEOUT = override_settings[key]
76
78
  elif key == "ARCHIVE_EXISTING_LOGS":
77
79
  settings.ARCHIVE_EXISTING_LOGS = override_settings[key]
78
80
  elif key == "ARCHIVE_EXISTING_DOWNLOADS":
@@ -239,7 +239,10 @@ class BaseCase(unittest.TestCase):
239
239
  ):
240
240
  # Auth in UC Mode requires CDP Mode
241
241
  # (and now we're always forcing it)
242
- logging.info("open() in UC Mode now always activates CDP Mode.")
242
+ logging.debug(
243
+ "Opening a URL from UC Mode now activates CDP Mode."
244
+ " To prevent this, call sb.driver.get(url) instead."
245
+ )
243
246
  self.activate_cdp_mode(url, **kwargs)
244
247
  return
245
248
  elif (
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: seleniumbase
3
- Version: 4.52.2
3
+ Version: 4.52.4
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
@@ -71,7 +71,7 @@ Requires-Dist: filelock>=3.32.4
71
71
  Requires-Dist: fasteners>=0.20
72
72
  Requires-Dist: mycdp>=1.4.0
73
73
  Requires-Dist: pynose>=1.5.5
74
- Requires-Dist: platformdirs>=4.11.3
74
+ Requires-Dist: platformdirs>=4.11.4
75
75
  Requires-Dist: typing-extensions>=4.16.0
76
76
  Requires-Dist: sbvirtualdisplay>=1.4.0
77
77
  Requires-Dist: MarkupSafe>=3.0.3
@@ -215,7 +215,7 @@ Dynamic: summary
215
215
  <a href="https://github.com/seleniumbase/SeleniumBase/blob/master/examples/tour_examples/ReadMe.md">🚎 Tours</a>
216
216
  <br />
217
217
  <a href="https://github.com/seleniumbase/SeleniumBase/blob/master/mcp_servers/">🤖 MCP</a> |
218
- <a href="https://github.com/seleniumbase/SeleniumBase/blob/master/help_docs/js_package_manager.md">🟨 JS-Mgr</a> |
218
+ <a href="https://github.com/seleniumbase/SeleniumBase/blob/master/help_docs/js_package_manager.md">🟨 JS Mgr</a> |
219
219
  <a href="https://github.com/seleniumbase/SeleniumBase/blob/master/help_docs/translations.md">🌏 Translator</a> |
220
220
  <a href="https://github.com/seleniumbase/SeleniumBase/blob/master/examples/presenter/ReadMe.md">🎞️ Presenter</a> |
221
221
  <a href="https://github.com/seleniumbase/SeleniumBase/blob/master/examples/visual_testing/ReadMe.md">🖼️ Visual</a> |
@@ -234,6 +234,10 @@ Dynamic: summary
234
234
  <li><code><b>pip install playwright</b></code> for the optional integration. (Or use <code>uv add</code>)</li>
235
235
  </ul>
236
236
 
237
+ <ul>
238
+ <li><b>🤖 For the <code>seleniumbase-mcp</code> MCP server, <a href="https://github.com/seleniumbase/SeleniumBase/blob/master/mcp_servers/">see the MCP ReadMe</a>.</b></li>
239
+ </ul>
240
+
237
241
  --------
238
242
 
239
243
  <b>📝 Here's a Python example that uses <a href="https://github.com/seleniumbase/SeleniumBase/blob/master/examples/cdp_mode/ReadMe.md#-pure-cdp-mode-sb_cdp">Pure CDP Mode</a> (<code>sb_cdp</code>):</b><br />(It navigates to Browserscan where it bypasses bot-detection.)
@@ -9,7 +9,7 @@ filelock>=3.32.4
9
9
  fasteners>=0.20
10
10
  mycdp>=1.4.0
11
11
  pynose>=1.5.5
12
- platformdirs>=4.11.3
12
+ platformdirs>=4.11.4
13
13
  typing-extensions>=4.16.0
14
14
  sbvirtualdisplay>=1.4.0
15
15
  MarkupSafe>=3.0.3
@@ -174,7 +174,7 @@ setup(
174
174
  'fasteners>=0.20',
175
175
  'mycdp>=1.4.0',
176
176
  'pynose>=1.5.5',
177
- 'platformdirs>=4.11.3',
177
+ 'platformdirs>=4.11.4',
178
178
  'typing-extensions>=4.16.0',
179
179
  'sbvirtualdisplay>=1.4.0',
180
180
  'MarkupSafe>=3.0.3',
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes