seleniumbase 4.44.15__tar.gz → 4.45.1__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 (163) hide show
  1. {seleniumbase-4.44.15/seleniumbase.egg-info → seleniumbase-4.45.1}/PKG-INFO +51 -78
  2. {seleniumbase-4.44.15 → seleniumbase-4.45.1}/README.md +8 -9
  3. seleniumbase-4.45.1/requirements.txt +84 -0
  4. seleniumbase-4.45.1/seleniumbase/__version__.py +2 -0
  5. {seleniumbase-4.44.15 → seleniumbase-4.45.1}/seleniumbase/console_scripts/sb_install.py +6 -10
  6. {seleniumbase-4.44.15 → seleniumbase-4.45.1}/seleniumbase/console_scripts/sb_mkrec.py +20 -0
  7. {seleniumbase-4.44.15 → seleniumbase-4.45.1}/seleniumbase/console_scripts/sb_recorder.py +38 -3
  8. {seleniumbase-4.44.15 → seleniumbase-4.45.1}/seleniumbase/core/browser_launcher.py +63 -55
  9. {seleniumbase-4.44.15 → seleniumbase-4.45.1}/seleniumbase/core/log_helper.py +9 -14
  10. {seleniumbase-4.44.15 → seleniumbase-4.45.1}/seleniumbase/core/mysql.py +1 -1
  11. {seleniumbase-4.44.15 → seleniumbase-4.45.1}/seleniumbase/core/report_helper.py +2 -6
  12. {seleniumbase-4.44.15 → seleniumbase-4.45.1}/seleniumbase/core/sb_cdp.py +139 -14
  13. {seleniumbase-4.44.15 → seleniumbase-4.45.1}/seleniumbase/core/session_helper.py +2 -4
  14. {seleniumbase-4.44.15 → seleniumbase-4.45.1}/seleniumbase/fixtures/base_case.py +111 -140
  15. {seleniumbase-4.44.15 → seleniumbase-4.45.1}/seleniumbase/fixtures/js_utils.py +47 -10
  16. {seleniumbase-4.44.15 → seleniumbase-4.45.1}/seleniumbase/fixtures/page_actions.py +7 -19
  17. {seleniumbase-4.44.15 → seleniumbase-4.45.1}/seleniumbase/fixtures/page_utils.py +4 -2
  18. {seleniumbase-4.44.15 → seleniumbase-4.45.1}/seleniumbase/fixtures/shared_utils.py +2 -4
  19. {seleniumbase-4.44.15 → seleniumbase-4.45.1}/seleniumbase/plugins/pytest_plugin.py +19 -39
  20. {seleniumbase-4.44.15 → seleniumbase-4.45.1}/seleniumbase/plugins/selenium_plugin.py +5 -10
  21. {seleniumbase-4.44.15 → seleniumbase-4.45.1}/seleniumbase/undetected/__init__.py +11 -10
  22. {seleniumbase-4.44.15 → seleniumbase-4.45.1}/seleniumbase/undetected/cdp_driver/browser.py +81 -34
  23. {seleniumbase-4.44.15 → seleniumbase-4.45.1}/seleniumbase/undetected/cdp_driver/cdp_util.py +14 -0
  24. {seleniumbase-4.44.15 → seleniumbase-4.45.1}/seleniumbase/undetected/cdp_driver/config.py +6 -7
  25. {seleniumbase-4.44.15 → seleniumbase-4.45.1}/seleniumbase/undetected/cdp_driver/tab.py +367 -16
  26. {seleniumbase-4.44.15 → seleniumbase-4.45.1/seleniumbase.egg-info}/PKG-INFO +51 -78
  27. {seleniumbase-4.44.15 → seleniumbase-4.45.1}/seleniumbase.egg-info/requires.txt +39 -87
  28. {seleniumbase-4.44.15 → seleniumbase-4.45.1}/setup.py +56 -79
  29. seleniumbase-4.44.15/requirements.txt +0 -105
  30. seleniumbase-4.44.15/seleniumbase/__version__.py +0 -2
  31. {seleniumbase-4.44.15 → seleniumbase-4.45.1}/.gitignore +0 -0
  32. {seleniumbase-4.44.15 → seleniumbase-4.45.1}/LICENSE +0 -0
  33. {seleniumbase-4.44.15 → seleniumbase-4.45.1}/MANIFEST.in +0 -0
  34. {seleniumbase-4.44.15 → seleniumbase-4.45.1}/install.sh +0 -0
  35. {seleniumbase-4.44.15 → seleniumbase-4.45.1}/pyproject.toml +0 -0
  36. {seleniumbase-4.44.15 → seleniumbase-4.45.1}/pytest.ini +0 -0
  37. {seleniumbase-4.44.15 → seleniumbase-4.45.1}/sbase/__init__.py +0 -0
  38. {seleniumbase-4.44.15 → seleniumbase-4.45.1}/sbase/__main__.py +0 -0
  39. {seleniumbase-4.44.15 → seleniumbase-4.45.1}/sbase/steps.py +0 -0
  40. {seleniumbase-4.44.15 → seleniumbase-4.45.1}/seleniumbase/__init__.py +0 -0
  41. {seleniumbase-4.44.15 → seleniumbase-4.45.1}/seleniumbase/__main__.py +0 -0
  42. {seleniumbase-4.44.15 → seleniumbase-4.45.1}/seleniumbase/behave/__init__.py +0 -0
  43. {seleniumbase-4.44.15 → seleniumbase-4.45.1}/seleniumbase/behave/behave_helper.py +0 -0
  44. {seleniumbase-4.44.15 → seleniumbase-4.45.1}/seleniumbase/behave/behave_sb.py +0 -0
  45. {seleniumbase-4.44.15 → seleniumbase-4.45.1}/seleniumbase/behave/steps.py +0 -0
  46. {seleniumbase-4.44.15 → seleniumbase-4.45.1}/seleniumbase/common/__init__.py +0 -0
  47. {seleniumbase-4.44.15 → seleniumbase-4.45.1}/seleniumbase/common/decorators.py +0 -0
  48. {seleniumbase-4.44.15 → seleniumbase-4.45.1}/seleniumbase/common/encryption.py +0 -0
  49. {seleniumbase-4.44.15 → seleniumbase-4.45.1}/seleniumbase/common/exceptions.py +0 -0
  50. {seleniumbase-4.44.15 → seleniumbase-4.45.1}/seleniumbase/common/obfuscate.py +0 -0
  51. {seleniumbase-4.44.15 → seleniumbase-4.45.1}/seleniumbase/common/unobfuscate.py +0 -0
  52. {seleniumbase-4.44.15 → seleniumbase-4.45.1}/seleniumbase/config/__init__.py +0 -0
  53. {seleniumbase-4.44.15 → seleniumbase-4.45.1}/seleniumbase/config/ad_block_list.py +0 -0
  54. {seleniumbase-4.44.15 → seleniumbase-4.45.1}/seleniumbase/config/proxy_list.py +0 -0
  55. {seleniumbase-4.44.15 → seleniumbase-4.45.1}/seleniumbase/config/settings.py +0 -0
  56. {seleniumbase-4.44.15 → seleniumbase-4.45.1}/seleniumbase/console_scripts/__init__.py +0 -0
  57. {seleniumbase-4.44.15 → seleniumbase-4.45.1}/seleniumbase/console_scripts/logo_helper.py +0 -0
  58. {seleniumbase-4.44.15 → seleniumbase-4.45.1}/seleniumbase/console_scripts/rich_helper.py +0 -0
  59. {seleniumbase-4.44.15 → seleniumbase-4.45.1}/seleniumbase/console_scripts/run.py +0 -0
  60. {seleniumbase-4.44.15 → seleniumbase-4.45.1}/seleniumbase/console_scripts/sb_behave_gui.py +0 -0
  61. {seleniumbase-4.44.15 → seleniumbase-4.45.1}/seleniumbase/console_scripts/sb_caseplans.py +0 -0
  62. {seleniumbase-4.44.15 → seleniumbase-4.45.1}/seleniumbase/console_scripts/sb_commander.py +0 -0
  63. {seleniumbase-4.44.15 → seleniumbase-4.45.1}/seleniumbase/console_scripts/sb_mkchart.py +0 -0
  64. {seleniumbase-4.44.15 → seleniumbase-4.45.1}/seleniumbase/console_scripts/sb_mkdir.py +0 -0
  65. {seleniumbase-4.44.15 → seleniumbase-4.45.1}/seleniumbase/console_scripts/sb_mkfile.py +0 -0
  66. {seleniumbase-4.44.15 → seleniumbase-4.45.1}/seleniumbase/console_scripts/sb_mkpres.py +0 -0
  67. {seleniumbase-4.44.15 → seleniumbase-4.45.1}/seleniumbase/console_scripts/sb_objectify.py +0 -0
  68. {seleniumbase-4.44.15 → seleniumbase-4.45.1}/seleniumbase/console_scripts/sb_print.py +0 -0
  69. {seleniumbase-4.44.15 → seleniumbase-4.45.1}/seleniumbase/core/__init__.py +0 -0
  70. {seleniumbase-4.44.15 → seleniumbase-4.45.1}/seleniumbase/core/application_manager.py +0 -0
  71. {seleniumbase-4.44.15 → seleniumbase-4.45.1}/seleniumbase/core/capabilities_parser.py +0 -0
  72. {seleniumbase-4.44.15 → seleniumbase-4.45.1}/seleniumbase/core/colored_traceback.py +0 -0
  73. {seleniumbase-4.44.15 → seleniumbase-4.45.1}/seleniumbase/core/create_db_tables.sql +0 -0
  74. {seleniumbase-4.44.15 → seleniumbase-4.45.1}/seleniumbase/core/detect_b_ver.py +0 -0
  75. {seleniumbase-4.44.15 → seleniumbase-4.45.1}/seleniumbase/core/download_helper.py +0 -0
  76. {seleniumbase-4.44.15 → seleniumbase-4.45.1}/seleniumbase/core/encoded_images.py +0 -0
  77. {seleniumbase-4.44.15 → seleniumbase-4.45.1}/seleniumbase/core/jqc_helper.py +0 -0
  78. {seleniumbase-4.44.15 → seleniumbase-4.45.1}/seleniumbase/core/proxy_helper.py +0 -0
  79. {seleniumbase-4.44.15 → seleniumbase-4.45.1}/seleniumbase/core/recorder_helper.py +0 -0
  80. {seleniumbase-4.44.15 → seleniumbase-4.45.1}/seleniumbase/core/s3_manager.py +0 -0
  81. {seleniumbase-4.44.15 → seleniumbase-4.45.1}/seleniumbase/core/sb_driver.py +0 -0
  82. {seleniumbase-4.44.15 → seleniumbase-4.45.1}/seleniumbase/core/settings_parser.py +0 -0
  83. {seleniumbase-4.44.15 → seleniumbase-4.45.1}/seleniumbase/core/style_sheet.py +0 -0
  84. {seleniumbase-4.44.15 → seleniumbase-4.45.1}/seleniumbase/core/testcase_manager.py +0 -0
  85. {seleniumbase-4.44.15 → seleniumbase-4.45.1}/seleniumbase/core/tour_helper.py +0 -0
  86. {seleniumbase-4.44.15 → seleniumbase-4.45.1}/seleniumbase/core/visual_helper.py +0 -0
  87. {seleniumbase-4.44.15 → seleniumbase-4.45.1}/seleniumbase/drivers/__init__.py +0 -0
  88. {seleniumbase-4.44.15 → seleniumbase-4.45.1}/seleniumbase/drivers/atlas_drivers/__init__.py +0 -0
  89. {seleniumbase-4.44.15 → seleniumbase-4.45.1}/seleniumbase/drivers/brave_drivers/__init__.py +0 -0
  90. {seleniumbase-4.44.15 → seleniumbase-4.45.1}/seleniumbase/drivers/cft_drivers/__init__.py +0 -0
  91. {seleniumbase-4.44.15 → seleniumbase-4.45.1}/seleniumbase/drivers/chs_drivers/__init__.py +0 -0
  92. {seleniumbase-4.44.15 → seleniumbase-4.45.1}/seleniumbase/drivers/comet_drivers/__init__.py +0 -0
  93. {seleniumbase-4.44.15 → seleniumbase-4.45.1}/seleniumbase/drivers/opera_drivers/__init__.py +0 -0
  94. {seleniumbase-4.44.15 → seleniumbase-4.45.1}/seleniumbase/extensions/__init__.py +0 -0
  95. {seleniumbase-4.44.15 → seleniumbase-4.45.1}/seleniumbase/extensions/ad_block.zip +0 -0
  96. {seleniumbase-4.44.15 → seleniumbase-4.45.1}/seleniumbase/extensions/disable_csp.zip +0 -0
  97. {seleniumbase-4.44.15 → seleniumbase-4.45.1}/seleniumbase/extensions/recorder.zip +0 -0
  98. {seleniumbase-4.44.15 → seleniumbase-4.45.1}/seleniumbase/extensions/sbase_ext.zip +0 -0
  99. {seleniumbase-4.44.15 → seleniumbase-4.45.1}/seleniumbase/fixtures/__init__.py +0 -0
  100. {seleniumbase-4.44.15 → seleniumbase-4.45.1}/seleniumbase/fixtures/constants.py +0 -0
  101. {seleniumbase-4.44.15 → seleniumbase-4.45.1}/seleniumbase/fixtures/css_to_xpath.py +0 -0
  102. {seleniumbase-4.44.15 → seleniumbase-4.45.1}/seleniumbase/fixtures/errors.py +0 -0
  103. {seleniumbase-4.44.15 → seleniumbase-4.45.1}/seleniumbase/fixtures/unittest_helper.py +0 -0
  104. {seleniumbase-4.44.15 → seleniumbase-4.45.1}/seleniumbase/fixtures/words.py +0 -0
  105. {seleniumbase-4.44.15 → seleniumbase-4.45.1}/seleniumbase/fixtures/xpath_to_css.py +0 -0
  106. {seleniumbase-4.44.15 → seleniumbase-4.45.1}/seleniumbase/js_code/__init__.py +0 -0
  107. {seleniumbase-4.44.15 → seleniumbase-4.45.1}/seleniumbase/js_code/active_css_js.py +0 -0
  108. {seleniumbase-4.44.15 → seleniumbase-4.45.1}/seleniumbase/js_code/live_js.py +0 -0
  109. {seleniumbase-4.44.15 → seleniumbase-4.45.1}/seleniumbase/js_code/recorder_js.py +0 -0
  110. {seleniumbase-4.44.15 → seleniumbase-4.45.1}/seleniumbase/masterqa/__init__.py +0 -0
  111. {seleniumbase-4.44.15 → seleniumbase-4.45.1}/seleniumbase/masterqa/master_qa.py +0 -0
  112. {seleniumbase-4.44.15 → seleniumbase-4.45.1}/seleniumbase/plugins/__init__.py +0 -0
  113. {seleniumbase-4.44.15 → seleniumbase-4.45.1}/seleniumbase/plugins/base_plugin.py +0 -0
  114. {seleniumbase-4.44.15 → seleniumbase-4.45.1}/seleniumbase/plugins/basic_test_info.py +0 -0
  115. {seleniumbase-4.44.15 → seleniumbase-4.45.1}/seleniumbase/plugins/db_reporting_plugin.py +0 -0
  116. {seleniumbase-4.44.15 → seleniumbase-4.45.1}/seleniumbase/plugins/driver_manager.py +0 -0
  117. {seleniumbase-4.44.15 → seleniumbase-4.45.1}/seleniumbase/plugins/page_source.py +0 -0
  118. {seleniumbase-4.44.15 → seleniumbase-4.45.1}/seleniumbase/plugins/s3_logging_plugin.py +0 -0
  119. {seleniumbase-4.44.15 → seleniumbase-4.45.1}/seleniumbase/plugins/sb_manager.py +0 -0
  120. {seleniumbase-4.44.15 → seleniumbase-4.45.1}/seleniumbase/plugins/screen_shots.py +0 -0
  121. {seleniumbase-4.44.15 → seleniumbase-4.45.1}/seleniumbase/resources/__init__.py +0 -0
  122. {seleniumbase-4.44.15 → seleniumbase-4.45.1}/seleniumbase/translate/__init__.py +0 -0
  123. {seleniumbase-4.44.15 → seleniumbase-4.45.1}/seleniumbase/translate/chinese.py +0 -0
  124. {seleniumbase-4.44.15 → seleniumbase-4.45.1}/seleniumbase/translate/dutch.py +0 -0
  125. {seleniumbase-4.44.15 → seleniumbase-4.45.1}/seleniumbase/translate/french.py +0 -0
  126. {seleniumbase-4.44.15 → seleniumbase-4.45.1}/seleniumbase/translate/italian.py +0 -0
  127. {seleniumbase-4.44.15 → seleniumbase-4.45.1}/seleniumbase/translate/japanese.py +0 -0
  128. {seleniumbase-4.44.15 → seleniumbase-4.45.1}/seleniumbase/translate/korean.py +0 -0
  129. {seleniumbase-4.44.15 → seleniumbase-4.45.1}/seleniumbase/translate/master_dict.py +0 -0
  130. {seleniumbase-4.44.15 → seleniumbase-4.45.1}/seleniumbase/translate/portuguese.py +0 -0
  131. {seleniumbase-4.44.15 → seleniumbase-4.45.1}/seleniumbase/translate/russian.py +0 -0
  132. {seleniumbase-4.44.15 → seleniumbase-4.45.1}/seleniumbase/translate/spanish.py +0 -0
  133. {seleniumbase-4.44.15 → seleniumbase-4.45.1}/seleniumbase/translate/translator.py +0 -0
  134. {seleniumbase-4.44.15 → seleniumbase-4.45.1}/seleniumbase/undetected/cdp.py +0 -0
  135. {seleniumbase-4.44.15 → seleniumbase-4.45.1}/seleniumbase/undetected/cdp_driver/__init__.py +0 -0
  136. {seleniumbase-4.44.15 → seleniumbase-4.45.1}/seleniumbase/undetected/cdp_driver/_contradict.py +0 -0
  137. {seleniumbase-4.44.15 → seleniumbase-4.45.1}/seleniumbase/undetected/cdp_driver/connection.py +0 -0
  138. {seleniumbase-4.44.15 → seleniumbase-4.45.1}/seleniumbase/undetected/cdp_driver/element.py +0 -0
  139. {seleniumbase-4.44.15 → seleniumbase-4.45.1}/seleniumbase/undetected/dprocess.py +0 -0
  140. {seleniumbase-4.44.15 → seleniumbase-4.45.1}/seleniumbase/undetected/options.py +0 -0
  141. {seleniumbase-4.44.15 → seleniumbase-4.45.1}/seleniumbase/undetected/patcher.py +0 -0
  142. {seleniumbase-4.44.15 → seleniumbase-4.45.1}/seleniumbase/undetected/reactor.py +0 -0
  143. {seleniumbase-4.44.15 → seleniumbase-4.45.1}/seleniumbase/undetected/webelement.py +0 -0
  144. {seleniumbase-4.44.15 → seleniumbase-4.45.1}/seleniumbase/utilities/__init__.py +0 -0
  145. {seleniumbase-4.44.15 → seleniumbase-4.45.1}/seleniumbase/utilities/selenium_grid/__init__.py +0 -0
  146. {seleniumbase-4.44.15 → seleniumbase-4.45.1}/seleniumbase/utilities/selenium_grid/download_selenium_server.py +0 -0
  147. {seleniumbase-4.44.15 → seleniumbase-4.45.1}/seleniumbase/utilities/selenium_grid/font_color +0 -0
  148. {seleniumbase-4.44.15 → seleniumbase-4.45.1}/seleniumbase/utilities/selenium_grid/grid-hub +0 -0
  149. {seleniumbase-4.44.15 → seleniumbase-4.45.1}/seleniumbase/utilities/selenium_grid/grid-node +0 -0
  150. {seleniumbase-4.44.15 → seleniumbase-4.45.1}/seleniumbase/utilities/selenium_grid/grid_hub.py +0 -0
  151. {seleniumbase-4.44.15 → seleniumbase-4.45.1}/seleniumbase/utilities/selenium_grid/grid_node.py +0 -0
  152. {seleniumbase-4.44.15 → seleniumbase-4.45.1}/seleniumbase/utilities/selenium_grid/register-grid-node.bat +0 -0
  153. {seleniumbase-4.44.15 → seleniumbase-4.45.1}/seleniumbase/utilities/selenium_grid/register-grid-node.sh +0 -0
  154. {seleniumbase-4.44.15 → seleniumbase-4.45.1}/seleniumbase/utilities/selenium_grid/start-grid-hub.bat +0 -0
  155. {seleniumbase-4.44.15 → seleniumbase-4.45.1}/seleniumbase/utilities/selenium_grid/start-grid-hub.sh +0 -0
  156. {seleniumbase-4.44.15 → seleniumbase-4.45.1}/seleniumbase/utilities/selenium_ide/__init__.py +0 -0
  157. {seleniumbase-4.44.15 → seleniumbase-4.45.1}/seleniumbase/utilities/selenium_ide/convert_ide.py +0 -0
  158. {seleniumbase-4.44.15 → seleniumbase-4.45.1}/seleniumbase.egg-info/SOURCES.txt +0 -0
  159. {seleniumbase-4.44.15 → seleniumbase-4.45.1}/seleniumbase.egg-info/dependency_links.txt +0 -0
  160. {seleniumbase-4.44.15 → seleniumbase-4.45.1}/seleniumbase.egg-info/entry_points.txt +0 -0
  161. {seleniumbase-4.44.15 → seleniumbase-4.45.1}/seleniumbase.egg-info/top_level.txt +0 -0
  162. {seleniumbase-4.44.15 → seleniumbase-4.45.1}/setup.cfg +0 -0
  163. {seleniumbase-4.44.15 → seleniumbase-4.45.1}/virtualenv_install.sh +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: seleniumbase
