seleniumbase 4.43.2__tar.gz → 4.44.15__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 (162) hide show
  1. {seleniumbase-4.43.2/seleniumbase.egg-info → seleniumbase-4.44.15}/PKG-INFO +35 -25
  2. {seleniumbase-4.43.2 → seleniumbase-4.44.15}/README.md +18 -12
  3. {seleniumbase-4.43.2 → seleniumbase-4.44.15}/pyproject.toml +4 -0
  4. {seleniumbase-4.43.2 → seleniumbase-4.44.15}/requirements.txt +14 -10
  5. seleniumbase-4.44.15/seleniumbase/__version__.py +2 -0
  6. {seleniumbase-4.43.2 → seleniumbase-4.44.15}/seleniumbase/behave/behave_sb.py +8 -0
  7. {seleniumbase-4.43.2 → seleniumbase-4.44.15}/seleniumbase/core/browser_launcher.py +201 -51
  8. {seleniumbase-4.43.2 → seleniumbase-4.44.15}/seleniumbase/core/detect_b_ver.py +51 -15
  9. {seleniumbase-4.43.2 → seleniumbase-4.44.15}/seleniumbase/core/log_helper.py +2 -2
  10. {seleniumbase-4.43.2 → seleniumbase-4.44.15}/seleniumbase/core/report_helper.py +1 -1
  11. {seleniumbase-4.43.2 → seleniumbase-4.44.15}/seleniumbase/core/sb_cdp.py +276 -112
  12. {seleniumbase-4.43.2 → seleniumbase-4.44.15}/seleniumbase/core/sb_driver.py +36 -5
  13. {seleniumbase-4.43.2 → seleniumbase-4.44.15}/seleniumbase/fixtures/base_case.py +174 -43
  14. {seleniumbase-4.43.2 → seleniumbase-4.44.15}/seleniumbase/fixtures/constants.py +25 -9
  15. {seleniumbase-4.43.2 → seleniumbase-4.44.15}/seleniumbase/fixtures/js_utils.py +7 -6
  16. {seleniumbase-4.43.2 → seleniumbase-4.44.15}/seleniumbase/fixtures/page_actions.py +24 -1
  17. {seleniumbase-4.43.2 → seleniumbase-4.44.15}/seleniumbase/masterqa/master_qa.py +16 -2
  18. {seleniumbase-4.43.2 → seleniumbase-4.44.15}/seleniumbase/plugins/base_plugin.py +8 -0
  19. {seleniumbase-4.43.2 → seleniumbase-4.44.15}/seleniumbase/plugins/driver_manager.py +120 -1
  20. {seleniumbase-4.43.2 → seleniumbase-4.44.15}/seleniumbase/plugins/pytest_plugin.py +178 -17
  21. {seleniumbase-4.43.2 → seleniumbase-4.44.15}/seleniumbase/plugins/sb_manager.py +134 -16
  22. {seleniumbase-4.43.2 → seleniumbase-4.44.15}/seleniumbase/plugins/selenium_plugin.py +125 -0
  23. seleniumbase-4.44.15/seleniumbase/resources/__init__.py +0 -0
  24. {seleniumbase-4.43.2 → seleniumbase-4.44.15}/seleniumbase/undetected/cdp.py +1 -12
  25. {seleniumbase-4.43.2 → seleniumbase-4.44.15}/seleniumbase/undetected/cdp_driver/browser.py +205 -99
  26. {seleniumbase-4.43.2 → seleniumbase-4.44.15}/seleniumbase/undetected/cdp_driver/cdp_util.py +25 -1
  27. {seleniumbase-4.43.2 → seleniumbase-4.44.15}/seleniumbase/undetected/cdp_driver/config.py +13 -4
  28. {seleniumbase-4.43.2 → seleniumbase-4.44.15}/seleniumbase/undetected/cdp_driver/connection.py +4 -35
  29. {seleniumbase-4.43.2 → seleniumbase-4.44.15}/seleniumbase/undetected/cdp_driver/element.py +81 -21
  30. {seleniumbase-4.43.2 → seleniumbase-4.44.15}/seleniumbase/undetected/cdp_driver/tab.py +14 -23
  31. seleniumbase-4.44.15/seleniumbase/utilities/__init__.py +0 -0
  32. seleniumbase-4.44.15/seleniumbase/utilities/selenium_grid/__init__.py +0 -0
  33. seleniumbase-4.44.15/seleniumbase/utilities/selenium_ide/__init__.py +0 -0
  34. {seleniumbase-4.43.2 → seleniumbase-4.44.15/seleniumbase.egg-info}/PKG-INFO +35 -25
  35. {seleniumbase-4.43.2 → seleniumbase-4.44.15}/seleniumbase.egg-info/SOURCES.txt +4 -0
  36. {seleniumbase-4.43.2 → seleniumbase-4.44.15}/seleniumbase.egg-info/requires.txt +20 -12
  37. {seleniumbase-4.43.2 → seleniumbase-4.44.15}/setup.py +20 -12
  38. seleniumbase-4.43.2/seleniumbase/__version__.py +0 -2
  39. {seleniumbase-4.43.2 → seleniumbase-4.44.15}/.gitignore +0 -0
  40. {seleniumbase-4.43.2 → seleniumbase-4.44.15}/LICENSE +0 -0
  41. {seleniumbase-4.43.2 → seleniumbase-4.44.15}/MANIFEST.in +0 -0
  42. {seleniumbase-4.43.2 → seleniumbase-4.44.15}/install.sh +0 -0
  43. {seleniumbase-4.43.2 → seleniumbase-4.44.15}/pytest.ini +0 -0
  44. {seleniumbase-4.43.2 → seleniumbase-4.44.15}/sbase/__init__.py +0 -0
  45. {seleniumbase-4.43.2 → seleniumbase-4.44.15}/sbase/__main__.py +0 -0
  46. {seleniumbase-4.43.2 → seleniumbase-4.44.15}/sbase/steps.py +0 -0
  47. {seleniumbase-4.43.2 → seleniumbase-4.44.15}/seleniumbase/__init__.py +0 -0
  48. {seleniumbase-4.43.2 → seleniumbase-4.44.15}/seleniumbase/__main__.py +0 -0
  49. {seleniumbase-4.43.2 → seleniumbase-4.44.15}/seleniumbase/behave/__init__.py +0 -0
  50. {seleniumbase-4.43.2 → seleniumbase-4.44.15}/seleniumbase/behave/behave_helper.py +0 -0
  51. {seleniumbase-4.43.2 → seleniumbase-4.44.15}/seleniumbase/behave/steps.py +0 -0
  52. {seleniumbase-4.43.2 → seleniumbase-4.44.15}/seleniumbase/common/__init__.py +0 -0
  53. {seleniumbase-4.43.2 → seleniumbase-4.44.15}/seleniumbase/common/decorators.py +0 -0
  54. {seleniumbase-4.43.2 → seleniumbase-4.44.15}/seleniumbase/common/encryption.py +0 -0
  55. {seleniumbase-4.43.2 → seleniumbase-4.44.15}/seleniumbase/common/exceptions.py +0 -0
  56. {seleniumbase-4.43.2 → seleniumbase-4.44.15}/seleniumbase/common/obfuscate.py +0 -0
  57. {seleniumbase-4.43.2 → seleniumbase-4.44.15}/seleniumbase/common/unobfuscate.py +0 -0
  58. {seleniumbase-4.43.2 → seleniumbase-4.44.15}/seleniumbase/config/__init__.py +0 -0
  59. {seleniumbase-4.43.2 → seleniumbase-4.44.15}/seleniumbase/config/ad_block_list.py +0 -0
  60. {seleniumbase-4.43.2 → seleniumbase-4.44.15}/seleniumbase/config/proxy_list.py +0 -0
  61. {seleniumbase-4.43.2 → seleniumbase-4.44.15}/seleniumbase/config/settings.py +0 -0
  62. {seleniumbase-4.43.2 → seleniumbase-4.44.15}/seleniumbase/console_scripts/__init__.py +0 -0
  63. {seleniumbase-4.43.2 → seleniumbase-4.44.15}/seleniumbase/console_scripts/logo_helper.py +0 -0
  64. {seleniumbase-4.43.2 → seleniumbase-4.44.15}/seleniumbase/console_scripts/rich_helper.py +0 -0
  65. {seleniumbase-4.43.2 → seleniumbase-4.44.15}/seleniumbase/console_scripts/run.py +0 -0
  66. {seleniumbase-4.43.2 → seleniumbase-4.44.15}/seleniumbase/console_scripts/sb_behave_gui.py +0 -0
  67. {seleniumbase-4.43.2 → seleniumbase-4.44.15}/seleniumbase/console_scripts/sb_caseplans.py +0 -0
  68. {seleniumbase-4.43.2 → seleniumbase-4.44.15}/seleniumbase/console_scripts/sb_commander.py +0 -0
  69. {seleniumbase-4.43.2 → seleniumbase-4.44.15}/seleniumbase/console_scripts/sb_install.py +0 -0
  70. {seleniumbase-4.43.2 → seleniumbase-4.44.15}/seleniumbase/console_scripts/sb_mkchart.py +0 -0
  71. {seleniumbase-4.43.2 → seleniumbase-4.44.15}/seleniumbase/console_scripts/sb_mkdir.py +0 -0
  72. {seleniumbase-4.43.2 → seleniumbase-4.44.15}/seleniumbase/console_scripts/sb_mkfile.py +0 -0
  73. {seleniumbase-4.43.2 → seleniumbase-4.44.15}/seleniumbase/console_scripts/sb_mkpres.py +0 -0
  74. {seleniumbase-4.43.2 → seleniumbase-4.44.15}/seleniumbase/console_scripts/sb_mkrec.py +0 -0
  75. {seleniumbase-4.43.2 → seleniumbase-4.44.15}/seleniumbase/console_scripts/sb_objectify.py +0 -0
  76. {seleniumbase-4.43.2 → seleniumbase-4.44.15}/seleniumbase/console_scripts/sb_print.py +0 -0
  77. {seleniumbase-4.43.2 → seleniumbase-4.44.15}/seleniumbase/console_scripts/sb_recorder.py +0 -0
  78. {seleniumbase-4.43.2 → seleniumbase-4.44.15}/seleniumbase/core/__init__.py +0 -0
  79. {seleniumbase-4.43.2 → seleniumbase-4.44.15}/seleniumbase/core/application_manager.py +0 -0
  80. {seleniumbase-4.43.2 → seleniumbase-4.44.15}/seleniumbase/core/capabilities_parser.py +0 -0
  81. {seleniumbase-4.43.2 → seleniumbase-4.44.15}/seleniumbase/core/colored_traceback.py +0 -0
  82. {seleniumbase-4.43.2 → seleniumbase-4.44.15}/seleniumbase/core/create_db_tables.sql +0 -0
  83. {seleniumbase-4.43.2 → seleniumbase-4.44.15}/seleniumbase/core/download_helper.py +0 -0
  84. {seleniumbase-4.43.2 → seleniumbase-4.44.15}/seleniumbase/core/encoded_images.py +0 -0
  85. {seleniumbase-4.43.2 → seleniumbase-4.44.15}/seleniumbase/core/jqc_helper.py +0 -0
  86. {seleniumbase-4.43.2 → seleniumbase-4.44.15}/seleniumbase/core/mysql.py +0 -0
  87. {seleniumbase-4.43.2 → seleniumbase-4.44.15}/seleniumbase/core/proxy_helper.py +0 -0
  88. {seleniumbase-4.43.2 → seleniumbase-4.44.15}/seleniumbase/core/recorder_helper.py +0 -0
  89. {seleniumbase-4.43.2 → seleniumbase-4.44.15}/seleniumbase/core/s3_manager.py +0 -0
  90. {seleniumbase-4.43.2 → seleniumbase-4.44.15}/seleniumbase/core/session_helper.py +0 -0
  91. {seleniumbase-4.43.2 → seleniumbase-4.44.15}/seleniumbase/core/settings_parser.py +0 -0
  92. {seleniumbase-4.43.2 → seleniumbase-4.44.15}/seleniumbase/core/style_sheet.py +0 -0
  93. {seleniumbase-4.43.2 → seleniumbase-4.44.15}/seleniumbase/core/testcase_manager.py +0 -0
  94. {seleniumbase-4.43.2 → seleniumbase-4.44.15}/seleniumbase/core/tour_helper.py +0 -0
  95. {seleniumbase-4.43.2 → seleniumbase-4.44.15}/seleniumbase/core/visual_helper.py +0 -0
  96. {seleniumbase-4.43.2 → seleniumbase-4.44.15}/seleniumbase/drivers/__init__.py +0 -0
  97. {seleniumbase-4.43.2/seleniumbase/drivers/cft_drivers → seleniumbase-4.44.15/seleniumbase/drivers/atlas_drivers}/__init__.py +0 -0
  98. {seleniumbase-4.43.2/seleniumbase/drivers/chs_drivers → seleniumbase-4.44.15/seleniumbase/drivers/brave_drivers}/__init__.py +0 -0
  99. {seleniumbase-4.43.2/seleniumbase/extensions → seleniumbase-4.44.15/seleniumbase/drivers/cft_drivers}/__init__.py +0 -0
  100. {seleniumbase-4.43.2/seleniumbase/fixtures → seleniumbase-4.44.15/seleniumbase/drivers/chs_drivers}/__init__.py +0 -0
  101. {seleniumbase-4.43.2/seleniumbase/js_code → seleniumbase-4.44.15/seleniumbase/drivers/comet_drivers}/__init__.py +0 -0
  102. {seleniumbase-4.43.2/seleniumbase/masterqa → seleniumbase-4.44.15/seleniumbase/drivers/opera_drivers}/__init__.py +0 -0
  103. {seleniumbase-4.43.2/seleniumbase/plugins → seleniumbase-4.44.15/seleniumbase/extensions}/__init__.py +0 -0
  104. {seleniumbase-4.43.2 → seleniumbase-4.44.15}/seleniumbase/extensions/ad_block.zip +0 -0
  105. {seleniumbase-4.43.2 → seleniumbase-4.44.15}/seleniumbase/extensions/disable_csp.zip +0 -0
  106. {seleniumbase-4.43.2 → seleniumbase-4.44.15}/seleniumbase/extensions/recorder.zip +0 -0
  107. {seleniumbase-4.43.2 → seleniumbase-4.44.15}/seleniumbase/extensions/sbase_ext.zip +0 -0
  108. {seleniumbase-4.43.2/seleniumbase/resources → seleniumbase-4.44.15/seleniumbase/fixtures}/__init__.py +0 -0
  109. {seleniumbase-4.43.2 → seleniumbase-4.44.15}/seleniumbase/fixtures/css_to_xpath.py +0 -0
  110. {seleniumbase-4.43.2 → seleniumbase-4.44.15}/seleniumbase/fixtures/errors.py +0 -0
  111. {seleniumbase-4.43.2 → seleniumbase-4.44.15}/seleniumbase/fixtures/page_utils.py +0 -0
  112. {seleniumbase-4.43.2 → seleniumbase-4.44.15}/seleniumbase/fixtures/shared_utils.py +0 -0
  113. {seleniumbase-4.43.2 → seleniumbase-4.44.15}/seleniumbase/fixtures/unittest_helper.py +0 -0
  114. {seleniumbase-4.43.2 → seleniumbase-4.44.15}/seleniumbase/fixtures/words.py +0 -0
  115. {seleniumbase-4.43.2 → seleniumbase-4.44.15}/seleniumbase/fixtures/xpath_to_css.py +0 -0
  116. {seleniumbase-4.43.2/seleniumbase/utilities → seleniumbase-4.44.15/seleniumbase/js_code}/__init__.py +0 -0
  117. {seleniumbase-4.43.2 → seleniumbase-4.44.15}/seleniumbase/js_code/active_css_js.py +0 -0
  118. {seleniumbase-4.43.2 → seleniumbase-4.44.15}/seleniumbase/js_code/live_js.py +0 -0
  119. {seleniumbase-4.43.2 → seleniumbase-4.44.15}/seleniumbase/js_code/recorder_js.py +0 -0
  120. {seleniumbase-4.43.2/seleniumbase/utilities/selenium_grid → seleniumbase-4.44.15/seleniumbase/masterqa}/__init__.py +0 -0
  121. {seleniumbase-4.43.2/seleniumbase/utilities/selenium_ide → seleniumbase-4.44.15/seleniumbase/plugins}/__init__.py +0 -0
  122. {seleniumbase-4.43.2 → seleniumbase-4.44.15}/seleniumbase/plugins/basic_test_info.py +0 -0
  123. {seleniumbase-4.43.2 → seleniumbase-4.44.15}/seleniumbase/plugins/db_reporting_plugin.py +0 -0
  124. {seleniumbase-4.43.2 → seleniumbase-4.44.15}/seleniumbase/plugins/page_source.py +0 -0
  125. {seleniumbase-4.43.2 → seleniumbase-4.44.15}/seleniumbase/plugins/s3_logging_plugin.py +0 -0
  126. {seleniumbase-4.43.2 → seleniumbase-4.44.15}/seleniumbase/plugins/screen_shots.py +0 -0
  127. {seleniumbase-4.43.2 → seleniumbase-4.44.15}/seleniumbase/translate/__init__.py +0 -0
  128. {seleniumbase-4.43.2 → seleniumbase-4.44.15}/seleniumbase/translate/chinese.py +0 -0
  129. {seleniumbase-4.43.2 → seleniumbase-4.44.15}/seleniumbase/translate/dutch.py +0 -0
  130. {seleniumbase-4.43.2 → seleniumbase-4.44.15}/seleniumbase/translate/french.py +0 -0
  131. {seleniumbase-4.43.2 → seleniumbase-4.44.15}/seleniumbase/translate/italian.py +0 -0
  132. {seleniumbase-4.43.2 → seleniumbase-4.44.15}/seleniumbase/translate/japanese.py +0 -0
  133. {seleniumbase-4.43.2 → seleniumbase-4.44.15}/seleniumbase/translate/korean.py +0 -0
  134. {seleniumbase-4.43.2 → seleniumbase-4.44.15}/seleniumbase/translate/master_dict.py +0 -0
  135. {seleniumbase-4.43.2 → seleniumbase-4.44.15}/seleniumbase/translate/portuguese.py +0 -0
  136. {seleniumbase-4.43.2 → seleniumbase-4.44.15}/seleniumbase/translate/russian.py +0 -0
  137. {seleniumbase-4.43.2 → seleniumbase-4.44.15}/seleniumbase/translate/spanish.py +0 -0
  138. {seleniumbase-4.43.2 → seleniumbase-4.44.15}/seleniumbase/translate/translator.py +0 -0
  139. {seleniumbase-4.43.2 → seleniumbase-4.44.15}/seleniumbase/undetected/__init__.py +0 -0
  140. {seleniumbase-4.43.2 → seleniumbase-4.44.15}/seleniumbase/undetected/cdp_driver/__init__.py +0 -0
  141. {seleniumbase-4.43.2 → seleniumbase-4.44.15}/seleniumbase/undetected/cdp_driver/_contradict.py +0 -0
  142. {seleniumbase-4.43.2 → seleniumbase-4.44.15}/seleniumbase/undetected/dprocess.py +0 -0
  143. {seleniumbase-4.43.2 → seleniumbase-4.44.15}/seleniumbase/undetected/options.py +0 -0
  144. {seleniumbase-4.43.2 → seleniumbase-4.44.15}/seleniumbase/undetected/patcher.py +0 -0
  145. {seleniumbase-4.43.2 → seleniumbase-4.44.15}/seleniumbase/undetected/reactor.py +0 -0
  146. {seleniumbase-4.43.2 → seleniumbase-4.44.15}/seleniumbase/undetected/webelement.py +0 -0
  147. {seleniumbase-4.43.2 → seleniumbase-4.44.15}/seleniumbase/utilities/selenium_grid/download_selenium_server.py +0 -0
  148. {seleniumbase-4.43.2 → seleniumbase-4.44.15}/seleniumbase/utilities/selenium_grid/font_color +0 -0
  149. {seleniumbase-4.43.2 → seleniumbase-4.44.15}/seleniumbase/utilities/selenium_grid/grid-hub +0 -0
  150. {seleniumbase-4.43.2 → seleniumbase-4.44.15}/seleniumbase/utilities/selenium_grid/grid-node +0 -0
  151. {seleniumbase-4.43.2 → seleniumbase-4.44.15}/seleniumbase/utilities/selenium_grid/grid_hub.py +0 -0
  152. {seleniumbase-4.43.2 → seleniumbase-4.44.15}/seleniumbase/utilities/selenium_grid/grid_node.py +0 -0
  153. {seleniumbase-4.43.2 → seleniumbase-4.44.15}/seleniumbase/utilities/selenium_grid/register-grid-node.bat +0 -0
  154. {seleniumbase-4.43.2 → seleniumbase-4.44.15}/seleniumbase/utilities/selenium_grid/register-grid-node.sh +0 -0
  155. {seleniumbase-4.43.2 → seleniumbase-4.44.15}/seleniumbase/utilities/selenium_grid/start-grid-hub.bat +0 -0
  156. {seleniumbase-4.43.2 → seleniumbase-4.44.15}/seleniumbase/utilities/selenium_grid/start-grid-hub.sh +0 -0
  157. {seleniumbase-4.43.2 → seleniumbase-4.44.15}/seleniumbase/utilities/selenium_ide/convert_ide.py +0 -0
  158. {seleniumbase-4.43.2 → seleniumbase-4.44.15}/seleniumbase.egg-info/dependency_links.txt +0 -0
  159. {seleniumbase-4.43.2 → seleniumbase-4.44.15}/seleniumbase.egg-info/entry_points.txt +0 -0
  160. {seleniumbase-4.43.2 → seleniumbase-4.44.15}/seleniumbase.egg-info/top_level.txt +0 -0
  161. {seleniumbase-4.43.2 → seleniumbase-4.44.15}/setup.cfg +0 -0
  162. {seleniumbase-4.43.2 → seleniumbase-4.44.15}/virtualenv_install.sh +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: seleniumbase
