seleniumbase 4.50.3__tar.gz → 4.50.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 (163) hide show
  1. {seleniumbase-4.50.3/seleniumbase.egg-info → seleniumbase-4.50.4}/PKG-INFO +3 -2
  2. {seleniumbase-4.50.3 → seleniumbase-4.50.4}/README.md +1 -0
  3. {seleniumbase-4.50.3 → seleniumbase-4.50.4}/seleniumbase/__version__.py +1 -1
  4. {seleniumbase-4.50.3 → seleniumbase-4.50.4}/seleniumbase/console_scripts/run.py +39 -39
  5. {seleniumbase-4.50.3 → seleniumbase-4.50.4}/seleniumbase/console_scripts/sb_install.py +55 -44
  6. {seleniumbase-4.50.3 → seleniumbase-4.50.4}/seleniumbase/core/browser_launcher.py +5 -1
  7. {seleniumbase-4.50.3 → seleniumbase-4.50.4}/seleniumbase/core/proxy_helper.py +9 -9
  8. {seleniumbase-4.50.3 → seleniumbase-4.50.4}/seleniumbase/fixtures/base_case.py +22 -7
  9. {seleniumbase-4.50.3 → seleniumbase-4.50.4}/seleniumbase/undetected/cdp_driver/tab.py +12 -14
  10. {seleniumbase-4.50.3 → seleniumbase-4.50.4/seleniumbase.egg-info}/PKG-INFO +3 -2
  11. {seleniumbase-4.50.3 → seleniumbase-4.50.4}/seleniumbase.egg-info/requires.txt +1 -1
  12. {seleniumbase-4.50.3 → seleniumbase-4.50.4}/setup.py +1 -1
  13. {seleniumbase-4.50.3 → seleniumbase-4.50.4}/.gitignore +0 -0
  14. {seleniumbase-4.50.3 → seleniumbase-4.50.4}/LICENSE +0 -0
  15. {seleniumbase-4.50.3 → seleniumbase-4.50.4}/MANIFEST.in +0 -0
  16. {seleniumbase-4.50.3 → seleniumbase-4.50.4}/install.sh +0 -0
  17. {seleniumbase-4.50.3 → seleniumbase-4.50.4}/pyproject.toml +0 -0
  18. {seleniumbase-4.50.3 → seleniumbase-4.50.4}/pytest.ini +0 -0
  19. {seleniumbase-4.50.3 → seleniumbase-4.50.4}/requirements.txt +0 -0
  20. {seleniumbase-4.50.3 → seleniumbase-4.50.4}/sbase/__init__.py +0 -0
  21. {seleniumbase-4.50.3 → seleniumbase-4.50.4}/sbase/__main__.py +0 -0
  22. {seleniumbase-4.50.3 → seleniumbase-4.50.4}/sbase/steps.py +0 -0
  23. {seleniumbase-4.50.3 → seleniumbase-4.50.4}/seleniumbase/__init__.py +0 -0
  24. {seleniumbase-4.50.3 → seleniumbase-4.50.4}/seleniumbase/__main__.py +0 -0
  25. {seleniumbase-4.50.3 → seleniumbase-4.50.4}/seleniumbase/behave/__init__.py +0 -0
  26. {seleniumbase-4.50.3 → seleniumbase-4.50.4}/seleniumbase/behave/behave_helper.py +0 -0
  27. {seleniumbase-4.50.3 → seleniumbase-4.50.4}/seleniumbase/behave/behave_sb.py +0 -0
  28. {seleniumbase-4.50.3 → seleniumbase-4.50.4}/seleniumbase/behave/steps.py +0 -0
  29. {seleniumbase-4.50.3 → seleniumbase-4.50.4}/seleniumbase/common/__init__.py +0 -0
  30. {seleniumbase-4.50.3 → seleniumbase-4.50.4}/seleniumbase/common/decorators.py +0 -0
  31. {seleniumbase-4.50.3 → seleniumbase-4.50.4}/seleniumbase/common/encryption.py +0 -0
  32. {seleniumbase-4.50.3 → seleniumbase-4.50.4}/seleniumbase/common/exceptions.py +0 -0
  33. {seleniumbase-4.50.3 → seleniumbase-4.50.4}/seleniumbase/common/obfuscate.py +0 -0
  34. {seleniumbase-4.50.3 → seleniumbase-4.50.4}/seleniumbase/common/unobfuscate.py +0 -0
  35. {seleniumbase-4.50.3 → seleniumbase-4.50.4}/seleniumbase/config/__init__.py +0 -0
  36. {seleniumbase-4.50.3 → seleniumbase-4.50.4}/seleniumbase/config/ad_block_list.py +0 -0
  37. {seleniumbase-4.50.3 → seleniumbase-4.50.4}/seleniumbase/config/proxy_list.py +0 -0
  38. {seleniumbase-4.50.3 → seleniumbase-4.50.4}/seleniumbase/config/settings.py +0 -0
  39. {seleniumbase-4.50.3 → seleniumbase-4.50.4}/seleniumbase/console_scripts/__init__.py +0 -0
  40. {seleniumbase-4.50.3 → seleniumbase-4.50.4}/seleniumbase/console_scripts/logo_helper.py +0 -0
  41. {seleniumbase-4.50.3 → seleniumbase-4.50.4}/seleniumbase/console_scripts/rich_helper.py +0 -0
  42. {seleniumbase-4.50.3 → seleniumbase-4.50.4}/seleniumbase/console_scripts/sb_behave_gui.py +0 -0
  43. {seleniumbase-4.50.3 → seleniumbase-4.50.4}/seleniumbase/console_scripts/sb_caseplans.py +0 -0
  44. {seleniumbase-4.50.3 → seleniumbase-4.50.4}/seleniumbase/console_scripts/sb_commander.py +0 -0
  45. {seleniumbase-4.50.3 → seleniumbase-4.50.4}/seleniumbase/console_scripts/sb_mkchart.py +0 -0
  46. {seleniumbase-4.50.3 → seleniumbase-4.50.4}/seleniumbase/console_scripts/sb_mkdir.py +0 -0
  47. {seleniumbase-4.50.3 → seleniumbase-4.50.4}/seleniumbase/console_scripts/sb_mkfile.py +0 -0
  48. {seleniumbase-4.50.3 → seleniumbase-4.50.4}/seleniumbase/console_scripts/sb_mkpres.py +0 -0
  49. {seleniumbase-4.50.3 → seleniumbase-4.50.4}/seleniumbase/console_scripts/sb_mkrec.py +0 -0
  50. {seleniumbase-4.50.3 → seleniumbase-4.50.4}/seleniumbase/console_scripts/sb_objectify.py +0 -0
  51. {seleniumbase-4.50.3 → seleniumbase-4.50.4}/seleniumbase/console_scripts/sb_print.py +0 -0
  52. {seleniumbase-4.50.3 → seleniumbase-4.50.4}/seleniumbase/console_scripts/sb_recorder.py +0 -0
  53. {seleniumbase-4.50.3 → seleniumbase-4.50.4}/seleniumbase/core/__init__.py +0 -0
  54. {seleniumbase-4.50.3 → seleniumbase-4.50.4}/seleniumbase/core/application_manager.py +0 -0
  55. {seleniumbase-4.50.3 → seleniumbase-4.50.4}/seleniumbase/core/capabilities_parser.py +0 -0
  56. {seleniumbase-4.50.3 → seleniumbase-4.50.4}/seleniumbase/core/colored_traceback.py +0 -0
  57. {seleniumbase-4.50.3 → seleniumbase-4.50.4}/seleniumbase/core/create_db_tables.sql +0 -0
  58. {seleniumbase-4.50.3 → seleniumbase-4.50.4}/seleniumbase/core/detect_b_ver.py +0 -0
  59. {seleniumbase-4.50.3 → seleniumbase-4.50.4}/seleniumbase/core/download_helper.py +0 -0
  60. {seleniumbase-4.50.3 → seleniumbase-4.50.4}/seleniumbase/core/encoded_images.py +0 -0
  61. {seleniumbase-4.50.3 → seleniumbase-4.50.4}/seleniumbase/core/jqc_helper.py +0 -0
  62. {seleniumbase-4.50.3 → seleniumbase-4.50.4}/seleniumbase/core/log_helper.py +0 -0
  63. {seleniumbase-4.50.3 → seleniumbase-4.50.4}/seleniumbase/core/mysql.py +0 -0
  64. {seleniumbase-4.50.3 → seleniumbase-4.50.4}/seleniumbase/core/nest_asyncio.py +0 -0
  65. {seleniumbase-4.50.3 → seleniumbase-4.50.4}/seleniumbase/core/recorder_helper.py +0 -0
  66. {seleniumbase-4.50.3 → seleniumbase-4.50.4}/seleniumbase/core/report_helper.py +0 -0
  67. {seleniumbase-4.50.3 → seleniumbase-4.50.4}/seleniumbase/core/s3_manager.py +0 -0
  68. {seleniumbase-4.50.3 → seleniumbase-4.50.4}/seleniumbase/core/sb_cdp.py +0 -0
  69. {seleniumbase-4.50.3 → seleniumbase-4.50.4}/seleniumbase/core/sb_driver.py +0 -0
  70. {seleniumbase-4.50.3 → seleniumbase-4.50.4}/seleniumbase/core/session_helper.py +0 -0
  71. {seleniumbase-4.50.3 → seleniumbase-4.50.4}/seleniumbase/core/settings_parser.py +0 -0
  72. {seleniumbase-4.50.3 → seleniumbase-4.50.4}/seleniumbase/core/style_sheet.py +0 -0
  73. {seleniumbase-4.50.3 → seleniumbase-4.50.4}/seleniumbase/core/testcase_manager.py +0 -0
  74. {seleniumbase-4.50.3 → seleniumbase-4.50.4}/seleniumbase/core/tour_helper.py +0 -0
  75. {seleniumbase-4.50.3 → seleniumbase-4.50.4}/seleniumbase/core/visual_helper.py +0 -0
  76. {seleniumbase-4.50.3 → seleniumbase-4.50.4}/seleniumbase/drivers/__init__.py +0 -0
  77. {seleniumbase-4.50.3 → seleniumbase-4.50.4}/seleniumbase/drivers/atlas_drivers/__init__.py +0 -0
  78. {seleniumbase-4.50.3 → seleniumbase-4.50.4}/seleniumbase/drivers/brave_drivers/__init__.py +0 -0
  79. {seleniumbase-4.50.3 → seleniumbase-4.50.4}/seleniumbase/drivers/cft_drivers/__init__.py +0 -0
  80. {seleniumbase-4.50.3 → seleniumbase-4.50.4}/seleniumbase/drivers/chromium_drivers/__init__.py +0 -0
  81. {seleniumbase-4.50.3 → seleniumbase-4.50.4}/seleniumbase/drivers/chs_drivers/__init__.py +0 -0
  82. {seleniumbase-4.50.3 → seleniumbase-4.50.4}/seleniumbase/drivers/comet_drivers/__init__.py +0 -0
  83. {seleniumbase-4.50.3 → seleniumbase-4.50.4}/seleniumbase/drivers/opera_drivers/__init__.py +0 -0
  84. {seleniumbase-4.50.3 → seleniumbase-4.50.4}/seleniumbase/extensions/__init__.py +0 -0
  85. {seleniumbase-4.50.3 → seleniumbase-4.50.4}/seleniumbase/extensions/ad_block.zip +0 -0
  86. {seleniumbase-4.50.3 → seleniumbase-4.50.4}/seleniumbase/extensions/disable_csp.zip +0 -0
  87. {seleniumbase-4.50.3 → seleniumbase-4.50.4}/seleniumbase/extensions/recorder.zip +0 -0
  88. {seleniumbase-4.50.3 → seleniumbase-4.50.4}/seleniumbase/extensions/sbase_ext.zip +0 -0
  89. {seleniumbase-4.50.3 → seleniumbase-4.50.4}/seleniumbase/fixtures/__init__.py +0 -0
  90. {seleniumbase-4.50.3 → seleniumbase-4.50.4}/seleniumbase/fixtures/constants.py +0 -0
  91. {seleniumbase-4.50.3 → seleniumbase-4.50.4}/seleniumbase/fixtures/css_to_xpath.py +0 -0
  92. {seleniumbase-4.50.3 → seleniumbase-4.50.4}/seleniumbase/fixtures/errors.py +0 -0
  93. {seleniumbase-4.50.3 → seleniumbase-4.50.4}/seleniumbase/fixtures/js_utils.py +0 -0
  94. {seleniumbase-4.50.3 → seleniumbase-4.50.4}/seleniumbase/fixtures/page_actions.py +0 -0
  95. {seleniumbase-4.50.3 → seleniumbase-4.50.4}/seleniumbase/fixtures/page_utils.py +0 -0
  96. {seleniumbase-4.50.3 → seleniumbase-4.50.4}/seleniumbase/fixtures/shared_utils.py +0 -0
  97. {seleniumbase-4.50.3 → seleniumbase-4.50.4}/seleniumbase/fixtures/unittest_helper.py +0 -0
  98. {seleniumbase-4.50.3 → seleniumbase-4.50.4}/seleniumbase/fixtures/words.py +0 -0
  99. {seleniumbase-4.50.3 → seleniumbase-4.50.4}/seleniumbase/fixtures/xpath_to_css.py +0 -0
  100. {seleniumbase-4.50.3 → seleniumbase-4.50.4}/seleniumbase/js_code/__init__.py +0 -0
  101. {seleniumbase-4.50.3 → seleniumbase-4.50.4}/seleniumbase/js_code/active_css_js.py +0 -0
  102. {seleniumbase-4.50.3 → seleniumbase-4.50.4}/seleniumbase/js_code/live_js.py +0 -0
  103. {seleniumbase-4.50.3 → seleniumbase-4.50.4}/seleniumbase/js_code/recorder_js.py +0 -0
  104. {seleniumbase-4.50.3 → seleniumbase-4.50.4}/seleniumbase/masterqa/__init__.py +0 -0
  105. {seleniumbase-4.50.3 → seleniumbase-4.50.4}/seleniumbase/masterqa/master_qa.py +0 -0
  106. {seleniumbase-4.50.3 → seleniumbase-4.50.4}/seleniumbase/plugins/__init__.py +0 -0
  107. {seleniumbase-4.50.3 → seleniumbase-4.50.4}/seleniumbase/plugins/base_plugin.py +0 -0
  108. {seleniumbase-4.50.3 → seleniumbase-4.50.4}/seleniumbase/plugins/basic_test_info.py +0 -0
  109. {seleniumbase-4.50.3 → seleniumbase-4.50.4}/seleniumbase/plugins/db_reporting_plugin.py +0 -0
  110. {seleniumbase-4.50.3 → seleniumbase-4.50.4}/seleniumbase/plugins/driver_manager.py +0 -0
  111. {seleniumbase-4.50.3 → seleniumbase-4.50.4}/seleniumbase/plugins/page_source.py +0 -0
  112. {seleniumbase-4.50.3 → seleniumbase-4.50.4}/seleniumbase/plugins/pytest_plugin.py +0 -0
  113. {seleniumbase-4.50.3 → seleniumbase-4.50.4}/seleniumbase/plugins/s3_logging_plugin.py +0 -0
  114. {seleniumbase-4.50.3 → seleniumbase-4.50.4}/seleniumbase/plugins/sb_manager.py +0 -0
  115. {seleniumbase-4.50.3 → seleniumbase-4.50.4}/seleniumbase/plugins/screen_shots.py +0 -0
  116. {seleniumbase-4.50.3 → seleniumbase-4.50.4}/seleniumbase/plugins/selenium_plugin.py +0 -0
  117. {seleniumbase-4.50.3 → seleniumbase-4.50.4}/seleniumbase/resources/__init__.py +0 -0
  118. {seleniumbase-4.50.3 → seleniumbase-4.50.4}/seleniumbase/translate/__init__.py +0 -0
  119. {seleniumbase-4.50.3 → seleniumbase-4.50.4}/seleniumbase/translate/chinese.py +0 -0
  120. {seleniumbase-4.50.3 → seleniumbase-4.50.4}/seleniumbase/translate/dutch.py +0 -0
  121. {seleniumbase-4.50.3 → seleniumbase-4.50.4}/seleniumbase/translate/french.py +0 -0
  122. {seleniumbase-4.50.3 → seleniumbase-4.50.4}/seleniumbase/translate/italian.py +0 -0
  123. {seleniumbase-4.50.3 → seleniumbase-4.50.4}/seleniumbase/translate/japanese.py +0 -0
  124. {seleniumbase-4.50.3 → seleniumbase-4.50.4}/seleniumbase/translate/korean.py +0 -0
  125. {seleniumbase-4.50.3 → seleniumbase-4.50.4}/seleniumbase/translate/master_dict.py +0 -0
  126. {seleniumbase-4.50.3 → seleniumbase-4.50.4}/seleniumbase/translate/portuguese.py +0 -0
  127. {seleniumbase-4.50.3 → seleniumbase-4.50.4}/seleniumbase/translate/russian.py +0 -0
  128. {seleniumbase-4.50.3 → seleniumbase-4.50.4}/seleniumbase/translate/spanish.py +0 -0
  129. {seleniumbase-4.50.3 → seleniumbase-4.50.4}/seleniumbase/translate/translator.py +0 -0
  130. {seleniumbase-4.50.3 → seleniumbase-4.50.4}/seleniumbase/undetected/__init__.py +0 -0
  131. {seleniumbase-4.50.3 → seleniumbase-4.50.4}/seleniumbase/undetected/cdp.py +0 -0
  132. {seleniumbase-4.50.3 → seleniumbase-4.50.4}/seleniumbase/undetected/cdp_driver/__init__.py +0 -0
  133. {seleniumbase-4.50.3 → seleniumbase-4.50.4}/seleniumbase/undetected/cdp_driver/_contradict.py +0 -0
  134. {seleniumbase-4.50.3 → seleniumbase-4.50.4}/seleniumbase/undetected/cdp_driver/browser.py +0 -0
  135. {seleniumbase-4.50.3 → seleniumbase-4.50.4}/seleniumbase/undetected/cdp_driver/cdp_util.py +0 -0
  136. {seleniumbase-4.50.3 → seleniumbase-4.50.4}/seleniumbase/undetected/cdp_driver/config.py +0 -0
  137. {seleniumbase-4.50.3 → seleniumbase-4.50.4}/seleniumbase/undetected/cdp_driver/connection.py +0 -0
  138. {seleniumbase-4.50.3 → seleniumbase-4.50.4}/seleniumbase/undetected/cdp_driver/element.py +0 -0
  139. {seleniumbase-4.50.3 → seleniumbase-4.50.4}/seleniumbase/undetected/dprocess.py +0 -0
  140. {seleniumbase-4.50.3 → seleniumbase-4.50.4}/seleniumbase/undetected/options.py +0 -0
  141. {seleniumbase-4.50.3 → seleniumbase-4.50.4}/seleniumbase/undetected/patcher.py +0 -0
  142. {seleniumbase-4.50.3 → seleniumbase-4.50.4}/seleniumbase/undetected/reactor.py +0 -0
  143. {seleniumbase-4.50.3 → seleniumbase-4.50.4}/seleniumbase/undetected/webelement.py +0 -0
  144. {seleniumbase-4.50.3 → seleniumbase-4.50.4}/seleniumbase/utilities/__init__.py +0 -0
  145. {seleniumbase-4.50.3 → seleniumbase-4.50.4}/seleniumbase/utilities/selenium_grid/__init__.py +0 -0
  146. {seleniumbase-4.50.3 → seleniumbase-4.50.4}/seleniumbase/utilities/selenium_grid/download_selenium_server.py +0 -0
  147. {seleniumbase-4.50.3 → seleniumbase-4.50.4}/seleniumbase/utilities/selenium_grid/font_color +0 -0
  148. {seleniumbase-4.50.3 → seleniumbase-4.50.4}/seleniumbase/utilities/selenium_grid/grid-hub +0 -0
  149. {seleniumbase-4.50.3 → seleniumbase-4.50.4}/seleniumbase/utilities/selenium_grid/grid-node +0 -0
  150. {seleniumbase-4.50.3 → seleniumbase-4.50.4}/seleniumbase/utilities/selenium_grid/grid_hub.py +0 -0
  151. {seleniumbase-4.50.3 → seleniumbase-4.50.4}/seleniumbase/utilities/selenium_grid/grid_node.py +0 -0
  152. {seleniumbase-4.50.3 → seleniumbase-4.50.4}/seleniumbase/utilities/selenium_grid/register-grid-node.bat +0 -0
  153. {seleniumbase-4.50.3 → seleniumbase-4.50.4}/seleniumbase/utilities/selenium_grid/register-grid-node.sh +0 -0
  154. {seleniumbase-4.50.3 → seleniumbase-4.50.4}/seleniumbase/utilities/selenium_grid/start-grid-hub.bat +0 -0
  155. {seleniumbase-4.50.3 → seleniumbase-4.50.4}/seleniumbase/utilities/selenium_grid/start-grid-hub.sh +0 -0
  156. {seleniumbase-4.50.3 → seleniumbase-4.50.4}/seleniumbase/utilities/selenium_ide/__init__.py +0 -0
  157. {seleniumbase-4.50.3 → seleniumbase-4.50.4}/seleniumbase/utilities/selenium_ide/convert_ide.py +0 -0
  158. {seleniumbase-4.50.3 → seleniumbase-4.50.4}/seleniumbase.egg-info/SOURCES.txt +0 -0
  159. {seleniumbase-4.50.3 → seleniumbase-4.50.4}/seleniumbase.egg-info/dependency_links.txt +0 -0
  160. {seleniumbase-4.50.3 → seleniumbase-4.50.4}/seleniumbase.egg-info/entry_points.txt +0 -0
  161. {seleniumbase-4.50.3 → seleniumbase-4.50.4}/seleniumbase.egg-info/top_level.txt +0 -0
  162. {seleniumbase-4.50.3 → seleniumbase-4.50.4}/setup.cfg +0 -0
  163. {seleniumbase-4.50.3 → seleniumbase-4.50.4}/virtualenv_install.sh +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: seleniumbase