3
- Version: 4.44.15
3
+ Version: 4.45.1
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
@@ -33,7 +33,6 @@ Classifier: Operating System :: Microsoft :: Windows
33
33
  Classifier: Operating System :: POSIX :: Linux
34
34
  Classifier: Programming Language :: Python
35
35
  Classifier: Programming Language :: Python :: 3
36
- Classifier: Programming Language :: Python :: 3.8
37
36
  Classifier: Programming Language :: Python :: 3.9
38
37
  Classifier: Programming Language :: Python :: 3.10
39
38
  Classifier: Programming Language :: Python :: 3.11
@@ -56,35 +55,28 @@ Classifier: Topic :: Software Development :: Testing
56
55
  Classifier: Topic :: Software Development :: Testing :: Acceptance
57
56
  Classifier: Topic :: Software Development :: Testing :: Traffic Generation
58
57
  Classifier: Topic :: Utilities
59
- Requires-Python: >=3.8
58
+ Requires-Python: >=3.9
60
59
  Description-Content-Type: text/markdown
61
60
  License-File: LICENSE
62
- Requires-Dist: pip>=25.0.1; python_version < "3.9"
63
- Requires-Dist: pip>=25.3; python_version >= "3.9"
61
+ Requires-Dist: pip>=25.3
64
62
  Requires-Dist: packaging>=25.0