3
- Version: 4.43.2
3
+ Version: 4.44.15
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,14 +60,14 @@ 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.2; python_version >= "3.9"
63
+ Requires-Dist: pip>=25.3; 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.9.0; python_version >= "3.10"
67
67
  Requires-Dist: wheel>=0.45.1
68
68
  Requires-Dist: attrs~=25.3.0; python_version < "3.9"
69
69
  Requires-Dist: attrs>=25.4.0; python_version >= "3.9"
70
- Requires-Dist: certifi>=2025.10.5
70
+ Requires-Dist: certifi>=2025.11.12
71
71
  Requires-Dist: exceptiongroup>=1.3.0
72
72
  Requires-Dist: websockets~=13.1; python_version < "3.9"
73
73
  Requires-Dist: websockets>=15.0.1; python_version >= "3.9"
@@ -75,7 +75,7 @@ Requires-Dist: filelock~=3.16.1; python_version < "3.9"
75
75
  Requires-Dist: filelock~=3.19.1; python_version >= "3.9" and python_version < "3.10"
76
76
  Requires-Dist: filelock>=3.20.0; python_version >= "3.10"
77
77
  Requires-Dist: fasteners>=0.20
78
- Requires-Dist: mycdp>=1.2.1
78
+ Requires-Dist: mycdp>=1.3.0
79
79
  Requires-Dist: pynose>=1.5.5