3
- Version: 4.50.3
3
+ Version: 4.50.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
@@ -167,7 +167,7 @@ Requires-Dist: proxy.py==2.4.3; extra == "proxy"
167
167
  Provides-Extra: playwright
168
168
  Requires-Dist: playwright>=1.60.0; extra == "playwright"
169
169
  Requires-Dist: greenlet>=3.2.5; python_version < "3.10" and extra == "playwright"
170
- Requires-Dist: greenlet>=3.5.1; python_version >= "3.10" and extra == "playwright"
170
+ Requires-Dist: greenlet>=3.5.3; python_version >= "3.10" and extra == "playwright"
171
171
  Provides-Extra: pyautogui
172
172
  Requires-Dist: PyAutoGUI>=0.9.54; platform_system != "Linux" and extra == "pyautogui"
173
173
  Dynamic: author
@@ -949,6 +949,7 @@ pytest test_coffee_cart.py --trace
949
949
  --brave # (Shortcut for "--browser=brave".)
950
950
  --comet # (Shortcut for "--browser=comet".)
951
951
  --atlas # (Shortcut for "--browser=atlas".)
952
+ --chromium # (Shortcut for using base `Chromium`)
952
953
  --settings-file=FILE # (Override default SeleniumBase settings.)
953
954
  --env=ENV # (Set the test env. Access with "self.env" in tests.)