65
63
  Requires-Dist: setuptools~=70.2; python_version < "3.10"
66
64
  Requires-Dist: setuptools>=80.9.0; python_version >= "3.10"
67
65
  Requires-Dist: wheel>=0.45.1
68
- Requires-Dist: attrs~=25.3.0; python_version < "3.9"
69
- Requires-Dist: attrs>=25.4.0; python_version >= "3.9"
66
+ Requires-Dist: attrs>=25.4.0
70
67
  Requires-Dist: certifi>=2025.11.12
71
- Requires-Dist: exceptiongroup>=1.3.0
72
- Requires-Dist: websockets~=13.1; python_version < "3.9"
73
- Requires-Dist: websockets>=15.0.1; python_version >= "3.9"
74
- Requires-Dist: filelock~=3.16.1; python_version < "3.9"
75
- Requires-Dist: filelock~=3.19.1; python_version >= "3.9" and python_version < "3.10"
68
+ Requires-Dist: exceptiongroup>=1.3.1
69
+ Requires-Dist: websockets>=15.0.1
70
+ Requires-Dist: filelock~=3.19.1; python_version < "3.10"
76
71
  Requires-Dist: filelock>=3.20.0; python_version >= "3.10"
77
72
  Requires-Dist: fasteners>=0.20
78
- Requires-Dist: mycdp>=1.3.0
73
+ Requires-Dist: mycdp>=1.3.2
79
74
  Requires-Dist: pynose>=1.5.5
