seleniumbase 4.50.2__tar.gz → 4.50.5__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.2/seleniumbase.egg-info → seleniumbase-4.50.5}/PKG-INFO +10 -8
  2. {seleniumbase-4.50.2 → seleniumbase-4.50.5}/README.md +2 -1
  3. {seleniumbase-4.50.2 → seleniumbase-4.50.5}/requirements.txt +5 -4
  4. {seleniumbase-4.50.2 → seleniumbase-4.50.5}/seleniumbase/__version__.py +1 -1
  5. {seleniumbase-4.50.2 → seleniumbase-4.50.5}/seleniumbase/behave/behave_sb.py +5 -2
  6. {seleniumbase-4.50.2 → seleniumbase-4.50.5}/seleniumbase/console_scripts/run.py +39 -37
  7. {seleniumbase-4.50.2 → seleniumbase-4.50.5}/seleniumbase/console_scripts/sb_install.py +58 -46
  8. {seleniumbase-4.50.2 → seleniumbase-4.50.5}/seleniumbase/core/browser_launcher.py +28 -3
  9. {seleniumbase-4.50.2 → seleniumbase-4.50.5}/seleniumbase/core/proxy_helper.py +9 -9
  10. {seleniumbase-4.50.2 → seleniumbase-4.50.5}/seleniumbase/core/sb_cdp.py +2 -0
  11. {seleniumbase-4.50.2 → seleniumbase-4.50.5}/seleniumbase/fixtures/base_case.py +22 -7
  12. {seleniumbase-4.50.2 → seleniumbase-4.50.5}/seleniumbase/plugins/driver_manager.py +4 -1
  13. {seleniumbase-4.50.2 → seleniumbase-4.50.5}/seleniumbase/plugins/pytest_plugin.py +2 -1
  14. {seleniumbase-4.50.2 → seleniumbase-4.50.5}/seleniumbase/plugins/sb_manager.py +4 -1
  15. {seleniumbase-4.50.2 → seleniumbase-4.50.5}/seleniumbase/plugins/selenium_plugin.py +2 -1
  16. {seleniumbase-4.50.2 → seleniumbase-4.50.5}/seleniumbase/undetected/cdp_driver/cdp_util.py +5 -1
  17. {seleniumbase-4.50.2 → seleniumbase-4.50.5}/seleniumbase/undetected/cdp_driver/config.py +12 -2
  18. {seleniumbase-4.50.2 → seleniumbase-4.50.5}/seleniumbase/undetected/cdp_driver/tab.py +12 -14
  19. {seleniumbase-4.50.2 → seleniumbase-4.50.5/seleniumbase.egg-info}/PKG-INFO +10 -8
  20. {seleniumbase-4.50.2 → seleniumbase-4.50.5}/seleniumbase.egg-info/requires.txt +9 -6
  21. {seleniumbase-4.50.2 → seleniumbase-4.50.5}/setup.py +7 -6
  22. {seleniumbase-4.50.2 → seleniumbase-4.50.5}/.gitignore +0 -0
  23. {seleniumbase-4.50.2 → seleniumbase-4.50.5}/LICENSE +0 -0
  24. {seleniumbase-4.50.2 → seleniumbase-4.50.5}/MANIFEST.in +0 -0
  25. {seleniumbase-4.50.2 → seleniumbase-4.50.5}/install.sh +0 -0
  26. {seleniumbase-4.50.2 → seleniumbase-4.50.5}/pyproject.toml +0 -0
  27. {seleniumbase-4.50.2 → seleniumbase-4.50.5}/pytest.ini +0 -0
  28. {seleniumbase-4.50.2 → seleniumbase-4.50.5}/sbase/__init__.py +0 -0
  29. {seleniumbase-4.50.2 → seleniumbase-4.50.5}/sbase/__main__.py +0 -0
  30. {seleniumbase-4.50.2 → seleniumbase-4.50.5}/sbase/steps.py +0 -0
  31. {seleniumbase-4.50.2 → seleniumbase-4.50.5}/seleniumbase/__init__.py +0 -0
  32. {seleniumbase-4.50.2 → seleniumbase-4.50.5}/seleniumbase/__main__.py +0 -0
  33. {seleniumbase-4.50.2 → seleniumbase-4.50.5}/seleniumbase/behave/__init__.py +0 -0
  34. {seleniumbase-4.50.2 → seleniumbase-4.50.5}/seleniumbase/behave/behave_helper.py +0 -0
  35. {seleniumbase-4.50.2 → seleniumbase-4.50.5}/seleniumbase/behave/steps.py +0 -0
  36. {seleniumbase-4.50.2 → seleniumbase-4.50.5}/seleniumbase/common/__init__.py +0 -0
  37. {seleniumbase-4.50.2 → seleniumbase-4.50.5}/seleniumbase/common/decorators.py +0 -0
  38. {seleniumbase-4.50.2 → seleniumbase-4.50.5}/seleniumbase/common/encryption.py +0 -0
  39. {seleniumbase-4.50.2 → seleniumbase-4.50.5}/seleniumbase/common/exceptions.py +0 -0
  40. {seleniumbase-4.50.2 → seleniumbase-4.50.5}/seleniumbase/common/obfuscate.py +0 -0
  41. {seleniumbase-4.50.2 → seleniumbase-4.50.5}/seleniumbase/common/unobfuscate.py +0 -0
  42. {seleniumbase-4.50.2 → seleniumbase-4.50.5}/seleniumbase/config/__init__.py +0 -0
  43. {seleniumbase-4.50.2 → seleniumbase-4.50.5}/seleniumbase/config/ad_block_list.py +0 -0
  44. {seleniumbase-4.50.2 → seleniumbase-4.50.5}/seleniumbase/config/proxy_list.py +0 -0
  45. {seleniumbase-4.50.2 → seleniumbase-4.50.5}/seleniumbase/config/settings.py +0 -0
  46. {seleniumbase-4.50.2 → seleniumbase-4.50.5}/seleniumbase/console_scripts/__init__.py +0 -0
  47. {seleniumbase-4.50.2 → seleniumbase-4.50.5}/seleniumbase/console_scripts/logo_helper.py +0 -0
  48. {seleniumbase-4.50.2 → seleniumbase-4.50.5}/seleniumbase/console_scripts/rich_helper.py +0 -0
  49. {seleniumbase-4.50.2 → seleniumbase-4.50.5}/seleniumbase/console_scripts/sb_behave_gui.py +0 -0
  50. {seleniumbase-4.50.2 → seleniumbase-4.50.5}/seleniumbase/console_scripts/sb_caseplans.py +0 -0
  51. {seleniumbase-4.50.2 → seleniumbase-4.50.5}/seleniumbase/console_scripts/sb_commander.py +0 -0
  52. {seleniumbase-4.50.2 → seleniumbase-4.50.5}/seleniumbase/console_scripts/sb_mkchart.py +0 -0
  53. {seleniumbase-4.50.2 → seleniumbase-4.50.5}/seleniumbase/console_scripts/sb_mkdir.py +0 -0
  54. {seleniumbase-4.50.2 → seleniumbase-4.50.5}/seleniumbase/console_scripts/sb_mkfile.py +0 -0
  55. {seleniumbase-4.50.2 → seleniumbase-4.50.5}/seleniumbase/console_scripts/sb_mkpres.py +0 -0
  56. {seleniumbase-4.50.2 → seleniumbase-4.50.5}/seleniumbase/console_scripts/sb_mkrec.py +0 -0
  57. {seleniumbase-4.50.2 → seleniumbase-4.50.5}/seleniumbase/console_scripts/sb_objectify.py +0 -0
  58. {seleniumbase-4.50.2 → seleniumbase-4.50.5}/seleniumbase/console_scripts/sb_print.py +0 -0
  59. {seleniumbase-4.50.2 → seleniumbase-4.50.5}/seleniumbase/console_scripts/sb_recorder.py +0 -0
  60. {seleniumbase-4.50.2 → seleniumbase-4.50.5}/seleniumbase/core/__init__.py +0 -0
  61. {seleniumbase-4.50.2 → seleniumbase-4.50.5}/seleniumbase/core/application_manager.py +0 -0
  62. {seleniumbase-4.50.2 → seleniumbase-4.50.5}/seleniumbase/core/capabilities_parser.py +0 -0
  63. {seleniumbase-4.50.2 → seleniumbase-4.50.5}/seleniumbase/core/colored_traceback.py +0 -0
  64. {seleniumbase-4.50.2 → seleniumbase-4.50.5}/seleniumbase/core/create_db_tables.sql +0 -0
  65. {seleniumbase-4.50.2 → seleniumbase-4.50.5}/seleniumbase/core/detect_b_ver.py +0 -0
  66. {seleniumbase-4.50.2 → seleniumbase-4.50.5}/seleniumbase/core/download_helper.py +0 -0
  67. {seleniumbase-4.50.2 → seleniumbase-4.50.5}/seleniumbase/core/encoded_images.py +0 -0
  68. {seleniumbase-4.50.2 → seleniumbase-4.50.5}/seleniumbase/core/jqc_helper.py +0 -0
  69. {seleniumbase-4.50.2 → seleniumbase-4.50.5}/seleniumbase/core/log_helper.py +0 -0
  70. {seleniumbase-4.50.2 → seleniumbase-4.50.5}/seleniumbase/core/mysql.py +0 -0
  71. {seleniumbase-4.50.2 → seleniumbase-4.50.5}/seleniumbase/core/nest_asyncio.py +0 -0
  72. {seleniumbase-4.50.2 → seleniumbase-4.50.5}/seleniumbase/core/recorder_helper.py +0 -0
  73. {seleniumbase-4.50.2 → seleniumbase-4.50.5}/seleniumbase/core/report_helper.py +0 -0
  74. {seleniumbase-4.50.2 → seleniumbase-4.50.5}/seleniumbase/core/s3_manager.py +0 -0
  75. {seleniumbase-4.50.2 → seleniumbase-4.50.5}/seleniumbase/core/sb_driver.py +0 -0
  76. {seleniumbase-4.50.2 → seleniumbase-4.50.5}/seleniumbase/core/session_helper.py +0 -0
  77. {seleniumbase-4.50.2 → seleniumbase-4.50.5}/seleniumbase/core/settings_parser.py +0 -0
  78. {seleniumbase-4.50.2 → seleniumbase-4.50.5}/seleniumbase/core/style_sheet.py +0 -0
  79. {seleniumbase-4.50.2 → seleniumbase-4.50.5}/seleniumbase/core/testcase_manager.py +0 -0
  80. {seleniumbase-4.50.2 → seleniumbase-4.50.5}/seleniumbase/core/tour_helper.py +0 -0
  81. {seleniumbase-4.50.2 → seleniumbase-4.50.5}/seleniumbase/core/visual_helper.py +0 -0
  82. {seleniumbase-4.50.2 → seleniumbase-4.50.5}/seleniumbase/drivers/__init__.py +0 -0
  83. {seleniumbase-4.50.2 → seleniumbase-4.50.5}/seleniumbase/drivers/atlas_drivers/__init__.py +0 -0
  84. {seleniumbase-4.50.2 → seleniumbase-4.50.5}/seleniumbase/drivers/brave_drivers/__init__.py +0 -0
  85. {seleniumbase-4.50.2 → seleniumbase-4.50.5}/seleniumbase/drivers/cft_drivers/__init__.py +0 -0
  86. {seleniumbase-4.50.2 → seleniumbase-4.50.5}/seleniumbase/drivers/chromium_drivers/__init__.py +0 -0
  87. {seleniumbase-4.50.2 → seleniumbase-4.50.5}/seleniumbase/drivers/chs_drivers/__init__.py +0 -0
  88. {seleniumbase-4.50.2 → seleniumbase-4.50.5}/seleniumbase/drivers/comet_drivers/__init__.py +0 -0
  89. {seleniumbase-4.50.2 → seleniumbase-4.50.5}/seleniumbase/drivers/opera_drivers/__init__.py +0 -0
  90. {seleniumbase-4.50.2 → seleniumbase-4.50.5}/seleniumbase/extensions/__init__.py +0 -0
  91. {seleniumbase-4.50.2 → seleniumbase-4.50.5}/seleniumbase/extensions/ad_block.zip +0 -0
  92. {seleniumbase-4.50.2 → seleniumbase-4.50.5}/seleniumbase/extensions/disable_csp.zip +0 -0
  93. {seleniumbase-4.50.2 → seleniumbase-4.50.5}/seleniumbase/extensions/recorder.zip +0 -0
  94. {seleniumbase-4.50.2 → seleniumbase-4.50.5}/seleniumbase/extensions/sbase_ext.zip +0 -0
  95. {seleniumbase-4.50.2 → seleniumbase-4.50.5}/seleniumbase/fixtures/__init__.py +0 -0
  96. {seleniumbase-4.50.2 → seleniumbase-4.50.5}/seleniumbase/fixtures/constants.py +0 -0
  97. {seleniumbase-4.50.2 → seleniumbase-4.50.5}/seleniumbase/fixtures/css_to_xpath.py +0 -0
  98. {seleniumbase-4.50.2 → seleniumbase-4.50.5}/seleniumbase/fixtures/errors.py +0 -0
  99. {seleniumbase-4.50.2 → seleniumbase-4.50.5}/seleniumbase/fixtures/js_utils.py +0 -0
  100. {seleniumbase-4.50.2 → seleniumbase-4.50.5}/seleniumbase/fixtures/page_actions.py +0 -0
  101. {seleniumbase-4.50.2 → seleniumbase-4.50.5}/seleniumbase/fixtures/page_utils.py +0 -0
  102. {seleniumbase-4.50.2 → seleniumbase-4.50.5}/seleniumbase/fixtures/shared_utils.py +0 -0
  103. {seleniumbase-4.50.2 → seleniumbase-4.50.5}/seleniumbase/fixtures/unittest_helper.py +0 -0
  104. {seleniumbase-4.50.2 → seleniumbase-4.50.5}/seleniumbase/fixtures/words.py +0 -0
  105. {seleniumbase-4.50.2 → seleniumbase-4.50.5}/seleniumbase/fixtures/xpath_to_css.py +0 -0
  106. {seleniumbase-4.50.2 → seleniumbase-4.50.5}/seleniumbase/js_code/__init__.py +0 -0
  107. {seleniumbase-4.50.2 → seleniumbase-4.50.5}/seleniumbase/js_code/active_css_js.py +0 -0
  108. {seleniumbase-4.50.2 → seleniumbase-4.50.5}/seleniumbase/js_code/live_js.py +0 -0
  109. {seleniumbase-4.50.2 → seleniumbase-4.50.5}/seleniumbase/js_code/recorder_js.py +0 -0
  110. {seleniumbase-4.50.2 → seleniumbase-4.50.5}/seleniumbase/masterqa/__init__.py +0 -0
  111. {seleniumbase-4.50.2 → seleniumbase-4.50.5}/seleniumbase/masterqa/master_qa.py +0 -0
  112. {seleniumbase-4.50.2 → seleniumbase-4.50.5}/seleniumbase/plugins/__init__.py +0 -0
  113. {seleniumbase-4.50.2 → seleniumbase-4.50.5}/seleniumbase/plugins/base_plugin.py +0 -0
  114. {seleniumbase-4.50.2 → seleniumbase-4.50.5}/seleniumbase/plugins/basic_test_info.py +0 -0
  115. {seleniumbase-4.50.2 → seleniumbase-4.50.5}/seleniumbase/plugins/db_reporting_plugin.py +0 -0
  116. {seleniumbase-4.50.2 → seleniumbase-4.50.5}/seleniumbase/plugins/page_source.py +0 -0
  117. {seleniumbase-4.50.2 → seleniumbase-4.50.5}/seleniumbase/plugins/s3_logging_plugin.py +0 -0
  118. {seleniumbase-4.50.2 → seleniumbase-4.50.5}/seleniumbase/plugins/screen_shots.py +0 -0
  119. {seleniumbase-4.50.2 → seleniumbase-4.50.5}/seleniumbase/resources/__init__.py +0 -0
  120. {seleniumbase-4.50.2 → seleniumbase-4.50.5}/seleniumbase/translate/__init__.py +0 -0
  121. {seleniumbase-4.50.2 → seleniumbase-4.50.5}/seleniumbase/translate/chinese.py +0 -0
  122. {seleniumbase-4.50.2 → seleniumbase-4.50.5}/seleniumbase/translate/dutch.py +0 -0
  123. {seleniumbase-4.50.2 → seleniumbase-4.50.5}/seleniumbase/translate/french.py +0 -0
  124. {seleniumbase-4.50.2 → seleniumbase-4.50.5}/seleniumbase/translate/italian.py +0 -0
  125. {seleniumbase-4.50.2 → seleniumbase-4.50.5}/seleniumbase/translate/japanese.py +0 -0
  126. {seleniumbase-4.50.2 → seleniumbase-4.50.5}/seleniumbase/translate/korean.py +0 -0
  127. {seleniumbase-4.50.2 → seleniumbase-4.50.5}/seleniumbase/translate/master_dict.py +0 -0
  128. {seleniumbase-4.50.2 → seleniumbase-4.50.5}/seleniumbase/translate/portuguese.py +0 -0
  129. {seleniumbase-4.50.2 → seleniumbase-4.50.5}/seleniumbase/translate/russian.py +0 -0
  130. {seleniumbase-4.50.2 → seleniumbase-4.50.5}/seleniumbase/translate/spanish.py +0 -0
  131. {seleniumbase-4.50.2 → seleniumbase-4.50.5}/seleniumbase/translate/translator.py +0 -0
  132. {seleniumbase-4.50.2 → seleniumbase-4.50.5}/seleniumbase/undetected/__init__.py +0 -0
  133. {seleniumbase-4.50.2 → seleniumbase-4.50.5}/seleniumbase/undetected/cdp.py +0 -0
  134. {seleniumbase-4.50.2 → seleniumbase-4.50.5}/seleniumbase/undetected/cdp_driver/__init__.py +0 -0
  135. {seleniumbase-4.50.2 → seleniumbase-4.50.5}/seleniumbase/undetected/cdp_driver/_contradict.py +0 -0
  136. {seleniumbase-4.50.2 → seleniumbase-4.50.5}/seleniumbase/undetected/cdp_driver/browser.py +0 -0
  137. {seleniumbase-4.50.2 → seleniumbase-4.50.5}/seleniumbase/undetected/cdp_driver/connection.py +0 -0
  138. {seleniumbase-4.50.2 → seleniumbase-4.50.5}/seleniumbase/undetected/cdp_driver/element.py +0 -0
  139. {seleniumbase-4.50.2 → seleniumbase-4.50.5}/seleniumbase/undetected/dprocess.py +0 -0
  140. {seleniumbase-4.50.2 → seleniumbase-4.50.5}/seleniumbase/undetected/options.py +0 -0
  141. {seleniumbase-4.50.2 → seleniumbase-4.50.5}/seleniumbase/undetected/patcher.py +0 -0
  142. {seleniumbase-4.50.2 → seleniumbase-4.50.5}/seleniumbase/undetected/reactor.py +0 -0
  143. {seleniumbase-4.50.2 → seleniumbase-4.50.5}/seleniumbase/undetected/webelement.py +0 -0
  144. {seleniumbase-4.50.2 → seleniumbase-4.50.5}/seleniumbase/utilities/__init__.py +0 -0
  145. {seleniumbase-4.50.2 → seleniumbase-4.50.5}/seleniumbase/utilities/selenium_grid/__init__.py +0 -0
  146. {seleniumbase-4.50.2 → seleniumbase-4.50.5}/seleniumbase/utilities/selenium_grid/download_selenium_server.py +0 -0
  147. {seleniumbase-4.50.2 → seleniumbase-4.50.5}/seleniumbase/utilities/selenium_grid/font_color +0 -0
  148. {seleniumbase-4.50.2 → seleniumbase-4.50.5}/seleniumbase/utilities/selenium_grid/grid-hub +0 -0
  149. {seleniumbase-4.50.2 → seleniumbase-4.50.5}/seleniumbase/utilities/selenium_grid/grid-node +0 -0
  150. {seleniumbase-4.50.2 → seleniumbase-4.50.5}/seleniumbase/utilities/selenium_grid/grid_hub.py +0 -0
  151. {seleniumbase-4.50.2 → seleniumbase-4.50.5}/seleniumbase/utilities/selenium_grid/grid_node.py +0 -0
  152. {seleniumbase-4.50.2 → seleniumbase-4.50.5}/seleniumbase/utilities/selenium_grid/register-grid-node.bat +0 -0
  153. {seleniumbase-4.50.2 → seleniumbase-4.50.5}/seleniumbase/utilities/selenium_grid/register-grid-node.sh +0 -0
  154. {seleniumbase-4.50.2 → seleniumbase-4.50.5}/seleniumbase/utilities/selenium_grid/start-grid-hub.bat +0 -0
  155. {seleniumbase-4.50.2 → seleniumbase-4.50.5}/seleniumbase/utilities/selenium_grid/start-grid-hub.sh +0 -0
  156. {seleniumbase-4.50.2 → seleniumbase-4.50.5}/seleniumbase/utilities/selenium_ide/__init__.py +0 -0
  157. {seleniumbase-4.50.2 → seleniumbase-4.50.5}/seleniumbase/utilities/selenium_ide/convert_ide.py +0 -0
  158. {seleniumbase-4.50.2 → seleniumbase-4.50.5}/seleniumbase.egg-info/SOURCES.txt +0 -0
  159. {seleniumbase-4.50.2 → seleniumbase-4.50.5}/seleniumbase.egg-info/dependency_links.txt +0 -0
  160. {seleniumbase-4.50.2 → seleniumbase-4.50.5}/seleniumbase.egg-info/entry_points.txt +0 -0
  161. {seleniumbase-4.50.2 → seleniumbase-4.50.5}/seleniumbase.egg-info/top_level.txt +0 -0
  162. {seleniumbase-4.50.2 → seleniumbase-4.50.5}/setup.cfg +0 -0
  163. {seleniumbase-4.50.2 → seleniumbase-4.50.5}/virtualenv_install.sh +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: seleniumbase