954
955
  --account=STR # (Set account. Access with "self.account" in tests.)
@@ -763,6 +763,7 @@ pytest test_coffee_cart.py --trace
763
763
  --brave # (Shortcut for "--browser=brave".)
764
764
  --comet # (Shortcut for "--browser=comet".)
765
765
  --atlas # (Shortcut for "--browser=atlas".)
766
+ --chromium # (Shortcut for using base `Chromium`)
766
767
  --settings-file=FILE # (Override default SeleniumBase settings.)
767
768
  --env=ENV # (Set the test env. Access with "self.env" in tests.)
768
769
  --account=STR # (Set account. Access with "self.account" in tests.)
@@ -1,2 +1,2 @@
1
1
  # seleniumbase package
2
- __version__ = "4.50.3"
2
+ __version__ = "4.50.4"
@@ -52,15 +52,15 @@ def show_basic_usage():
52
52
 
53
53
  seleniumbase_logo = logo_helper.get_seleniumbase_logo()
54
54
  print(seleniumbase_logo)
55
- time.sleep(0.035)
55
+ time.sleep(0.044)
56
56
  print("")
57
- time.sleep(0.031)
57
+ time.sleep(0.034)
58
58
  show_package_location()
59
- time.sleep(0.031)
59
+ time.sleep(0.034)
60
60
  show_version_info()