80
- Requires-Dist: platformdirs~=4.3.6; python_version < "3.9"
81
- Requires-Dist: platformdirs~=4.4.0; python_version >= "3.9" and python_version < "3.10"
82
- Requires-Dist: platformdirs>=4.5.0; python_version >= "3.10"
83
- Requires-Dist: typing-extensions~=4.13.2; python_version < "3.9"
84
- Requires-Dist: typing-extensions>=4.15.0; python_version >= "3.9"
75
+ Requires-Dist: platformdirs~=4.4.0; python_version < "3.10"
76
+ Requires-Dist: platformdirs>=4.5.1; python_version >= "3.10"
77
+ Requires-Dist: typing-extensions>=4.15.0
85
78
  Requires-Dist: sbvirtualdisplay>=1.4.0
86
- Requires-Dist: MarkupSafe==2.1.5; python_version < "3.9"
87
- Requires-Dist: MarkupSafe>=3.0.3; python_version >= "3.9"
79
+ Requires-Dist: MarkupSafe>=3.0.3
88
80
  Requires-Dist: Jinja2>=3.1.6
89
81
  Requires-Dist: six>=1.17.0
90
82
  Requires-Dist: parse>=1.20.2
@@ -99,48 +91,39 @@ Requires-Dist: idna>=3.11
99
91
  Requires-Dist: chardet==5.2.0
100
92
  Requires-Dist: charset-normalizer<4,>=3.4.4
101
93
  Requires-Dist: urllib3<2,>=1.26.20; python_version < "3.10"
102
- Requires-Dist: urllib3<2.6.0,>=1.26.20; python_version >= "3.10"
103
- Requires-Dist: requests==2.32.4; python_version < "3.9"
104
- Requires-Dist: requests~=2.32.5; python_version >= "3.9"
94
+ Requires-Dist: urllib3<3,>=1.26.20; python_version >= "3.10"
95
+ Requires-Dist: requests~=2.32.5
105
96
  Requires-Dist: sniffio==1.3.1
106
97
  Requires-Dist: h11==0.16.0
107
98
  Requires-Dist: outcome==1.3.0.post0
108
- Requires-Dist: trio==0.27.0; python_version < "3.9"
109
- Requires-Dist: trio<1,>=0.31.0; python_version >= "3.9" and python_version < "3.10"
99
+ Requires-Dist: trio<1,>=0.31.0; python_version < "3.10"
110
100
  Requires-Dist: trio<1,>=0.32.0; python_version >= "3.10"
111
101
  Requires-Dist: trio-websocket~=0.12.2
112
102
  Requires-Dist: wsproto==1.2.0; python_version < "3.10"
113
- Requires-Dist: wsproto==1.3.1; python_version >= "3.10"
114
- Requires-Dist: websocket-client~=1.8.0; python_version < "3.9"
115
- Requires-Dist: websocket-client~=1.9.0; python_version >= "3.9"
116
- Requires-Dist: selenium==4.27.1; python_version < "3.9"
117
- Requires-Dist: selenium==4.32.0; python_version >= "3.9" and python_version < "3.10"
118
- Requires-Dist: selenium==4.38.0; python_version >= "3.10"
119
- Requires-Dist: cssselect==1.2.0; python_version < "3.9"
120
- Requires-Dist: cssselect==1.3.0; python_version >= "3.9"
103
+ Requires-Dist: wsproto~=1.3.2; python_version >= "3.10"
104
+ Requires-Dist: websocket-client~=1.9.0
105
+ Requires-Dist: selenium==4.32.0; python_version < "3.10"
106
+ Requires-Dist: selenium==4.39.0; python_version >= "3.10"
107
+ Requires-Dist: cssselect==1.3.0
108
+ Requires-Dist: nest-asyncio==1.6.0
121
109
  Requires-Dist: sortedcontainers==2.4.0