3
- Version: 4.50.2
3
+ Version: 4.50.5
4
4
  Summary: SeleniumBase is a framework for web crawling, scraping, and testing. Supports pytest. CDP Mode adds stealth. Includes many tools.
5
5
  Home-page: https://github.com/seleniumbase/SeleniumBase
6
6
  Author: Michael Mintz
@@ -71,13 +71,13 @@ Requires-Dist: exceptiongroup>=1.3.1
71
71
  Requires-Dist: websockets~=15.0.1; python_version < "3.10"
72
72
  Requires-Dist: websockets>=16.0; python_version >= "3.10"
73
73
  Requires-Dist: filelock~=3.19.1; python_version < "3.10"
74
- Requires-Dist: filelock>=3.29.4; python_version >= "3.10"
74
+ Requires-Dist: filelock>=3.29.5; python_version >= "3.10"
75
75
  Requires-Dist: fasteners>=0.20
76
76
  Requires-Dist: mycdp>=1.4.0
77
77
  Requires-Dist: pynose>=1.5.5
78
78
  Requires-Dist: platformdirs~=4.4.0; python_version < "3.10"
79
79
  Requires-Dist: platformdirs>=4.10.0; python_version >= "3.10"
80
- Requires-Dist: typing-extensions>=4.15.0
80
+ Requires-Dist: typing-extensions>=4.16.0
81
81
  Requires-Dist: sbvirtualdisplay>=1.4.0