61
- time.sleep(0.031)
61
+ time.sleep(0.034)
62
62
  print("")
63
- time.sleep(0.555) # Enough time to see the logo & version
63
+ time.sleep(0.468) # Enough time to see the logo & version
64
64
  sc = ""
65
65
  sc += "╭──────────────────────────────────────────────────╮\n"
66
66
  sc += '│ * USAGE: "seleniumbase [COMMAND] [PARAMETERS]" │\n'
@@ -134,40 +134,40 @@ def show_install_usage():
134
134
  sc = " " + c2 + "** " + c3 + "get / install" + c2 + " **" + cr
135
135
  print(sc)
136
136
  print("")
137
- print(" Usage:")
138
- print(" seleniumbase install [DRIVER_NAME] [OPTIONS]")
139
- print(" OR: seleniumbase get [DRIVER_NAME] [OPTIONS]")
140
- print(" OR: sbase install [DRIVER_NAME] [OPTIONS]")
141
- print(" OR: sbase get [DRIVER_NAME] [OPTIONS]")
142
- print(" (Drivers: chromedriver, cft, uc_driver,")
143
- print(" edgedriver, chs, geckodriver)")
144
- print(" Options:")
145
- print(" VERSION Specify the version to download.")
146
- print(" Tries to detect the needed version.")
147
- print(" If using chromedriver or edgedriver,")
148
- print(" you can use the major version integer.")
149
- print()
150
- print(" -p / --path Also copy driver to /usr/local/bin")
151
- print(" Examples:")
152
- print(" sbase get chromedriver")
153
- print(" sbase get geckodriver")
154
- print(" sbase get edgedriver")
155
- print(" sbase get chromedriver 149")
156
- print(" sbase get chromedriver 149.0.7827.115")
157
- print(" sbase get chromedriver stable")
158
- print(" sbase get chromedriver beta")
159
- print(" sbase get chromedriver -p")
160
- print(" sbase get chromium")
161
- print(" sbase get chromium --revision=1639046")
162
- print(" sbase get cft 149")
163
- print(" sbase get chs")
164
- print(" Output:")
165
- print(" Downloads the webdriver to seleniumbase/drivers/")
166
- print(" (chromedriver is required for Chrome automation)")
167
- print(" (geckodriver is required for Firefox automation)")
168
- print(" (edgedriver is required for MS__Edge automation)")
169
- print(" (cft is for the `Chrome for Testing` binary exe)")
170
- print(" (chs is for the `Chrome-Headless-Shell` binary.)")
137
+ print("Usage:")
138
+ print(" seleniumbase install [DRIVER/BINARY] [OPTIONS]")
139
+ print(" OR: seleniumbase get [DRIVER/BINARY] [OPTIONS]")
140
+ print(" OR: sbase install [DRIVER/BINARY] [OPTIONS]")
141
+ print(" OR: sbase get [DRIVER/BINARY] [OPTIONS]")
142
+ print(" (Drivers: chromedriver, uc_driver,")
143
+ print(" edgedriver, geckodriver)")
144
+ print(" (Binaries: cft, chs, chromium)")
145
+ print("Options:")
146
+ print(" VERSION Driver/binary version to download.")
147
+ print(" (Otherwise detects the version)")
148
+ print(" --revision The Chromium revision to download.")
149
+ print(" (Otherwise downloads the latest)")
150
+ print(" -p OR --path Also copy driver to /usr/local/bin")
151
+ print("Examples:")
152
+ print(" sbase get chromedriver")
153
+ print(" sbase get geckodriver")
154
+ print(" sbase get edgedriver")
155
+ print(" sbase get chromedriver 149")
156
+ print(" sbase get chromedriver 149.0.7827.155")
157
+ print(" sbase get chromedriver stable")
158
+ print(" sbase get chromedriver beta")
159
+ print(" sbase get chromedriver -p")
160
+ print(" sbase get chromium")
161
+ print(" sbase get chromium --revision=1639046")
162
+ print(" sbase get cft 149")
163
+ print(" sbase get chs")
164
+ print("Output:")
165
+ print(" Downloads driver/binary to seleniumbase/drivers/")
166
+ print(" (chromedriver is for Selenium Chrome automation)")
167
+ print(" (geckodriver is for Selenium Firefox automation)")
168
+ print(" (edgedriver is for Selenium MS__Edge automation)")
169
+ print(" (cft is for the `Chrome for Testing` binary exe)")
170
+ print(" (chs is for the `Chrome-Headless-Shell` binary.)")
171
171
  print("")