122
110
  Requires-Dist: execnet==2.1.1; python_version < "3.10"
123
111
  Requires-Dist: execnet==2.1.2; python_version >= "3.10"
124
112
  Requires-Dist: iniconfig==2.1.0; python_version < "3.10"
125
113
  Requires-Dist: iniconfig==2.3.0; python_version >= "3.10"
126
- Requires-Dist: pluggy==1.5.0; python_version < "3.9"
127
- Requires-Dist: pluggy==1.6.0; python_version >= "3.9"
128
- Requires-Dist: pytest==8.3.5; 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"
114
+ Requires-Dist: pluggy==1.6.0
115
+ Requires-Dist: pytest==8.4.2; python_version < "3.11"
116
+ Requires-Dist: pytest==9.0.2; python_version >= "3.11"
131
117
  Requires-Dist: pytest-html==4.0.2
132
118
  Requires-Dist: pytest-metadata==3.1.1
133
119
  Requires-Dist: pytest-ordering==0.6
134
- Requires-Dist: pytest-rerunfailures==14.0; python_version < "3.9"
135
- Requires-Dist: pytest-rerunfailures==16.0.1; python_version >= "3.9" and python_version < "3.10"
120
+ Requires-Dist: pytest-rerunfailures==16.0.1; python_version < "3.10"
136
121
  Requires-Dist: pytest-rerunfailures==16.1; python_version >= "3.10"
137
- Requires-Dist: pytest-xdist==3.6.1; python_version < "3.9"
138
- Requires-Dist: pytest-xdist==3.8.0; python_version >= "3.9"
122
+ Requires-Dist: pytest-xdist==3.8.0
139
123
  Requires-Dist: parameterized==0.9.0
140
124
  Requires-Dist: behave==1.2.6
141
- Requires-Dist: soupsieve==2.7; python_version < "3.9"
142
- Requires-Dist: soupsieve~=2.8; python_version >= "3.9"
143
- Requires-Dist: beautifulsoup4~=4.14.2
125
+ Requires-Dist: soupsieve~=2.8
126
+ Requires-Dist: beautifulsoup4~=4.14.3
144
127
  Requires-Dist: pyotp==2.9.0
145
128
  Requires-Dist: python-xlib==0.33; platform_system == "Linux"
146
129
  Requires-Dist: PyAutoGUI>=0.9.54; platform_system == "Linux"
@@ -153,44 +136,35 @@ Requires-Dist: allure-pytest>=2.13.5; extra == "allure"
153
136
  Requires-Dist: allure-python-commons>=2.13.5; extra == "allure"
154
137
  Requires-Dist: allure-behave>=2.13.5; extra == "allure"
155
138
  Provides-Extra: coverage
156
- Requires-Dist: coverage>=7.6.1; python_version < "3.9" and extra == "coverage"
157
- Requires-Dist: coverage>=7.10.7; (python_version >= "3.9" and python_version < "3.10") and extra == "coverage"
158
- Requires-Dist: coverage>=7.12.0; python_version >= "3.10" and extra == "coverage"
159
- Requires-Dist: pytest-cov>=5.0.0; python_version < "3.9" and extra == "coverage"
160
- Requires-Dist: pytest-cov>=7.0.0; python_version >= "3.9" and extra == "coverage"
139
+ Requires-Dist: coverage>=7.10.7; python_version < "3.10" and extra == "coverage"
140
+ Requires-Dist: coverage>=7.13.0; python_version >= "3.10" and extra == "coverage"
141
+ Requires-Dist: pytest-cov>=7.0.0; extra == "coverage"
161
142
  Provides-Extra: flake8
162
- Requires-Dist: flake8==5.0.4; python_version < "3.9" and extra == "flake8"
163
- Requires-Dist: flake8==7.3.0; python_version >= "3.9" and extra == "flake8"
143
+ Requires-Dist: flake8==7.3.0; extra == "flake8"
164
144
  Requires-Dist: mccabe==0.7.0; extra == "flake8"
165
- Requires-Dist: pyflakes==2.5.0; python_version < "3.9" and extra == "flake8"
166
- Requires-Dist: pyflakes==3.4.0; python_version >= "3.9" and extra == "flake8"
167
- Requires-Dist: pycodestyle==2.9.1; python_version < "3.9" and extra == "flake8"
168
- Requires-Dist: pycodestyle==2.14.0; python_version >= "3.9" and extra == "flake8"
145
+ Requires-Dist: pyflakes==3.4.0; extra == "flake8"
146
+ Requires-Dist: pycodestyle==2.14.0; extra == "flake8"
169
147
  Provides-Extra: ipdb
170
148
  Requires-Dist: ipdb==0.13.13; extra == "ipdb"
171
149
  Requires-Dist: ipython==7.34.0; extra == "ipdb"
172
150
  Provides-Extra: mss
173
- Requires-Dist: mss==9.0.2; python_version < "3.9" and extra == "mss"
174
- Requires-Dist: mss==10.0.0; python_version >= "3.9" and extra == "mss"
151
+ Requires-Dist: mss==10.1.0; extra == "mss"
175
152
  Provides-Extra: pdfminer
176
- Requires-Dist: pdfminer.six==20250324; python_version < "3.9" and extra == "pdfminer"
177
- Requires-Dist: pdfminer.six==20251107; python_version >= "3.9" and extra == "pdfminer"
178
- Requires-Dist: cryptography==39.0.2; python_version < "3.9" and extra == "pdfminer"
179
- Requires-Dist: cryptography==46.0.3; python_version >= "3.9" and extra == "pdfminer"
180
- Requires-Dist: cffi==1.17.1; python_version < "3.9" and extra == "pdfminer"
181
- Requires-Dist: cffi==2.0.0; python_version >= "3.9" and extra == "pdfminer"
182
- Requires-Dist: pycparser==2.22; python_version < "3.9" and extra == "pdfminer"
183
- Requires-Dist: pycparser==2.23; python_version >= "3.9" and extra == "pdfminer"
153
+ Requires-Dist: pdfminer.six==20251107; extra == "pdfminer"
154
+ Requires-Dist: cryptography==46.0.3; extra == "pdfminer"
155
+ Requires-Dist: cffi==2.0.0; extra == "pdfminer"
156
+ Requires-Dist: pycparser==2.23; extra == "pdfminer"
184
157
  Provides-Extra: pillow
185
- Requires-Dist: Pillow>=10.4.0; python_version < "3.9" and extra == "pillow"
186
- Requires-Dist: Pillow>=11.3.0; (python_version >= "3.9" and python_version < "3.10") and extra == "pillow"
158
+ Requires-Dist: Pillow>=11.3.0; python_version < "3.10" and extra == "pillow"
187
159
  Requires-Dist: Pillow>=12.0.0; python_version >= "3.10" and extra == "pillow"
188
160
  Provides-Extra: pip-system-certs
189
161
  Requires-Dist: pip-system-certs==4.0; platform_system == "Windows" and extra == "pip-system-certs"
190
162
  Provides-Extra: proxy
191
163
  Requires-Dist: proxy.py==2.4.3; extra == "proxy"