80
80
  Requires-Dist: platformdirs~=4.3.6; python_version < "3.9"
81
81
  Requires-Dist: platformdirs~=4.4.0; python_version >= "3.9" and python_version < "3.10"
@@ -94,7 +94,7 @@ Requires-Dist: pyyaml>=6.0.3
94
94
  Requires-Dist: pygments>=2.19.2
95
95
  Requires-Dist: pyreadline3>=3.5.4; platform_system == "Windows"
96
96
  Requires-Dist: tabcompleter>=1.4.0
97
- Requires-Dist: pdbp>=1.8.0
97
+ Requires-Dist: pdbp>=1.8.1
98
98
  Requires-Dist: idna>=3.11
99
99
  Requires-Dist: chardet==5.2.0
100
100
  Requires-Dist: charset-normalizer<4,>=3.4.4
@@ -106,24 +106,28 @@ Requires-Dist: sniffio==1.3.1
106
106
  Requires-Dist: h11==0.16.0
107
107
  Requires-Dist: outcome==1.3.0.post0
108
108
  Requires-Dist: trio==0.27.0; python_version < "3.9"
109
- Requires-Dist: trio<1,>=0.31.0; python_version >= "3.9"
109
+ Requires-Dist: trio<1,>=0.31.0; python_version >= "3.9" and python_version < "3.10"
110
+ Requires-Dist: trio<1,>=0.32.0; python_version >= "3.10"
110
111
  Requires-Dist: trio-websocket~=0.12.2