82
82
  Requires-Dist: MarkupSafe>=3.0.3
83
83
  Requires-Dist: Jinja2>=3.1.6
@@ -122,7 +122,8 @@ Requires-Dist: pytest-html==4.0.2
122
122
  Requires-Dist: pytest-metadata==3.1.1
123
123
  Requires-Dist: pytest-ordering==0.6
124
124
  Requires-Dist: pytest-rerunfailures==16.0.1; python_version < "3.10"
125
- Requires-Dist: pytest-rerunfailures==16.3; python_version >= "3.10"
125
+ Requires-Dist: pytest-rerunfailures==16.3; python_version == "3.10"
126
+ Requires-Dist: pytest-rerunfailures==16.4; python_version >= "3.11"
126
127
  Requires-Dist: pytest-xdist==3.8.0
127
128
  Requires-Dist: parameterized==0.9.0
128
129
  Requires-Dist: behave==1.2.6
@@ -141,7 +142,7 @@ Requires-Dist: allure-python-commons>=2.16.0; extra == "allure"
141
142
  Requires-Dist: allure-behave>=2.16.0; extra == "allure"
142
143
  Provides-Extra: coverage
143
144
  Requires-Dist: coverage>=7.10.7; python_version < "3.10" and extra == "coverage"
144
- Requires-Dist: coverage>=7.14.3; python_version >= "3.10" and extra == "coverage"
145
+ Requires-Dist: coverage>=7.15.0; python_version >= "3.10" and extra == "coverage"
145
146
  Requires-Dist: pytest-cov>=7.1.0; extra == "coverage"