164
+ Provides-Extra: playwright
165
+ Requires-Dist: playwright>=1.56.0; extra == "playwright"
192
166
  Provides-Extra: psutil
193
- Requires-Dist: psutil==7.1.2; extra == "psutil"
167
+ Requires-Dist: psutil>=7.1.3; extra == "psutil"
194
168
  Provides-Extra: pyautogui
195
169
  Requires-Dist: PyAutoGUI>=0.9.54; platform_system != "Linux" and extra == "pyautogui"
196
170
  Provides-Extra: selenium-stealth
@@ -247,11 +221,11 @@ Dynamic: summary
247
221
  <a href="https://github.com/seleniumbase/SeleniumBase/blob/master/seleniumbase/console_scripts/ReadMe.md">🌠 Scripts</a> |
248
222
  <a href="https://github.com/seleniumbase/SeleniumBase/blob/master/help_docs/mobile_testing.md">📱 Mobile</a>
249
223
  <br />
250
- <a href="https://github.com/seleniumbase/SeleniumBase/blob/master/help_docs/method_summary.md">📘 APIs</a> |
251
- <a href="https://github.com/seleniumbase/SeleniumBase/blob/master/help_docs/syntax_formats.md"> 🔠 Formats</a> |
224
+ <a href="https://github.com/seleniumbase/SeleniumBase/blob/master/help_docs/method_summary.md">📘 API</a> |
225
+ <a href="https://github.com/seleniumbase/SeleniumBase/blob/master/help_docs/syntax_formats.md"> 🔠 Syntaxes</a> |
252
226
  <a href="https://github.com/seleniumbase/SeleniumBase/blob/master/help_docs/recorder_mode.md">🔴 Recorder</a> |
253
227
  <a href="https://github.com/seleniumbase/SeleniumBase/blob/master/examples/example_logs/ReadMe.md">📊 Dashboard</a> |
254
- <a href="https://github.com/seleniumbase/SeleniumBase/blob/master/help_docs/locale_codes.md">🗾 Locales</a> |
228
+ <a href="https://github.com/seleniumbase/SeleniumBase/blob/master/help_docs/locale_codes.md">🗾 Locale</a> |
255
229
  <a href="https://seleniumbase.io/devices/?url=seleniumbase.com">💻 Farm</a>
256
230
  <br />
257
231
  <a href="https://github.com/seleniumbase/SeleniumBase/blob/master/help_docs/commander.md">🎖️ GUI</a> |
@@ -262,18 +236,17 @@ Dynamic: summary
262
236
  <a href="https://github.com/seleniumbase/SeleniumBase/blob/master/seleniumbase/utilities/selenium_grid/ReadMe.md">🌐 Grid</a>
263
237
  <br />
264
238
  <a href="https://github.com/seleniumbase/SeleniumBase/blob/master/help_docs/how_it_works.md">👁️ How</a> |
265
- <a href="https://github.com/seleniumbase/SeleniumBase/tree/master/examples/migration/raw_selenium">🚝 Migrate</a> |
266
- <a href="https://github.com/seleniumbase/SeleniumBase/blob/master/help_docs/case_plans.md">🗂️ CasePlans</a> |
267
- <a href="https://github.com/seleniumbase/SeleniumBase/tree/master/examples/boilerplates">♻️ Template</a> |
268
- <a href="https://github.com/seleniumbase/SeleniumBase/blob/master/examples/master_qa/ReadMe.md">🧬 Hybrid</a> |
239
+ <a href="https://github.com/seleniumbase/SeleniumBase/tree/master/examples/migration/raw_selenium">🚝 Migration</a> |
240
+ <a href="https://github.com/seleniumbase/SeleniumBase/blob/master/examples/cdp_mode/playwright/ReadMe.md">🎭 Stealthy Playwright</a> |
241
+ <a href="https://github.com/seleniumbase/SeleniumBase/blob/master/examples/master_qa/ReadMe.md">🛂 MasterQA</a> |
269
242
  <a href="https://github.com/seleniumbase/SeleniumBase/blob/master/examples/tour_examples/ReadMe.md">🚎 Tours</a>
270
243
  <br />
271
244
  <a href="https://github.com/seleniumbase/SeleniumBase/blob/master/integrations/github/workflows/ReadMe.md">🤖 CI/CD</a> |
272
245
  <a href="https://github.com/seleniumbase/SeleniumBase/blob/master/help_docs/js_package_manager.md">🕹️ JSMgr</a> |
273
246
  <a href="https://github.com/seleniumbase/SeleniumBase/blob/master/help_docs/translations.md">🌏 Translator</a> |
274
247
  <a href="https://github.com/seleniumbase/SeleniumBase/blob/master/examples/presenter/ReadMe.md">🎞️ Presenter</a> |
275
- <a href="https://github.com/seleniumbase/SeleniumBase/blob/master/examples/dialog_boxes/ReadMe.md">🛂 Dialog</a> |
276
- <a href="https://github.com/seleniumbase/SeleniumBase/blob/master/examples/visual_testing/ReadMe.md">🖼️ Visual</a>
248
+ <a href="https://github.com/seleniumbase/SeleniumBase/blob/master/examples/visual_testing/ReadMe.md">🖼️ Visual</a> |
249
+ <a href="https://github.com/seleniumbase/SeleniumBase/blob/master/help_docs/case_plans.md">🗂️ CPlans</a>
277
250
  <br />
278
251
  </p>
279
252
 
@@ -24,11 +24,11 @@
24
24
  <a href="https://github.com/seleniumbase/SeleniumBase/blob/master/seleniumbase/console_scripts/ReadMe.md">🌠 Scripts</a> |
25
25
  <a href="https://github.com/seleniumbase/SeleniumBase/blob/master/help_docs/mobile_testing.md">📱 Mobile</a>
26
26
  <br />
27
- <a href="https://github.com/seleniumbase/SeleniumBase/blob/master/help_docs/method_summary.md">📘 APIs</a> |
28
- <a href="https://github.com/seleniumbase/SeleniumBase/blob/master/help_docs/syntax_formats.md"> 🔠 Formats</a> |
27
+ <a href="https://github.com/seleniumbase/SeleniumBase/blob/master/help_docs/method_summary.md">📘 API</a> |
28
+ <a href="https://github.com/seleniumbase/SeleniumBase/blob/master/help_docs/syntax_formats.md"> 🔠 Syntaxes</a> |
29
29
  <a href="https://github.com/seleniumbase/SeleniumBase/blob/master/help_docs/recorder_mode.md">🔴 Recorder</a> |
30
30
  <a href="https://github.com/seleniumbase/SeleniumBase/blob/master/examples/example_logs/ReadMe.md">📊 Dashboard</a> |
31
- <a href="https://github.com/seleniumbase/SeleniumBase/blob/master/help_docs/locale_codes.md">🗾 Locales</a> |
31
+ <a href="https://github.com/seleniumbase/SeleniumBase/blob/master/help_docs/locale_codes.md">🗾 Locale</a> |
32
32
  <a href="https://seleniumbase.io/devices/?url=seleniumbase.com">💻 Farm</a>
33
33
  <br />
34
34
  <a href="https://github.com/seleniumbase/SeleniumBase/blob/master/help_docs/commander.md">🎖️ GUI</a> |