111
- Requires-Dist: wsproto==1.2.0
112
+ Requires-Dist: wsproto==1.2.0; python_version < "3.10"
113
+ Requires-Dist: wsproto==1.3.1; python_version >= "3.10"
112
114
  Requires-Dist: websocket-client~=1.8.0; python_version < "3.9"
113
115
  Requires-Dist: websocket-client~=1.9.0; python_version >= "3.9"
114
116
  Requires-Dist: selenium==4.27.1; python_version < "3.9"
115
117
  Requires-Dist: selenium==4.32.0; python_version >= "3.9" and python_version < "3.10"
116
- Requires-Dist: selenium==4.37.0; python_version >= "3.10"
118
+ Requires-Dist: selenium==4.38.0; python_version >= "3.10"
117
119
  Requires-Dist: cssselect==1.2.0; python_version < "3.9"
118
120
  Requires-Dist: cssselect==1.3.0; python_version >= "3.9"
119
121
  Requires-Dist: sortedcontainers==2.4.0
120
- Requires-Dist: execnet==2.1.1
122
+ Requires-Dist: execnet==2.1.1; python_version < "3.10"
123
+ Requires-Dist: execnet==2.1.2; python_version >= "3.10"
121
124
  Requires-Dist: iniconfig==2.1.0; python_version < "3.10"