172
172
 
173
173
 
@@ -2,20 +2,25 @@
2
2
  Downloads the specified webdriver to "seleniumbase/drivers/"
3
3
 
4
4
  Usage:
5
- sbase get {chromedriver|geckodriver|edgedriver|
6
- iedriver|uc_driver|cft|chs} [OPTIONS]
5
+ seleniumbase install [DRIVER/BINARY] [OPTIONS]
6
+ OR: seleniumbase get [DRIVER/BINARY] [OPTIONS]
7
+ OR: sbase install [DRIVER/BINARY] [OPTIONS]
8
+ OR: sbase get [DRIVER/BINARY] [OPTIONS]
9
+ (Drivers: chromedriver, uc_driver,
10
+ edgedriver, geckodriver)
11
+ (Binaries: cft, chs, chromium)
7
12
  Options:
8
- VERSION Specify the version.
9
- Tries to detect the needed version.
10
- If using chromedriver or edgedriver,
11
- you can use the major version integer.
12
- -p OR --path Also copy the driver to /usr/local/bin
13
+ VERSION Driver/binary version to download.
14
+ (Otherwise detects the version)
15
+ --revision The Chromium revision to download.
16
+ (Otherwise downloads the latest)
17
+ -p OR --path Also copy driver to /usr/local/bin
13
18
  Examples:
14
19
  sbase get chromedriver
15
20
  sbase get geckodriver
16
21
  sbase get edgedriver
17
22
  sbase get chromedriver 149
18
- sbase get chromedriver 149.0.7827.115
23
+ sbase get chromedriver 149.0.7827.155
19
24
  sbase get chromedriver stable
20
25
  sbase get chromedriver beta
21
26
  sbase get chromedriver -p
@@ -24,10 +29,12 @@ Examples:
24
29
  sbase get cft 149
25
30
  sbase get chs
26
31
  Output:
27
- Downloads the webdriver to seleniumbase/drivers/
28
- (chromedriver is required for Chrome automation)
29
- (geckodriver is required for Firefox automation)
30
- (edgedriver is required for MS__Edge automation)
32
+ Downloads driver/binary to seleniumbase/drivers/
33
+ (chromedriver is for Selenium Chrome automation)
34
+ (geckodriver is for Selenium Firefox automation)
35
+ (edgedriver is for Selenium MS__Edge automation)
36
+ (cft is for the `Chrome for Testing` binary exe)
37
+ (chs is for the `Chrome-Headless-Shell` binary.)
31
38
  """
32
39
  import colorama
33
40
  import logging
@@ -71,38 +78,40 @@ DEFAULT_EDGEDRIVER_VERSION = "115.0.1901.183" # (If can't find LATEST_STABLE)
71
78
 
72
79
  def invalid_run_command():
73
80
  exp = " ** get / install **\n\n"
74
- exp += " Usage:\n"
75
- exp += " seleniumbase install [DRIVER_NAME] [OPTIONS]\n"
76
- exp += " OR sbase install [DRIVER_NAME] [OPTIONS]\n"
77
- exp += " OR seleniumbase get [DRIVER_NAME] [OPTIONS]\n"
78
- exp += " OR sbase get [DRIVER_NAME] [OPTIONS]\n"
79
- exp += " (Drivers: chromedriver, cft, uc_driver,\n"
80
- exp += " edgedriver, chs, geckodriver)\n"
81
- exp += " Options:\n"
82
- exp += " VERSION Specify the version.\n"
83
- exp += " Tries to detect the needed version.\n"
84
- exp += " If using chromedriver or edgedriver,\n"
85
- exp += " you can use the major version integer.\n"
86
- exp += "\n"
87
- exp += " -p OR --path Also copy the driver to /usr/local/bin\n"
88
- exp += " Examples:\n"
89
- exp += " sbase get chromedriver\n"
90
- exp += " sbase get geckodriver\n"
91
- exp += " sbase get edgedriver\n"
92
- exp += " sbase get chromedriver 114\n"
93
- exp += " sbase get chromedriver 114.0.5735.90\n"
94
- exp += " sbase get chromedriver stable\n"
95
- exp += " sbase get chromedriver beta\n"
96
- exp += " sbase get chromedriver -p\n"
97
- exp += " sbase get cft 131\n"
98
- exp += " sbase get chs\n"
99
- exp += " Output:\n"
100
- exp += " Downloads the webdriver to seleniumbase/drivers/\n"
101
- exp += " (chromedriver is required for Chrome automation)\n"
102
- exp += " (geckodriver is required for Firefox automation)\n"
103
- exp += " (edgedriver is required for MS__Edge automation)\n"
104
- exp += " (cft is for the `Chrome for Testing` binary exe)\n"
105
- exp += " (chs is for the `Chrome-Headless-Shell` binary.)\n"
81
+ exp += "Usage:\n"
82
+ exp += " seleniumbase install [DRIVER/BINARY] [OPTIONS]\n"
83
+ exp += " OR sbase install [DRIVER/BINARY] [OPTIONS]\n"
84
+ exp += " OR seleniumbase get [DRIVER/BINARY] [OPTIONS]\n"
85
+ exp += " OR sbase get [DRIVER/BINARY] [OPTIONS]\n"
86
+ exp += " (Drivers: chromedriver, uc_driver,\n"
87
+ exp += " edgedriver, geckodriver)\n"
88
+ exp += " (Binaries: cft, chs, chromium)\n"
89
+ exp += "Options:\n"
90
+ exp += " VERSION Driver/binary version to download.\n"
91
+ exp += " (Otherwise detects the version)\n"
92
+ exp += " --revision The Chromium revision to download.\n"
93
+ exp += " (Otherwise downloads the latest)\n"
94
+ exp += " -p OR --path Also copy driver to /usr/local/bin\n"
95
+ exp += "Examples:\n"
96
+ exp += " sbase get chromedriver\n"
97
+ exp += " sbase get geckodriver\n"
98
+ exp += " sbase get edgedriver\n"
99
+ exp += " sbase get chromedriver 149\n"
100
+ exp += " sbase get chromedriver 149.0.7827.155\n"
101
+ exp += " sbase get chromedriver stable\n"
102
+ exp += " sbase get chromedriver beta\n"
103
+ exp += " sbase get chromedriver -p\n"
104
+ exp += " sbase get chromium\n"
105
+ exp += " sbase get chromium --revision=1639046\n"
106
+ exp += " sbase get cft 149\n"
107
+ exp += " sbase get chs\n"
108
+ exp += "Output:\n"
109
+ exp += " Downloads driver/binary to seleniumbase/drivers/\n"
110
+ exp += " (chromedriver is for Selenium Chrome automation)\n"
111
+ exp += " (geckodriver is for Selenium Firefox automation)\n"
112
+ exp += " (edgedriver is for Selenium MS__Edge automation)\n"
113
+ exp += " (cft is for the `Chrome for Testing` binary exe)\n"
114
+ exp += " (chs is for the `Chrome-Headless-Shell` binary.)\n"
106
115
  print("")
107
116
  raise Exception("%s\n\n%s" % (constants.Warnings.INVALID_RUN_COMMAND, exp))
108
117
 
@@ -139,6 +148,8 @@ def get_proxy_info():
139
148
  protocol = "https"
140
149
  elif "socks4" in proxy_string:
141
150
  protocol = "socks4"
151
+ elif "socks5h" in proxy_string:
152
+ protocol = "socks5h"
142
153
  elif "socks5" in proxy_string:
143
154
  protocol = "socks5"
144
155
  proxy_string = proxy_helper.validate_proxy_string(proxy_string)
@@ -340,6 +340,8 @@ def requests_get(url, proxy_string=None):
340
340
  protocol = "https"
341
341
  elif "socks4" in proxy_string:
342
342
  protocol = "socks4"
343
+ elif "socks5h" in proxy_string:
344
+ protocol = "socks5h"
343
345
  elif "socks5" in proxy_string:
344
346
  protocol = "socks5"
345
347
  proxies = {protocol: proxy_string}
@@ -2901,7 +2903,9 @@ def _set_firefox_options(
2901
2903
  socks_ver = 0
2902
2904
  chunks = proxy_string.split(":")
2903
2905
  if len(chunks) == 3 and (
2904
- chunks[0] == "socks4" or chunks[0] == "socks5"
2906
+ chunks[0] == "socks4"
2907
+ or chunks[0] == "socks5"
2908
+ or chunks[0] == "socks5h"
2905
2909
  ):
2906
2910
  socks_proxy = True
2907
2911
  socks_ver = int(chunks[0][5])
@@ -177,6 +177,8 @@ def validate_proxy_string(proxy_string, keep_scheme=False):
177
177
  proxy_scheme = "https"
178
178
  elif proxy_string.startswith("socks4://"):
179
179
  proxy_scheme = "socks4"
180
+ elif proxy_string.startswith("socks5h://"):
181
+ proxy_scheme = "socks5h"
180
182
  elif proxy_string.startswith("socks5://"):
181
183
  proxy_scheme = "socks5"
182
184
  valid = False
@@ -189,8 +191,10 @@ def validate_proxy_string(proxy_string, keep_scheme=False):
189
191
  elif proxy_string.startswith("https://"):
190
192
  proxy_string = proxy_string.split("https://")[1]
191
193
  elif "://" in proxy_string:
192
- if not proxy_string.startswith("socks4://") and not (
193
- proxy_string.startswith("socks5://")
194
+ if (
195
+ not proxy_string.startswith("socks4://")
196
+ and not proxy_string.startswith("socks5://")
197
+ and not proxy_string.startswith("socks5h://")
194
198
  ):
195
199
  proxy_string = proxy_string.split("://")[1]
196
200
  chunks = proxy_string.split(":")
@@ -201,13 +205,9 @@ def validate_proxy_string(proxy_string, keep_scheme=False):
201
205
  elif len(chunks) == 3:
202
206
  if re.match(r"^\d+$", chunks[2]):
203
207
  if page_utils.is_valid_url("http:" + ":".join(chunks[1:])):
204
- if chunks[0] == "http":
205
- valid = True
206
- elif chunks[0] == "https":
207
- valid = True
208
- elif chunks[0] == "socks4":
209
- valid = True
210
- elif chunks[0] == "socks5":
208
+ if chunks[0] in [
209
+ "http", "https", "socks4", "socks5", "socks5h"
210
+ ]:
211
211
  valid = True
212
212
  else:
213
213
  proxy_string = val_ip.group()
@@ -7776,15 +7776,30 @@ class BaseCase(unittest.TestCase):
7776
7776
  file_path = None
7777
7777
  if page_utils.is_valid_url(pdf):
7778
7778
  downloads_folder = download_helper.get_downloads_folder()
7779
- if nav:
7780
- if self.get_current_url() != pdf:
7781
- self.open(pdf)
7782
7779
  file_name = pdf.split("/")[-1]
7783
7780
  file_path = os.path.join(downloads_folder, file_name)
7784
- if not os.path.exists(file_path):
7785
- self.download_file(pdf)
7786
- elif override:
7787
- self.download_file(pdf)
7781
+ if nav and not self.external_pdf:
7782
+ self.open(pdf)
7783
+ if (self.undetectable and self.external_pdf):
7784
+ just_opened = False
7785
+ if (
7786
+ self.get_current_url() != pdf
7787
+ and not os.path.exists(
7788
+ os.path.join(downloads_folder, file_name)
7789
+ )
7790
+ ):
7791
+ just_opened = True
7792
+ self.open(pdf)
7793
+ if self.external_pdf:
7794
+ self.assert_downloaded_file(file_name, timeout=10)
7795
+ elif self.undetectable and just_opened:
7796
+ self.sleep(3)
7797
+ self.save_as_pdf(file_name, folder=downloads_folder)
7798
+ else:
7799
+ self.save_as_pdf(file_name, folder=downloads_folder)
7800
+ else:
7801
+ if not os.path.exists(file_path) or override:
7802
+ self.download_file(pdf)
7788
7803
  else:
7789
7804
  if not os.path.exists(pdf):
7790
7805
  raise Exception("%s is not a valid URL or file path!" % pdf)
@@ -27,27 +27,25 @@ logger = logging.getLogger(__name__)
27
27
 
28
28
  class Tab(Connection):
29
29
  """