@@ -39,18 +39,17 @@
39
39
  <a href="https://github.com/seleniumbase/SeleniumBase/blob/master/seleniumbase/utilities/selenium_grid/ReadMe.md">🌐 Grid</a>
40
40
  <br />
41
41
  <a href="https://github.com/seleniumbase/SeleniumBase/blob/master/help_docs/how_it_works.md">👁️ How</a> |
42
- <a href="https://github.com/seleniumbase/SeleniumBase/tree/master/examples/migration/raw_selenium">🚝 Migrate</a> |
43
- <a href="https://github.com/seleniumbase/SeleniumBase/blob/master/help_docs/case_plans.md">🗂️ CasePlans</a> |
44
- <a href="https://github.com/seleniumbase/SeleniumBase/tree/master/examples/boilerplates">♻️ Template</a> |
45
- <a href="https://github.com/seleniumbase/SeleniumBase/blob/master/examples/master_qa/ReadMe.md">🧬 Hybrid</a> |
42
+ <a href="https://github.com/seleniumbase/SeleniumBase/tree/master/examples/migration/raw_selenium">🚝 Migration</a> |
43
+ <a href="https://github.com/seleniumbase/SeleniumBase/blob/master/examples/cdp_mode/playwright/ReadMe.md">🎭 Stealthy Playwright</a> |
44
+ <a href="https://github.com/seleniumbase/SeleniumBase/blob/master/examples/master_qa/ReadMe.md">🛂 MasterQA</a> |
46
45
  <a href="https://github.com/seleniumbase/SeleniumBase/blob/master/examples/tour_examples/ReadMe.md">🚎 Tours</a>
47
46
  <br />
48
47
  <a href="https://github.com/seleniumbase/SeleniumBase/blob/master/integrations/github/workflows/ReadMe.md">🤖 CI/CD</a> |
49
48
  <a href="https://github.com/seleniumbase/SeleniumBase/blob/master/help_docs/js_package_manager.md">🕹️ JSMgr</a> |
50
49
  <a href="https://github.com/seleniumbase/SeleniumBase/blob/master/help_docs/translations.md">🌏 Translator</a> |
51
50
  <a href="https://github.com/seleniumbase/SeleniumBase/blob/master/examples/presenter/ReadMe.md">🎞️ Presenter</a> |
52
- <a href="https://github.com/seleniumbase/SeleniumBase/blob/master/examples/dialog_boxes/ReadMe.md">🛂 Dialog</a> |
53
- <a href="https://github.com/seleniumbase/SeleniumBase/blob/master/examples/visual_testing/ReadMe.md">🖼️ Visual</a>
51
+ <a href="https://github.com/seleniumbase/SeleniumBase/blob/master/examples/visual_testing/ReadMe.md">🖼️ Visual</a> |
52
+ <a href="https://github.com/seleniumbase/SeleniumBase/blob/master/help_docs/case_plans.md">🗂️ CPlans</a>
54
53
  <br />
55
54
  </p>
56
55
 
@@ -0,0 +1,84 @@
1
+ pip>=25.3
2
+ packaging>=25.0
3
+ setuptools~=70.2;python_version<"3.10"
4
+ setuptools>=80.9.0;python_version>="3.10"
5
+ wheel>=0.45.1
6
+ attrs>=25.4.0
7
+ certifi>=2025.11.12
8
+ exceptiongroup>=1.3.1
9
+ websockets>=15.0.1
10
+ filelock~=3.19.1;python_version<"3.10"
11
+ filelock>=3.20.0;python_version>="3.10"
12
+ fasteners>=0.20
13
+ mycdp>=1.3.2
14
+ pynose>=1.5.5
15
+ platformdirs~=4.4.0;python_version<"3.10"
16
+ platformdirs>=4.5.1;python_version>="3.10"
17
+ typing-extensions>=4.15.0
18
+ sbvirtualdisplay>=1.4.0
19
+ MarkupSafe>=3.0.3
20
+ Jinja2>=3.1.6
21
+ six>=1.17.0
22
+ parse>=1.20.2
23
+ parse-type>=0.6.6
24
+ colorama>=0.4.6
25
+ pyyaml>=6.0.3
26
+ pygments>=2.19.2
27
+ pyreadline3>=3.5.4;platform_system=="Windows"
28
+ tabcompleter>=1.4.0
29
+ pdbp>=1.8.1
30
+ idna>=3.11
31
+ chardet==5.2.0
32
+ charset-normalizer>=3.4.4,<4
33
+ urllib3>=1.26.20,<2;python_version<"3.10"
34
+ urllib3>=1.26.20,<3;python_version>="3.10"
35
+ requests~=2.32.5
36
+ sniffio==1.3.1
37
+ h11==0.16.0
38
+ outcome==1.3.0.post0
39
+ trio>=0.31.0,<1;python_version<"3.10"
40
+ trio>=0.32.0,<1;python_version>="3.10"
41
+ trio-websocket~=0.12.2
42
+ wsproto==1.2.0;python_version<"3.10"
43
+ wsproto~=1.3.2;python_version>="3.10"
44
+ websocket-client~=1.9.0
45
+ selenium==4.32.0;python_version<"3.10"
46
+ selenium==4.39.0;python_version>="3.10"
47
+ cssselect==1.3.0
48
+ nest-asyncio==1.6.0
49
+ sortedcontainers==2.4.0
50
+ execnet==2.1.1;python_version<"3.10"
51
+ execnet==2.1.2;python_version>="3.10"
52
+ iniconfig==2.1.0;python_version<"3.10"
53
+ iniconfig==2.3.0;python_version>="3.10"
54
+ pluggy==1.6.0
55
+ pytest==8.4.2;python_version<"3.11"
56
+ pytest==9.0.2;python_version>="3.11"
57
+ pytest-html==4.0.2
58
+ pytest-metadata==3.1.1
59
+ pytest-ordering==0.6
60
+ pytest-rerunfailures==16.0.1;python_version<"3.10"
61
+ pytest-rerunfailures==16.1;python_version>="3.10"
62
+ pytest-xdist==3.8.0
63
+ parameterized==0.9.0
64
+ behave==1.2.6
65
+ soupsieve~=2.8
66
+ beautifulsoup4~=4.14.3
67
+ pyotp==2.9.0
68
+ python-xlib==0.33;platform_system=="Linux"
69
+ PyAutoGUI>=0.9.54;platform_system=="Linux"
70
+ markdown-it-py==3.0.0;python_version<"3.10"
71
+ markdown-it-py==4.0.0;python_version>="3.10"
72
+ mdurl==0.1.2
73
+ rich>=14.2.0,<15
74
+
75
+ # --- Testing Requirements --- #
76
+ # ("pip install -r requirements.txt" also installs this, but "pip install -e ." won't.)
77
+
78
+ coverage>=7.10.7;python_version<"3.10"
79
+ coverage>=7.13.0;python_version>="3.10"
80
+ pytest-cov>=7.0.0
81
+ flake8==7.3.0
82
+ mccabe==0.7.0
83
+ pyflakes==3.4.0
84
+ pycodestyle==2.14.0
@@ -0,0 +1,2 @@
1
+ # seleniumbase package
2
+ __version__ = "4.45.1"
@@ -177,7 +177,7 @@ def requests_get_with_retry(url):
177
177
 