146
147
  Provides-Extra: flake8
147
148
  Requires-Dist: flake8==7.3.0; extra == "flake8"
@@ -159,7 +160,7 @@ Requires-Dist: pycparser==2.23; python_version < "3.10" and extra == "pdfminer"
159
160
  Requires-Dist: pycparser==3.0; python_version >= "3.10" and extra == "pdfminer"
160
161
  Provides-Extra: pillow
161
162
  Requires-Dist: Pillow>=11.3.0; python_version < "3.10" and extra == "pillow"
162
- Requires-Dist: Pillow>=12.2.0; python_version >= "3.10" and extra == "pillow"
163
+ Requires-Dist: Pillow>=12.3.0; python_version >= "3.10" and extra == "pillow"
163
164
  Provides-Extra: pip-system-certs
164
165
  Requires-Dist: pip-system-certs>=4.0; platform_system == "Windows" and extra == "pip-system-certs"
165
166
  Provides-Extra: proxy
@@ -167,7 +168,7 @@ Requires-Dist: proxy.py==2.4.3; extra == "proxy"
167
168
  Provides-Extra: playwright
168
169
  Requires-Dist: playwright>=1.60.0; extra == "playwright"
169
170
  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"
171
+ Requires-Dist: greenlet>=3.5.3; python_version >= "3.10" and extra == "playwright"
171
172
  Provides-Extra: pyautogui