122
125
  Requires-Dist: iniconfig==2.3.0; python_version >= "3.10"
123
126
  Requires-Dist: pluggy==1.5.0; python_version < "3.9"
124
127
  Requires-Dist: pluggy==1.6.0; python_version >= "3.9"
125
128
  Requires-Dist: pytest==8.3.5; python_version < "3.9"
126
- Requires-Dist: pytest==8.4.2; python_version >= "3.9"
129
+ Requires-Dist: pytest==8.4.2; python_version >= "3.9" and python_version < "3.11"
130
+ Requires-Dist: pytest==9.0.1; python_version >= "3.11"
127
131
  Requires-Dist: pytest-html==4.0.2
128
132
  Requires-Dist: pytest-metadata==3.1.1
129
133
  Requires-Dist: pytest-ordering==0.6
@@ -151,7 +155,7 @@ Requires-Dist: allure-behave>=2.13.5; extra == "allure"
151
155
  Provides-Extra: coverage
152
156
  Requires-Dist: coverage>=7.6.1; python_version < "3.9" and extra == "coverage"
153
157
  Requires-Dist: coverage>=7.10.7; (python_version >= "3.9" and python_version < "3.10") and extra == "coverage"
154
- Requires-Dist: coverage>=7.11.0; python_version >= "3.10" and extra == "coverage"
158
+ Requires-Dist: coverage>=7.12.0; python_version >= "3.10" and extra == "coverage"
155
159
  Requires-Dist: pytest-cov>=5.0.0; python_version < "3.9" and extra == "coverage"
156
160
  Requires-Dist: pytest-cov>=7.0.0; python_version >= "3.9" and extra == "coverage"
157
161
  Provides-Extra: flake8
@@ -170,7 +174,7 @@ Requires-Dist: mss==9.0.2; python_version < "3.9" and extra == "mss"
170
174
  Requires-Dist: mss==10.0.0; python_version >= "3.9" and extra == "mss"
171
175
  Provides-Extra: pdfminer
172
176
  Requires-Dist: pdfminer.six==20250324; python_version < "3.9" and extra == "pdfminer"
173
- Requires-Dist: pdfminer.six==20250506; python_version >= "3.9" and extra == "pdfminer"
177
+ Requires-Dist: pdfminer.six==20251107; python_version >= "3.9" and extra == "pdfminer"
174
178
  Requires-Dist: cryptography==39.0.2; python_version < "3.9" and extra == "pdfminer"
175
179
  Requires-Dist: cryptography==46.0.3; python_version >= "3.9" and extra == "pdfminer"
176
180
  Requires-Dist: cffi==1.17.1; python_version < "3.9" and extra == "pdfminer"
@@ -186,7 +190,7 @@ Requires-Dist: pip-system-certs==4.0; platform_system == "Windows" and extra ==
186
190
  Provides-Extra: proxy
187
191
  Requires-Dist: proxy.py==2.4.3; extra == "proxy"
188
192
  Provides-Extra: psutil
189
- Requires-Dist: psutil==7.1.0; extra == "psutil"
193
+ Requires-Dist: psutil==7.1.2; extra == "psutil"
190
194
  Provides-Extra: pyautogui
191
195
  Requires-Dist: PyAutoGUI>=0.9.54; platform_system != "Linux" and extra == "pyautogui"
192
196
  Provides-Extra: selenium-stealth
@@ -273,29 +277,31 @@ Dynamic: summary
273
277
  <br />
274
278
  </p>
275
279
 
276
- <p>SeleniumBase is a browser automation framework for the modern web. Both new and experienced Python users alike can easily get started. With special stealth features like UC Mode and CDP Mode, you'll be evading bot-detection and bypassing CAPTCHAs in minutes.</p>
280
+ <p>SeleniumBase is a browser automation framework that empowers software teams to innovate faster and handle modern web challenges with ease. With stealth options like CDP Mode, you'll avoid the usual restrictions imposed by websites deploying bot-detection services.</p>
277
281
 