178
178
 
179
179
  def get_cft_known_good_versions():
180
- if hasattr(sb_config, "cft_kgv_json") and sb_config.cft_kgv_json:
180
+ if getattr(sb_config, "cft_kgv_json", None):
181
181
  return sb_config.cft_kgv_json
182
182
  cft_ngv_url = (
183
183
  "https://googlechromelabs.github.io/"
@@ -188,7 +188,7 @@ def get_cft_known_good_versions():
188
188
 
189
189
 
190
190
  def get_cft_latest_versions_per_milestone():
191
- if hasattr(sb_config, "cft_lvpm_json") and sb_config.cft_lvpm_json:
191
+ if getattr(sb_config, "cft_lvpm_json", None):
192
192
  return sb_config.cft_lvpm_json
193
193
  cft_lvpm_url = (
194
194
  "https://googlechromelabs.github.io/"
@@ -205,7 +205,7 @@ def get_cft_latest_version_from_milestone(milestone):
205
205
 
206
206
  def get_latest_chromedriver_version(channel="Stable"):
207
207
  try:
208
- if hasattr(sb_config, "cft_lkgv_json") and sb_config.cft_lkgv_json:
208
+ if getattr(sb_config, "cft_lkgv_json", None):
209
209
  return sb_config.cft_lkgv_json["channels"][channel]["version"]
210
210
  req = requests_get(
211
211
  "https://googlechromelabs.github.io/"
@@ -239,10 +239,7 @@ def get_latest_canary_chromedriver_version():
239
239
  def log_d(message):
240
240
  """If setting sb_config.settings.HIDE_DRIVER_DOWNLOADS to True,
241
241
  output from driver downloads are logged instead of printed."""
242
- if (
243
- hasattr(sb_config.settings, "HIDE_DRIVER_DOWNLOADS")
244
- and sb_config.settings.HIDE_DRIVER_DOWNLOADS
245
- ):
242
+ if getattr(sb_config.settings, "HIDE_DRIVER_DOWNLOADS", None):
246
243
  logging.debug(message)
247
244
  else:
248
245
  print(message)
@@ -251,7 +248,7 @@ def log_d(message):
251
248
  def main(override=None, intel_for_uc=None, force_uc=None):
252
249
  if override:
253
250
  found_proxy = None
254
- if hasattr(sb_config, "proxy_driver") and sb_config.proxy_driver:
251
+ if getattr(sb_config, "proxy_driver", None):
255
252
  if " --proxy=" in " ".join(sys.argv):
256
253
  for arg in sys.argv:
257
254
  if arg.startswith("--proxy="):
@@ -311,8 +308,7 @@ def main(override=None, intel_for_uc=None, force_uc=None):
311
308
  downloads_folder = DRIVER_DIR
312
309
  if (
313
310
  hasattr(sb_config, "settings")
314
- and hasattr(sb_config.settings, "NEW_DRIVER_DIR")
315
- and sb_config.settings.NEW_DRIVER_DIR
311
+ and getattr(sb_config.settings, "NEW_DRIVER_DIR", None)
316
312
  and os.path.exists(sb_config.settings.NEW_DRIVER_DIR)
317
313
  ):
318
314
  downloads_folder = sb_config.settings.NEW_DRIVER_DIR
@@ -84,6 +84,10 @@ def main():
84
84
  error_msg = None
85
85
  invalid_cmd = None
86
86
  use_edge = False
87
+ use_opera = False
88
+ use_brave = False
89
+ use_comet = False
90
+ use_atlas = False
87
91
  use_uc = False
88
92
  esc_end = False
89
93
  start_page = None
@@ -138,6 +142,14 @@ def main():
138
142
  help_me = True
139
143
  elif option.lower() == "--edge":
140
144
  use_edge = True
145
+ elif option.lower() == "--opera":
146
+ use_opera = True
147
+ elif option.lower() == "--brave":
148
+ use_brave = True
149
+ elif option.lower() == "--comet":
150
+ use_comet = True
151
+ elif option.lower() == "--atlas":
152
+ use_atlas = True
141
153
  elif option.lower() == "--ee":
142
154
  esc_end = True
143
155
  elif option.lower() in ("--gui", "--headed"):
@@ -275,6 +287,14 @@ def main():
275
287
  )
276
288
  if use_edge:
277
289
  run_cmd += " --edge"
290
+ elif use_opera:
291
+ run_cmd += " --opera"
292
+ elif use_brave:
293
+ run_cmd += " --brave"
294
+ elif use_comet:
295
+ run_cmd += " --comet"
296
+ elif use_atlas:
297
+ run_cmd += " --atlas"
278
298
  if force_gui:
279
299
  run_cmd += " --gui"
280
300
  if use_uc:
@@ -144,6 +144,14 @@ def do_recording(file_name, url, overwrite_enabled, use_chrome, window):
144
144
  )
145
145
  if not use_chrome:
146
146
  command += " --edge"
147
+ elif "--opera" in command_args:
148
+ command += " --opera"
149
+ elif "--brave" in command_args:
150
+ command += " --brave"
151
+ elif "--comet" in command_args:
152
+ command += " --comet"
153
+ elif "--atlas" in command_args:
154
+ command += " --atlas"
147
155
  if (
148
156
  "--uc" in command_args
149
157
  or "--cdp" in command_args
@@ -226,10 +234,37 @@ def create_tkinter_gui():
226
234
  chk = tk.Checkbutton(window, text="Overwrite existing files", variable=cbx)
227
235
  chk.pack()
228
236
  chk.select()
237
+ use_stealth = False
238
+ command_args = sys.argv[2:]
239
+ if (
240
+ "--uc" in command_args
241
+ or "--cdp" in command_args
242
+ or "--undetected" in command_args
243
+ or "--undetectable" in command_args
244
+ ):
245
+ use_stealth = True
246
+ browser_display = "Use Chrome over Edge"
247
+ if "--opera" in command_args:
248
+ browser_display = "Use Opera over Edge"
249
+ elif "--brave" in command_args:
250
+ browser_display = "Use Brave over Edge"
251
+ elif "--comet" in command_args:
252
+ browser_display = "Use Comet over Edge"
253
+ elif "--atlas" in command_args:
254
+ browser_display = "Use Atlas over Edge"
229
255
  cbb = tk.IntVar()
230
- chkb = tk.Checkbutton(window, text="Use Chrome over Edge", variable=cbb)
231
- chkb.pack()
232
- chkb.select()
256
+ if not use_stealth:
257
+ chkb = tk.Checkbutton(window, text=browser_display, variable=cbb)
258
+ chkb.pack()
259
+ if "--edge" not in command_args:
260
+ chkb.select()
261
+ else:
262
+ chkb = tk.Checkbutton(
263
+ window, text="Stealthy Chrome Mode", variable=cbb
264
+ )
265
+ chkb.pack()
266
+ chkb.select()
267
+ chkb.config(state=tk.DISABLED)
233
268
  tk.Label(window, text="").pack()
234
269
  url = tk.StringVar()
235
270
  tk.Label(window, text="Enter the URL to start recording on:").pack()