172
173
  Requires-Dist: PyAutoGUI>=0.9.54; platform_system != "Linux" and extra == "pyautogui"
173
174
  Dynamic: author
@@ -335,7 +336,7 @@ for element in elements:
335
336
  <p>💡 You can set the Chromium browser to use via command line parameters:</p>
336
337
 
337
338
  ```zsh
338
- python SCRIPT.py --use-chromium # Use the unbranded Chromium browser
339
+ python SCRIPT.py --chromium # Use the unbranded Chromium browser
339
340
  python SCRIPT.py --cft # Use Chrome-for-testing
340
341
  python SCRIPT.py --edge # Use Microsoft Edge
341
342
  python SCRIPT.py --brave # Use Brave browser
@@ -949,6 +950,7 @@ pytest test_coffee_cart.py --trace
949
950
  --brave # (Shortcut for "--browser=brave".)
950
951
  --comet # (Shortcut for "--browser=comet".)
951
952
  --atlas # (Shortcut for "--browser=atlas".)
953
+ --chromium # (Shortcut for using base `Chromium`)
952
954
  --settings-file=FILE # (Override default SeleniumBase settings.)
953
955
  --env=ENV # (Set the test env. Access with "self.env" in tests.)
954
956
  --account=STR # (Set account. Access with "self.account" in tests.)
@@ -149,7 +149,7 @@ for element in elements:
149
149
  <p>💡 You can set the Chromium browser to use via command line parameters:</p>
150
150
 
151
151
  ```zsh