30
- :ref:`tab` is the controlling mechanism/connection to a 'target',
31
- for most of us 'target' can be read as 'tab'. However it could also
32
- be an iframe, serviceworker or background script for example,
33
- although there isn't much to control for those.
34
- If you open a new window by using
35
- :py:meth:`browser.get(..., new_window=True)`
36
- Your url will open a new window. This window is a 'tab'.
30
+ :ref:`tab` is the controlling mechanism/connection to a `target`.
31
+ The `target` can be read as a `tab`, however, it could also
32
+ be an iframe, a serviceworker, or a background script (for example).
33
+ If you open a new window by using `browser.get(..., new_window=True)`,
34
+ your URL will open a new window. This window is a `tab`.
37
35
  When you browse to another page, the tab will be the same (browser view).
38
- It's important to keep some reference to tab objects, in case you're
36
+ It's important to keep some reference to tab objects in case you're
39
37
  done interacting with elements and want to operate on the page level again.
40
38
 
41
39
  Custom CDP commands
42
40
  ---------------------------
43
41
  Tab object provide many useful and often-used methods. It is also possible
44
- to utilize the included cdp classes to to something totally custom.
42
+ to utilize the included CDP classes to to something totally custom.
45
43
 
46
- The cdp package is a set of so-called "domains" with each having methods,
44
+ The CDP package is a set of so-called "domains" with each having methods,
47
45
  events and types.