278
282
  --------
279
283
 
280
284
  📚 Learn from [**over 200 examples** in the **SeleniumBase/examples/** folder](https://github.com/seleniumbase/SeleniumBase/tree/master/examples).
281
285
 
282
- 🐙 Stealth modes: <a translate="no" href="https://github.com/seleniumbase/SeleniumBase/blob/master/help_docs/uc_mode.md"><b>UC Mode</b></a> and <a translate="no" href="https://github.com/seleniumbase/SeleniumBase/blob/master/examples/cdp_mode/ReadMe.md"><b>CDP Mode</b></a> help you evade bot-detection.
286
+ 🐙 Stealth modes: <a translate="no" href="https://github.com/seleniumbase/SeleniumBase/blob/master/help_docs/uc_mode.md"><b>UC Mode</b></a> and <a translate="no" href="https://github.com/seleniumbase/SeleniumBase/blob/master/examples/cdp_mode/ReadMe.md"><b>CDP Mode</b></a> can bypass bot-detection, solve CAPTCHAs, and call advanced methods from the <a href="https://chromedevtools.github.io/devtools-protocol/" translate="no">Chrome Devtools Protocol</a>.
283
287
 
284
- ℹ️ Most scripts run with raw <code translate="no"><b>python</b></code>, although some scripts use <a href="https://github.com/seleniumbase/SeleniumBase/blob/master/help_docs/syntax_formats.md">Syntax Formats</a> that expect <a href="https://docs.pytest.org/en/latest/how-to/usage.html" translate="no"><b>pytest</b></a> (a Python unit-testing framework included with SeleniumBase that can discover, collect, and run tests automatically).
288
+ ℹ️ Many examples run with raw <code translate="no"><b>python</b></code>, although some use <a href="https://github.com/seleniumbase/SeleniumBase/blob/master/help_docs/syntax_formats.md">Syntax Formats</a> that expect <a href="https://docs.pytest.org/en/latest/how-to/usage.html" translate="no"><b>pytest</b></a> (a Python unit-testing framework included with SeleniumBase that can discover, collect, and run tests automatically).
285
289
 
286
290
  --------
287
291
 
288
- <p align="left">📗 Here's a test script that performs a Google Search using SeleniumBase UC Mode:<br /><a href="https://github.com/seleniumbase/SeleniumBase/blob/master/examples/raw_google.py">SeleniumBase/examples/raw_google.py</a> (Results are saved as PDF, HTML, and PNG)</p>
292
+ <p align="left">📗 This script performs a Google Search using SeleniumBase UC Mode + CDP Mode:<br /><a href="https://github.com/seleniumbase/SeleniumBase/blob/master/examples/raw_google.py">SeleniumBase/examples/raw_google.py</a> (Results are saved as PDF, HTML, and PNG)</p>
289
293
 
290
294
  ```python
291
295
  from seleniumbase import SB
292
296
 
293
- with SB(test=True, uc=True) as sb:
294
- sb.open("https://google.com/ncr")
297
+ with SB(uc=True, test=True) as sb:
298
+ url = "https://google.com/ncr"
299
+ sb.activate_cdp_mode(url)
295
300
  sb.type('[title="Search"]', "SeleniumBase GitHub page")
296
301
  sb.click("div:not([jsname]) > * > input")
302
+ sb.sleep(2)
297
303
  print(sb.get_page_title())
298
- sb.sleep(2) # Wait for the "AI Overview" result
304
+ sb.sleep(1) # Wait for the "AI Overview" result
299
305
  if sb.is_text_visible("Generating"):
300
306
  sb.wait_for_text("AI Overview")
301
307
  sb.save_as_pdf_to_logs() # Saved to ./latest_logs/
@@ -317,8 +323,8 @@ from seleniumbase import SB
317
323
  with SB(uc=True, test=True, locale="en") as sb:
318
324
  url = "https://gitlab.com/users/sign_in"
319
325
  sb.activate_cdp_mode(url)
320
- sb.sleep(2.2)
321
- sb.uc_gui_click_captcha()
326
+ sb.sleep(2)
327
+ sb.solve_captcha()
322
328
  # (The rest is for testing and demo purposes)
323
329
  sb.assert_text("Username", '[for="user_login"]', timeout=3)
324
330
  sb.assert_element('label[for="user_login"]')
@@ -335,9 +341,9 @@ with SB(uc=True, test=True, locale="en") as sb:
335
341
  from seleniumbase import sb_cdp
336
342
 
337
343
  url = "https://gitlab.com/users/sign_in"
338
- sb = sb_cdp.Chrome(url)
339
- sb.sleep(2.5)
340
- sb.gui_click_captcha()
344
+ sb = sb_cdp.Chrome(url, incognito=True)
345
+ sb.sleep(2)
346
+ sb.solve_captcha()
341
347
  sb.highlight('h1:contains("GitLab")')
342
348
  sb.highlight('button:contains("Sign in")')
343
349
  sb.driver.stop()
@@ -871,6 +877,10 @@ pytest test_coffee_cart.py --trace
871
877
  --edge # (Shortcut for "--browser=edge".)
872
878
  --firefox # (Shortcut for "--browser=firefox".)
873
879
  --safari # (Shortcut for "--browser=safari".)
880
+ --opera # (Shortcut for "--browser=opera".)
881
+ --brave # (Shortcut for "--browser=brave".)
882
+ --comet # (Shortcut for "--browser=comet".)
883
+ --atlas # (Shortcut for "--browser=atlas".)
874
884
  --settings-file=FILE # (Override default SeleniumBase settings.)
875
885
  --env=ENV # (Set the test env. Access with "self.env" in tests.)
876
886
  --account=STR # (Set account. Access with "self.account" in tests.)
@@ -54,29 +54,31 @@
54
54
  <br />
55
55
  </p>
56
56
 
57
- <p>SeleniumBase is a browser automation framework for the modern web. Both new and experienced Python users alike can easily get started. With special stealth features like UC Mode and CDP Mode, you'll be evading bot-detection and bypassing CAPTCHAs in minutes.</p>
57
+ <p>SeleniumBase is a browser automation framework that empowers software teams to innovate faster and handle modern web challenges with ease. With stealth options like CDP Mode, you'll avoid the usual restrictions imposed by websites deploying bot-detection services.</p>
58
58
 
59
59
  --------
60
60
 
61
61
  📚 Learn from [**over 200 examples** in the **SeleniumBase/examples/** folder](https://github.com/seleniumbase/SeleniumBase/tree/master/examples).
62
62
 
63
- 🐙 Stealth modes: <a translate="no" href="https://github.com/seleniumbase/SeleniumBase/blob/master/help_docs/uc_mode.md"><b>UC Mode</b></a> and <a translate="no" href="https://github.com/seleniumbase/SeleniumBase/blob/master/examples/cdp_mode/ReadMe.md"><b>CDP Mode</b></a> help you evade bot-detection.
63
+ 🐙 Stealth modes: <a translate="no" href="https://github.com/seleniumbase/SeleniumBase/blob/master/help_docs/uc_mode.md"><b>UC Mode</b></a> and <a translate="no" href="https://github.com/seleniumbase/SeleniumBase/blob/master/examples/cdp_mode/ReadMe.md"><b>CDP Mode</b></a> can bypass bot-detection, solve CAPTCHAs, and call advanced methods from the <a href="https://chromedevtools.github.io/devtools-protocol/" translate="no">Chrome Devtools Protocol</a>.
64
64
 
65
- ℹ️ Most scripts run with raw <code translate="no"><b>python</b></code>, although some scripts use <a href="https://github.com/seleniumbase/SeleniumBase/blob/master/help_docs/syntax_formats.md">Syntax Formats</a> that expect <a href="https://docs.pytest.org/en/latest/how-to/usage.html" translate="no"><b>pytest</b></a> (a Python unit-testing framework included with SeleniumBase that can discover, collect, and run tests automatically).
65
+ ℹ️ Many examples run with raw <code translate="no"><b>python</b></code>, although some use <a href="https://github.com/seleniumbase/SeleniumBase/blob/master/help_docs/syntax_formats.md">Syntax Formats</a> that expect <a href="https://docs.pytest.org/en/latest/how-to/usage.html" translate="no"><b>pytest</b></a> (a Python unit-testing framework included with SeleniumBase that can discover, collect, and run tests automatically).
66
66
 
67
67
  --------
68
68
 
69
- <p align="left">📗 Here's a test script that performs a Google Search using SeleniumBase UC Mode:<br /><a href="https://github.com/seleniumbase/SeleniumBase/blob/master/examples/raw_google.py">SeleniumBase/examples/raw_google.py</a> (Results are saved as PDF, HTML, and PNG)</p>
69
+ <p align="left">📗 This script performs a Google Search using SeleniumBase UC Mode + CDP Mode:<br /><a href="https://github.com/seleniumbase/SeleniumBase/blob/master/examples/raw_google.py">SeleniumBase/examples/raw_google.py</a> (Results are saved as PDF, HTML, and PNG)</p>
70
70
 
71
71
  ```python
72
72
  from seleniumbase import SB
73
73
 
74
- with SB(test=True, uc=True) as sb:
75
- sb.open("https://google.com/ncr")
74
+ with SB(uc=True, test=True) as sb:
75
+ url = "https://google.com/ncr"
76
+ sb.activate_cdp_mode(url)
76
77
  sb.type('[title="Search"]', "SeleniumBase GitHub page")
77
78
  sb.click("div:not([jsname]) > * > input")
79
+ sb.sleep(2)
78
80
  print(sb.get_page_title())
79
- sb.sleep(2) # Wait for the "AI Overview" result
81
+ sb.sleep(1) # Wait for the "AI Overview" result
80
82
  if sb.is_text_visible("Generating"):
81
83
  sb.wait_for_text("AI Overview")
82
84
  sb.save_as_pdf_to_logs() # Saved to ./latest_logs/
@@ -98,8 +100,8 @@ from seleniumbase import SB
98
100
  with SB(uc=True, test=True, locale="en") as sb:
99
101
  url = "https://gitlab.com/users/sign_in"
100
102
  sb.activate_cdp_mode(url)
101
- sb.sleep(2.2)
102
- sb.uc_gui_click_captcha()
103
+ sb.sleep(2)
104
+ sb.solve_captcha()
103
105
  # (The rest is for testing and demo purposes)
104
106
  sb.assert_text("Username", '[for="user_login"]', timeout=3)
105
107
  sb.assert_element('label[for="user_login"]')
@@ -116,9 +118,9 @@ with SB(uc=True, test=True, locale="en") as sb:
116
118
  from seleniumbase import sb_cdp
117
119
 
118
120
  url = "https://gitlab.com/users/sign_in"
119
- sb = sb_cdp.Chrome(url)
120
- sb.sleep(2.5)
121
- sb.gui_click_captcha()
121
+ sb = sb_cdp.Chrome(url, incognito=True)
122
+ sb.sleep(2)
123
+ sb.solve_captcha()
122
124
  sb.highlight('h1:contains("GitLab")')
123
125
  sb.highlight('button:contains("Sign in")')
124
126
  sb.driver.stop()
@@ -652,6 +654,10 @@ pytest test_coffee_cart.py --trace
652
654
  --edge # (Shortcut for "--browser=edge".)
653
655
  --firefox # (Shortcut for "--browser=firefox".)
654
656
  --safari # (Shortcut for "--browser=safari".)
657
+ --opera # (Shortcut for "--browser=opera".)
658
+ --brave # (Shortcut for "--browser=brave".)
659
+ --comet # (Shortcut for "--browser=comet".)
660
+ --atlas # (Shortcut for "--browser=atlas".)
655
661
  --settings-file=FILE # (Override default SeleniumBase settings.)
656
662
  --env=ENV # (Set the test env. Access with "self.env" in tests.)
657
663
  --account=STR # (Set account. Access with "self.account" in tests.)
@@ -43,6 +43,10 @@ packages = [
43
43
  "seleniumbase.drivers",
44
44
  "seleniumbase.drivers.cft_drivers",
45
45
  "seleniumbase.drivers.chs_drivers",
46
+ "seleniumbase.drivers.opera_drivers",
47
+ "seleniumbase.drivers.brave_drivers",
48
+ "seleniumbase.drivers.comet_drivers",
49
+ "seleniumbase.drivers.atlas_drivers",
46
50
  "seleniumbase.extensions",
47
51
  "seleniumbase.fixtures",
48
52
  "seleniumbase.js_code",
@@ -1,12 +1,12 @@
1
1
  pip>=25.0.1;python_version<"3.9"
2
- pip>=25.2;python_version>="3.9"
2
+ pip>=25.3;python_version>="3.9"
3
3
  packaging>=25.0
4
4
  setuptools~=70.2;python_version<"3.10"
5
5
  setuptools>=80.9.0;python_version>="3.10"
6
6
  wheel>=0.45.1
7
7
  attrs~=25.3.0;python_version<"3.9"
8
8
  attrs>=25.4.0;python_version>="3.9"
9
- certifi>=2025.10.5
9
+ certifi>=2025.11.12
10
10
  exceptiongroup>=1.3.0
11
11
  websockets~=13.1;python_version<"3.9"
12
12
  websockets>=15.0.1;python_version>="3.9"
@@ -14,7 +14,7 @@ filelock~=3.16.1;python_version<"3.9"
14
14
  filelock~=3.19.1;python_version>="3.9" and python_version<"3.10"
15
15
  filelock>=3.20.0;python_version>="3.10"
16
16
  fasteners>=0.20
17
- mycdp>=1.2.1
17
+ mycdp>=1.3.0
18
18
  pynose>=1.5.5
19
19
  platformdirs~=4.3.6;python_version<"3.9"
20
20
  platformdirs~=4.4.0;python_version>="3.9" and python_version<"3.10"
@@ -33,7 +33,7 @@ pyyaml>=6.0.3
33
33
  pygments>=2.19.2
34
34
  pyreadline3>=3.5.4;platform_system=="Windows"
35
35
  tabcompleter>=1.4.0
36
- pdbp>=1.8.0
36
+ pdbp>=1.8.1
37
37
  idna>=3.11
38
38
  chardet==5.2.0
39
39
  charset-normalizer>=3.4.4,<4
@@ -45,24 +45,28 @@ sniffio==1.3.1
45
45
  h11==0.16.0
46
46
  outcome==1.3.0.post0
47
47
  trio==0.27.0;python_version<"3.9"
48
- trio>=0.31.0,<1;python_version>="3.9"
48
+ trio>=0.31.0,<1;python_version>="3.9" and python_version<"3.10"
49
+ trio>=0.32.0,<1;python_version>="3.10"
49
50
  trio-websocket~=0.12.2
50
- wsproto==1.2.0
51
+ wsproto==1.2.0;python_version<"3.10"
52
+ wsproto==1.3.1;python_version>="3.10"
51
53
  websocket-client~=1.8.0;python_version<"3.9"
52
54
  websocket-client~=1.9.0;python_version>="3.9"
53
55
  selenium==4.27.1;python_version<"3.9"
54
56
  selenium==4.32.0;python_version>="3.9" and python_version<"3.10"
55
- selenium==4.37.0;python_version>="3.10"
57
+ selenium==4.38.0;python_version>="3.10"
56
58
  cssselect==1.2.0;python_version<"3.9"
57
59
  cssselect==1.3.0;python_version>="3.9"
58
60
  sortedcontainers==2.4.0
59
- execnet==2.1.1
61
+ execnet==2.1.1;python_version<"3.10"
62
+ execnet==2.1.2;python_version>="3.10"
60
63
  iniconfig==2.1.0;python_version<"3.10"
61
64
  iniconfig==2.3.0;python_version>="3.10"
62
65
  pluggy==1.5.0;python_version<"3.9"
63
66
  pluggy==1.6.0;python_version>="3.9"
64
67
  pytest==8.3.5;python_version<"3.9"
65
- pytest==8.4.2;python_version>="3.9"
68
+ pytest==8.4.2;python_version>="3.9" and python_version<"3.11"
69
+ pytest==9.0.1;python_version>="3.11"
66
70
  pytest-html==4.0.2
67
71
  pytest-metadata==3.1.1
68
72
  pytest-ordering==0.6
@@ -89,7 +93,7 @@ rich>=14.2.0,<15
89
93
 
90
94
  coverage>=7.6.1;python_version<"3.9"
91
95
  coverage>=7.10.7;python_version>="3.9" and python_version<"3.10"
92
- coverage>=7.11.0;python_version>="3.10"
96
+ coverage>=7.12.0;python_version>="3.10"
93
97
  pytest-cov>=5.0.0;python_version<"3.9"
94
98
  pytest-cov>=7.0.0;python_version>="3.9"
95
99
  flake8==5.0.4;python_version<"3.9"
@@ -0,0 +1,2 @@
1
+ # seleniumbase package
2
+ __version__ = "4.44.15"
@@ -113,6 +113,7 @@ import sys
113
113
  from contextlib import suppress
114
114
  from seleniumbase import config as sb_config
115
115
  from seleniumbase.config import settings
116
+ from seleniumbase.core import detect_b_ver
116
117
  from seleniumbase.core import download_helper
117
118
  from seleniumbase.core import log_helper
118
119
  from seleniumbase.core import proxy_helper
@@ -890,6 +891,13 @@ def get_configured_sb(context):
890
891
  "\nOnly ONE default browser is allowed!\n"
891
892
  "%s browsers were selected: %s" % (len(browsers), browsers)
892
893
  )
894
+ if sb.browser in ["opera", "brave", "comet", "atlas"]:
895
+ bin_loc = detect_b_ver.get_binary_location(sb.browser)
896
+ if bin_loc and os.path.exists(bin_loc):
897
+ sb_config._cdp_browser = sb.browser
898
+ sb_config._cdp_bin_loc = bin_loc
899
+ sb_config.binary_location = bin_loc
900
+ sb.binary_location = bin_loc
893
901
  # Recorder Mode can still optimize scripts in "-D headless2" mode.
894
902
  if sb.recorder_ext and sb.headless:
895
903
  sb.headless = False