152
- python SCRIPT.py --use-chromium # Use the unbranded Chromium browser
152
+ python SCRIPT.py --chromium # Use the unbranded Chromium browser
153
153
  python SCRIPT.py --cft # Use Chrome-for-testing
154
154
  python SCRIPT.py --edge # Use Microsoft Edge
155
155
  python SCRIPT.py --brave # Use Brave browser
@@ -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.)
@@ -10,13 +10,13 @@ exceptiongroup>=1.3.1
10
10
  websockets~=15.0.1;python_version<"3.10"
11
11
  websockets>=16.0;python_version>="3.10"
12
12
  filelock~=3.19.1;python_version<"3.10"
13
- filelock>=3.29.4;python_version>="3.10"
13
+ filelock>=3.29.5;python_version>="3.10"
14
14
  fasteners>=0.20
15
15
  mycdp>=1.4.0
16
16
  pynose>=1.5.5
17
17
  platformdirs~=4.4.0;python_version<"3.10"
18
18
  platformdirs>=4.10.0;python_version>="3.10"
19
- typing-extensions>=4.15.0
19
+ typing-extensions>=4.16.0
20
20
  sbvirtualdisplay>=1.4.0
21
21
  MarkupSafe>=3.0.3
22
22
  Jinja2>=3.1.6
@@ -61,7 +61,8 @@ pytest-html==4.0.2
61
61
  pytest-metadata==3.1.1
62
62
  pytest-ordering==0.6
63
63
  pytest-rerunfailures==16.0.1;python_version<"3.10"
64
- pytest-rerunfailures==16.3;python_version>="3.10"
64
+ pytest-rerunfailures==16.3;python_version=="3.10"
65
+ pytest-rerunfailures==16.4;python_version>="3.11"
65
66
  pytest-xdist==3.8.0
66
67
  parameterized==0.9.0
67
68
  behave==1.2.6
@@ -79,7 +80,7 @@ rich>=15.0.0,<16
79
80
  # ("pip install -r requirements.txt" also installs this, but "pip install -e ." won't.)
80
81
 
81
82
  coverage>=7.10.7;python_version<"3.10"
82
- coverage>=7.14.3;python_version>="3.10"
83
+ coverage>=7.15.0;python_version>="3.10"
83
84
  pytest-cov>=7.1.0
84
85
  flake8==7.3.0
85
86
  mccabe==0.7.0
@@ -1,2 +1,2 @@
1
1
  # seleniumbase package
2
- __version__ = "4.50.2"
2
+ __version__ = "4.50.5"
@@ -492,8 +492,11 @@ def get_configured_sb(context):
492
492
  sb.binary_location = binary_location
493
493
  sb_config.binary_location = binary_location
494
494
  continue
495
- # Handle: -D use-chromium
496
- if low_key in ["use-chromium"] and not sb_config.binary_location:
495
+ # Handle: -D use-chromium / chromium
496
+ if (
497
+ low_key in ["use-chromium", "chromium"]
498
+ and not sb_config.binary_location
499
+ ):
497
500
  binary_location = "_chromium_"
498
501
  sb.binary_location = binary_location
499
502
  sb_config.binary_location = binary_location
@@ -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,38 +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 114")
156
- print(" sbase get chromedriver 114.0.5735.90")
157
- print(" sbase get chromedriver stable")
158
- print(" sbase get chromedriver beta")
159
- print(" sbase get chromedriver -p")
160
- print(" sbase get cft 131")
161
- print(" sbase get chs")
162
- print(" Output:")
163
- print(" Downloads the webdriver to seleniumbase/drivers/")
164
- print(" (chromedriver is required for Chrome automation)")
165
- print(" (geckodriver is required for Firefox automation)")
166
- print(" (edgedriver is required for MS__Edge automation)")
167
- print(" (cft is for the `Chrome for Testing` binary exe)")
168
- 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.)")
169
171
  print("")
170
172
 
171
173
 
@@ -2,31 +2,39 @@
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
- sbase get chromedriver 114
18
- sbase get chromedriver 114.0.5735.90
22
+ sbase get chromedriver 149
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
22
27
  sbase get chromium
23
- sbase get cft 131
28
+ sbase get chromium --revision=1639046
29
+ sbase get cft 149
24
30
  sbase get chs
25
31
  Output:
26
- Downloads the webdriver to seleniumbase/drivers/
27
- (chromedriver is required for Chrome automation)
28
- (geckodriver is required for Firefox automation)
29
- (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.)
30
38
  """
31
39
  import colorama
32
40
  import logging
@@ -70,38 +78,40 @@ DEFAULT_EDGEDRIVER_VERSION = "115.0.1901.183" # (If can't find LATEST_STABLE)
70
78
 
71
79
  def invalid_run_command():
72
80
  exp = " ** get / install **\n\n"
73
- exp += " Usage:\n"
74
- exp += " seleniumbase install [DRIVER_NAME] [OPTIONS]\n"
75
- exp += " OR sbase install [DRIVER_NAME] [OPTIONS]\n"
76
- exp += " OR seleniumbase get [DRIVER_NAME] [OPTIONS]\n"
77
- exp += " OR sbase get [DRIVER_NAME] [OPTIONS]\n"
78
- exp += " (Drivers: chromedriver, cft, uc_driver,\n"
79
- exp += " edgedriver, chs, geckodriver)\n"
80
- exp += " Options:\n"
81
- exp += " VERSION Specify the version.\n"
82
- exp += " Tries to detect the needed version.\n"
83
- exp += " If using chromedriver or edgedriver,\n"
84
- exp += " you can use the major version integer.\n"
85
- exp += "\n"
86
- exp += " -p OR --path Also copy the driver to /usr/local/bin\n"
87
- exp += " Examples:\n"
88
- exp += " sbase get chromedriver\n"
89
- exp += " sbase get geckodriver\n"
90
- exp += " sbase get edgedriver\n"
91
- exp += " sbase get chromedriver 114\n"
92
- exp += " sbase get chromedriver 114.0.5735.90\n"
93
- exp += " sbase get chromedriver stable\n"
94
- exp += " sbase get chromedriver beta\n"
95
- exp += " sbase get chromedriver -p\n"
96
- exp += " sbase get cft 131\n"
97
- exp += " sbase get chs\n"
98
- exp += " Output:\n"
99
- exp += " Downloads the webdriver to seleniumbase/drivers/\n"
100
- exp += " (chromedriver is required for Chrome automation)\n"
101
- exp += " (geckodriver is required for Firefox automation)\n"
102
- exp += " (edgedriver is required for MS__Edge automation)\n"
103
- exp += " (cft is for the `Chrome for Testing` binary exe)\n"
104
- 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"
105
115
  print("")
106
116
  raise Exception("%s\n\n%s" % (constants.Warnings.INVALID_RUN_COMMAND, exp))
107
117
 
@@ -138,6 +148,8 @@ def get_proxy_info():
138
148
  protocol = "https"
139
149
  elif "socks4" in proxy_string:
140
150
  protocol = "socks4"
151
+ elif "socks5h" in proxy_string:
152
+ protocol = "socks5h"
141
153
  elif "socks5" in proxy_string:
142
154
  protocol = "socks5"
143
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}
@@ -2814,7 +2816,13 @@ def _set_chrome_options(
2814
2816
  d_f_string = ",".join(included_disabled_features)
2815
2817
  chrome_options.add_argument("--disable-features=%s" % d_f_string)
2816
2818
  chrome_options.add_argument("--enable-unsafe-extension-debugging")
2817
- chrome_options.add_argument("--test-type")
2819
+ if (
2820
+ hasattr(sb_config, "_cdp_browser")
2821
+ and sb_config._cdp_browser == "brave"
2822
+ ):
2823
+ pass # Looks like "--test-type" breaks Brave now
2824
+ else:
2825
+ chrome_options.add_argument("--test-type")
2818
2826
  if proxy_auth or sb_config._ext_dirs:
2819
2827
  if not is_using_uc(undetectable, browser_name):
2820
2828
  chrome_options.add_argument("--remote-debugging-pipe")
@@ -2901,7 +2909,9 @@ def _set_firefox_options(
2901
2909
  socks_ver = 0
2902
2910
  chunks = proxy_string.split(":")
2903
2911
  if len(chunks) == 3 and (
2904
- chunks[0] == "socks4" or chunks[0] == "socks5"
2912
+ chunks[0] == "socks4"
2913
+ or chunks[0] == "socks5"
2914
+ or chunks[0] == "socks5h"
2905
2915
  ):
2906
2916
  socks_proxy = True
2907
2917
  socks_ver = int(chunks[0][5])
@@ -3116,6 +3126,11 @@ def get_driver(
3116
3126
  if browser_name in constants.ChromiumSubs.chromium_subs:
3117
3127
  browser_name = "chrome"
3118
3128
  browser_name = browser_name.lower()
3129
+ if (
3130
+ hasattr(sb_config, "_cdp_browser")
3131
+ and sb_config._cdp_browser == "brave"
3132
+ ):
3133
+ undetectable = True
3119
3134
  if is_using_uc(undetectable, browser_name):
3120
3135
  if ad_block_on:
3121
3136
  sb_config.ad_block_on = True
@@ -5012,7 +5027,10 @@ def get_local_driver(
5012
5027
  device_height,
5013
5028
  device_pixel_ratio,
5014
5029
  )
5015
- if binary_location and "chromium_drivers" in binary_location:
5030
+ if (
5031
+ (binary_location and "chromium_drivers" in binary_location)
5032
+ or (binary_location and "Chromium.app" in binary_location)
5033
+ ):
5016
5034
  chrome_options.add_argument("--use-mock-keychain")
5017
5035
  use_version = "latest"
5018
5036
  major_chrome_version = None
@@ -5139,6 +5157,13 @@ def get_local_driver(
5139
5157
  sb_config.multi_proxy = True
5140
5158
  if uc_driver_version and driver_version == "keep":
5141
5159
  driver_version = uc_driver_version
5160
+ if (
5161
+ hasattr(sb_config, "_cdp_browser")
5162
+ and sb_config._cdp_browser == "opera"
5163
+ ):
5164
+ use_version = "132"
5165
+ if use_uc:
5166
+ use_version = "144"
5142
5167
  use_version = find_chromedriver_version_to_use(
5143
5168
  use_version, driver_version
5144
5169
  )
@@ -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()
@@ -2308,6 +2308,8 @@ class CDPMethods():
2308
2308
  time.sleep(0.48)
2309
2309
  self.loop.run_until_complete(self.page.wait(0.1))
2310
2310
  x2 = x2 + 22.5 # Overshoot drop to maximize compatibility
2311
+ y1 = y1 + 3
2312
+ y2 = y2 + 3
2311
2313
  self.gui_drag_drop_points(x1, y1, x2, y2, timeframe=0.55)
2312
2314
  time.sleep(0.25)
2313
2315
  self.loop.run_until_complete(self.page.wait(0.2))
@@ -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)
@@ -668,7 +668,10 @@ def Driver(
668
668
  binary_location = "cft"
669
669
  elif chs and not binary_location:
670
670
  binary_location = "chs"
671
- if "--use-chromium" in sys_argv and not binary_location:
671
+ if (
672
+ ("--use-chromium" in sys_argv and not binary_location)
673
+ or ("--chromium" in sys_argv and not binary_location)
674
+ ):
672
675
  binary_location = "_chromium_"
673
676
  elif "--cft" in sys_argv and not binary_location:
674
677
  binary_location = "cft"
@@ -33,7 +33,7 @@ def pytest_addoption(parser):
33
33
  --brave (Shortcut for "--browser=brave".)
34
34
  --comet (Shortcut for "--browser=comet".)
35
35
  --atlas (Shortcut for "--browser=atlas".)
36
- --use-chromium (Shortcut for using base `Chromium`)
36
+ --chromium (Shortcut for using base `Chromium`)
37
37
  --cft (Shortcut for using `Chrome for Testing`)
38
38
  --chs (Shortcut for using `Chrome-Headless-Shell`)
39
39
  --settings-file=FILE (Override default SeleniumBase settings.)
@@ -223,6 +223,7 @@ def pytest_addoption(parser):
223
223
  )
224
224
  parser.addoption(
225
225
  "--use-chromium",
226
+ "--chromium",
226
227
  action="store_true",
227
228
  dest="use_chromium",
228
229
  default=False,
@@ -708,7 +708,10 @@ def SB(
708
708
  binary_location = "cft"
709
709
  elif chs and not binary_location:
710
710
  binary_location = "chs"
711
- if "--use-chromium" in sys_argv and not binary_location:
711
+ if (
712
+ ("--use-chromium" in sys_argv and not binary_location)
713
+ or ("--chromium" in sys_argv and not binary_location)
714
+ ):
712
715
  binary_location = "_chromium_"
713
716
  elif "--cft" in sys_argv and not binary_location:
714
717
  binary_location = "cft"
@@ -22,7 +22,7 @@ class SeleniumBrowser(Plugin):
22
22
  --brave (Shortcut for "--browser=brave".)
23
23
  --comet (Shortcut for "--browser=comet".)
24
24
  --atlas (Shortcut for "--browser=atlas".)
25
- --use-chromium (Shortcut for using base `Chromium`)
25
+ --chromium (Shortcut for using base `Chromium`)
26
26
  --cft (Shortcut for using `Chrome for Testing`)
27
27
  --chs (Shortcut for using `Chrome-Headless-Shell`)
28
28
  --user-data-dir=DIR (Set the Chrome user data directory to use.)
@@ -184,6 +184,7 @@ class SeleniumBrowser(Plugin):
184
184
  )
185
185
  parser.addoption(
186
186
  "--use-chromium",
187
+ "--chromium",
187
188
  action="store_true",
188
189
  dest="use_chromium",
189
190
  default=False,
@@ -527,7 +527,11 @@ async def start(
527
527
  print(" Using default Chrome browser instead!")
528
528
  bin_loc = None
529
529
  browser_executable_path = bin_loc
530
- elif use_chromium or "--use-chromium" in arg_join:
530
+ elif (
531
+ use_chromium
532
+ or "--use-chromium" in arg_join
533
+ or "--chromium" in sys_argv
534
+ ):
531
535
  browser_executable_path = "_chromium_"
532
536
  elif cft or "--cft" in arg_join:
533
537
  browser_executable_path = "_cft_"