48
- To send a cdp method, for example :py:obj:`cdp.page.navigate`,
49
- you'll have to check whether the method accepts any parameters
50
- and whether they are required or not.
46
+ To send a CDP method, for example `cdp.page.navigate`,
47
+ you'll have to check whether the method accepts any
48
+ parameters and whether they are required or not.
51
49
 
52
50
  You can use:
53
51
 
@@ -936,7 +934,7 @@ class Tab(Connection):
936
934
  return await self.set_window_state(state="minimize")
937
935
 
938
936
  async def fullscreen(self):
939
- """Minimize page/tab/window"""
937
+ """Fullscreen page/tab/window"""
940
938
  return await self.set_window_state(state="fullscreen")
941
939
 
942
940
  async def medimize(self):
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: seleniumbase
3
- Version: 4.50.3
3
+ Version: 4.50.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
@@ -167,7 +167,7 @@ Requires-Dist: proxy.py==2.4.3; extra == "proxy"
167
167
  Provides-Extra: playwright
168
168
  Requires-Dist: playwright>=1.60.0; extra == "playwright"
169
169
  Requires-Dist: greenlet>=3.2.5; python_version < "3.10" and extra == "playwright"
170
- Requires-Dist: greenlet>=3.5.1; python_version >= "3.10" and extra == "playwright"
170
+ Requires-Dist: greenlet>=3.5.3; python_version >= "3.10" and extra == "playwright"
171
171
  Provides-Extra: pyautogui
172
172
  Requires-Dist: PyAutoGUI>=0.9.54; platform_system != "Linux" and extra == "pyautogui"
173
173
  Dynamic: author
@@ -949,6 +949,7 @@ pytest test_coffee_cart.py --trace
949
949
  --brave # (Shortcut for "--browser=brave".)
950
950
  --comet # (Shortcut for "--browser=comet".)
951
951
  --atlas # (Shortcut for "--browser=atlas".)
952
+ --chromium # (Shortcut for using base `Chromium`)
952
953
  --settings-file=FILE # (Override default SeleniumBase settings.)
953
954
  --env=ENV # (Set the test env. Access with "self.env" in tests.)
954
955
  --account=STR # (Set account. Access with "self.account" in tests.)
@@ -142,7 +142,7 @@ playwright>=1.60.0
142
142
  greenlet>=3.2.5
143
143
 
144
144
  [playwright:python_version >= "3.10"]
145
- greenlet>=3.5.1
145
+ greenlet>=3.5.3
146
146
 
147
147
  [proxy]
148
148
  proxy.py==2.4.3
@@ -301,7 +301,7 @@ setup(
301
301
  "playwright": [
302
302
  'playwright>=1.60.0',
303
303
  'greenlet>=3.2.5;python_version<"3.10"',
304
- 'greenlet>=3.5.1;python_version>="3.10"',
304
+ 'greenlet>=3.5.3;python_version>="3.10"',
305
305
  ],
306
306
  # pip install -e .[pyautogui]
307
307
  # (Already a required dependency on Linux now.)
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes