seleniumbase 4.34.2__py3-none-any.whl → 4.34.4__py3-none-any.whl

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,2 +1,2 @@
1
1
  # seleniumbase package
2
- __version__ = "4.34.2"
2
+ __version__ = "4.34.4"
@@ -39,6 +39,7 @@ import time
39
39
  import tarfile
40
40
  import urllib3
41
41
  import zipfile
42
+ from contextlib import suppress
42
43
  from seleniumbase.fixtures import constants
43
44
  from seleniumbase.fixtures import shared_utils
44
45
  from seleniumbase import config as sb_config
@@ -1200,7 +1201,7 @@ def main(override=None, intel_for_uc=None, force_uc=None):
1200
1201
  driver_path = None
1201
1202
  driver_file = None
1202
1203
  base_path = os.sep.join(zip_file_path.split(os.sep)[:-1])
1203
- folder_name = contents[0].split(os.sep)[0]
1204
+ folder_name = contents[0].split("/")[0]
1204
1205
  folder_path = os.path.join(base_path, folder_name)
1205
1206
  if IS_MAC or IS_LINUX:
1206
1207
  if (
@@ -1221,12 +1222,14 @@ def main(override=None, intel_for_uc=None, force_uc=None):
1221
1222
  zip_file_path,
1222
1223
  "-DestinationPath",
1223
1224
  downloads_folder,
1225
+ "-Force",
1224
1226
  ]
1225
1227
  )
1226
1228
  else:
1227
1229
  zip_ref.extractall(downloads_folder)
1228
1230
  zip_ref.close()
1229
- os.remove(zip_file_path)
1231
+ with suppress(Exception):
1232
+ os.remove(zip_file_path)
1230
1233
  log_d("%sUnzip Complete!%s\n" % (c2, cr))
1231
1234
  pr_base_path = c3 + base_path + cr
1232
1235
  pr_sep = c3 + os.sep + cr
@@ -1240,7 +1243,7 @@ def main(override=None, intel_for_uc=None, force_uc=None):
1240
1243
  driver_path = None
1241
1244
  driver_file = None
1242
1245
  base_path = os.sep.join(zip_file_path.split(os.sep)[:-1])
1243
- folder_name = contents[0].split(os.sep)[0]
1246
+ folder_name = contents[0].split("/")[0]
1244
1247
  folder_path = os.path.join(base_path, folder_name)
1245
1248
  if IS_MAC or IS_LINUX:
1246
1249
  if (
@@ -1261,12 +1264,14 @@ def main(override=None, intel_for_uc=None, force_uc=None):
1261
1264
  zip_file_path,
1262
1265
  "-DestinationPath",
1263
1266
  downloads_folder,
1267
+ "-Force",
1264
1268
  ]
1265
1269
  )
1266
1270
  else:
1267
1271
  zip_ref.extractall(downloads_folder)
1268
1272
  zip_ref.close()
1269
- os.remove(zip_file_path)
1273
+ with suppress(Exception):
1274
+ os.remove(zip_file_path)
1270
1275
  log_d("%sUnzip Complete!%s\n" % (c2, cr))
1271
1276
  pr_base_path = c3 + base_path + cr
1272
1277
  pr_sep = c3 + os.sep + cr
@@ -247,6 +247,27 @@ def main():
247
247
  data.append("msedgedriver.exe")
248
248
  data.append("operadriver.exe")
249
249
  data.append("uc_driver.exe")
250
+ data.append("chrome-mac-arm64.zip")
251
+ data.append("chrome-mac-x64.zip")
252
+ data.append("chrome-linux64.zip")
253
+ data.append("chrome-win64.zip")
254
+ data.append("chrome-win32.zip")
255
+ data.append("chrome-mac-arm64")
256
+ data.append("chrome-mac-x64")
257
+ data.append("chrome-linux64")
258
+ data.append("chrome-win64")
259
+ data.append("chrome-win32")
260
+ data.append("chrome-headless-shell-mac-arm64.zip")
261
+ data.append("chrome-headless-shell-mac-x64.zip")
262
+ data.append("chrome-headless-shell-linux64.zip")
263
+ data.append("chrome-headless-shell-win64.zip")
264
+ data.append("chrome-headless-shell-win32.zip")
265
+ data.append("chrome-headless-shell-mac-arm64")
266
+ data.append("chrome-headless-shell-mac-x64")
267
+ data.append("chrome-headless-shell-linux64")
268
+ data.append("chrome-headless-shell-win64")
269
+ data.append("chrome-headless-shell-win32")
270
+ data.append("libc++.dylib")
250
271
  data.append("logs")
251
272
  data.append("latest_logs")
252
273
  data.append("log_archives")
@@ -2651,6 +2651,13 @@ def get_driver(
2651
2651
  if headless2 and browser_name == constants.Browser.FIREFOX:
2652
2652
  headless2 = False # Only for Chromium
2653
2653
  headless = True
2654
+ if (
2655
+ is_using_uc(undetectable, browser_name)
2656
+ and binary_location
2657
+ and isinstance(binary_location, str)
2658
+ and binary_location.lower() == "chs"
2659
+ ):
2660
+ raise Exception("UC Mode can't be used with Chrome-Headless-Shell!")
2654
2661
  if (
2655
2662
  binary_location
2656
2663
  and isinstance(binary_location, str)
@@ -137,6 +137,8 @@ def Driver(
137
137
  guest=None, # Shortcut / Duplicate of "guest_mode".
138
138
  wire=None, # Shortcut / Duplicate of "use_wire".
139
139
  pls=None, # Shortcut / Duplicate of "page_load_strategy".
140
+ cft=None, # Use "Chrome for Testing"
141
+ chs=None, # Use "Chrome-Headless-Shell"
140
142
  ):
141
143
  """
142
144
  * SeleniumBase Driver as a Python Context Manager or a returnable object. *
@@ -550,6 +552,14 @@ def Driver(
550
552
  if arg.startswith("--bl="):
551
553
  binary_location = arg.split("--bl=")[1]
552
554
  break
555
+ if cft and not binary_location:
556
+ binary_location = "cft"
557
+ elif chs and not binary_location:
558
+ binary_location = "chs"
559
+ if "--cft" in sys_argv and not binary_location:
560
+ binary_location = "cft"
561
+ elif "--chs" in sys_argv and not binary_location:
562
+ binary_location = "chs"
553
563
  if (
554
564
  binary_location
555
565
  and binary_location.lower() == "chs"
@@ -184,6 +184,20 @@ def pytest_addoption(parser):
184
184
  default=False,
185
185
  help="""Shortcut for --browser=safari""",
186
186
  )
187
+ parser.addoption(
188
+ "--cft",
189
+ action="store_true",
190
+ dest="use_cft",
191
+ default=False,
192
+ help="""Shortcut for using `Chrome for Testing`""",
193
+ )
194
+ parser.addoption(
195
+ "--chs",
196
+ action="store_true",
197
+ dest="use_chs",
198
+ default=False,
199
+ help="""Shortcut for using `Chrome-Headless-Shell`""",
200
+ )
187
201
  parser.addoption(
188
202
  "--with-selenium",
189
203
  action="store_true",
@@ -1575,6 +1589,10 @@ def pytest_configure(config):
1575
1589
  sb_config.extension_dir = config.getoption("extension_dir")
1576
1590
  sb_config.disable_features = config.getoption("disable_features")
1577
1591
  sb_config.binary_location = config.getoption("binary_location")
1592
+ if config.getoption("use_cft") and not sb_config.binary_location:
1593
+ sb_config.binary_location = "cft"
1594
+ elif config.getoption("use_chs") and not sb_config.binary_location:
1595
+ sb_config.binary_location = "chs"
1578
1596
  if (
1579
1597
  sb_config.binary_location
1580
1598
  and sb_config.binary_location.lower() == "chs"
@@ -119,6 +119,8 @@ def SB(
119
119
  pls=None, # Shortcut / Duplicate of "page_load_strategy".
120
120
  sjw=None, # Shortcut / Duplicate of "skip_js_waits".
121
121
  wfa=None, # Shortcut / Duplicate of "wait_for_angularjs".
122
+ cft=None, # Use "Chrome for Testing"
123
+ chs=None, # Use "Chrome-Headless-Shell"
122
124
  save_screenshot=None, # Save a screenshot at the end of each test.
123
125
  no_screenshot=None, # No screenshots saved unless tests directly ask it.
124
126
  page_load_strategy=None, # Set Chrome PLS to "normal", "eager", or "none".
@@ -588,6 +590,14 @@ def SB(
588
590
  if arg.startswith("--bl="):
589
591
  binary_location = arg.split("--bl=")[1]
590
592
  break
593
+ if cft and not binary_location:
594
+ binary_location = "cft"
595
+ elif chs and not binary_location:
596
+ binary_location = "chs"
597
+ if "--cft" in sys_argv and not binary_location:
598
+ binary_location = "cft"
599
+ elif "--chs" in sys_argv and not binary_location:
600
+ binary_location = "chs"
591
601
  if (
592
602
  binary_location
593
603
  and binary_location.lower() == "chs"
@@ -144,6 +144,20 @@ class SeleniumBrowser(Plugin):
144
144
  default=False,
145
145
  help="""Shortcut for --browser=safari""",
146
146
  )
147
+ parser.addoption(
148
+ "--cft",
149
+ action="store_true",
150
+ dest="use_cft",
151
+ default=False,
152
+ help="""Shortcut for using `Chrome for Testing`""",
153
+ )
154
+ parser.addoption(
155
+ "--chs",
156
+ action="store_true",
157
+ dest="use_chs",
158
+ default=False,
159
+ help="""Shortcut for using `Chrome-Headless-Shell`""",
160
+ )
147
161
  parser.addoption(
148
162
  "--cap_file",
149
163
  "--cap-file",
@@ -1203,6 +1217,10 @@ class SeleniumBrowser(Plugin):
1203
1217
  test.test.extension_dir = self.options.extension_dir
1204
1218
  test.test.disable_features = self.options.disable_features
1205
1219
  test.test.binary_location = self.options.binary_location
1220
+ if self.options.use_cft and not test.test.binary_location:
1221
+ test.test.binary_location = "cft"
1222
+ elif self.options.use_chs and not test.test.binary_location:
1223
+ test.test.binary_location = "chs"
1206
1224
  if (
1207
1225
  test.test.binary_location
1208
1226
  and test.test.binary_location.lower() == "chs"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: seleniumbase
3
- Version: 4.34.2
3
+ Version: 4.34.4
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
@@ -59,12 +59,12 @@ Classifier: Topic :: Utilities
59
59
  Requires-Python: >=3.8
60
60
  Description-Content-Type: text/markdown
61
61
  License-File: LICENSE
62
- Requires-Dist: pip>=24.3.1
62
+ Requires-Dist: pip>=25.0
63
63
  Requires-Dist: packaging>=24.2
64
64
  Requires-Dist: setuptools~=70.2; python_version < "3.10"
65
65
  Requires-Dist: setuptools>=75.8.0; python_version >= "3.10"
66
66
  Requires-Dist: wheel>=0.45.1
67
- Requires-Dist: attrs>=24.3.0
67
+ Requires-Dist: attrs>=25.1.0
68
68
  Requires-Dist: certifi>=2024.12.14
69
69
  Requires-Dist: exceptiongroup>=1.2.2
70
70
  Requires-Dist: websockets~=13.1; python_version < "3.9"
@@ -3,7 +3,7 @@ sbase/__main__.py,sha256=G0bVB1-DM4PGwQ1KyOupaWCs4ePbChZNNWuX2htim5U,647
3
3
  sbase/steps.py,sha256=_WvAjydKqZfTdnZW9LPKkRty-g-lfdUPmLqnZj6ulcs,43013
4
4
  seleniumbase/__init__.py,sha256=OtJh8nGKL4xtZpw8KPqmn7Q6R-86t4cWUDyVF5MbMTo,2398
5
5
  seleniumbase/__main__.py,sha256=dn1p6dgCchmcH1zzTzzQvFwwdQQqnTGH6ULV9m4hv24,654
6
- seleniumbase/__version__.py,sha256=7MfqwQmRqETlKWexc8yLVDnkE1CWZHELfUUA-N5IZ8g,46
6
+ seleniumbase/__version__.py,sha256=A7YXswvIpAakIGzXlGIW8Xuqrjf271ya2J-OuTKhSoc,46
7
7
  seleniumbase/behave/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
8
8
  seleniumbase/behave/behave_helper.py,sha256=elkl8P9eLulRAioLstE9baYNM9N_PHBmAOcajX-pH_Y,24198
9
9
  seleniumbase/behave/behave_sb.py,sha256=qQF85LoohJBfrPK5ZcPi50v-pWtOrC9qcN1B3Ki_3tY,59401
@@ -25,9 +25,9 @@ seleniumbase/console_scripts/run.py,sha256=6Q9kbpOY40kTczcQVrD-x6thb3QO9-2wfse7D
25
25
  seleniumbase/console_scripts/sb_behave_gui.py,sha256=3Zl7_QQczvkkQW_UuaqYEUlEjiZ6AJzHR9GeNyVVXkc,15147
26
26
  seleniumbase/console_scripts/sb_caseplans.py,sha256=qlmvjQ49bOBE1Q29fVmabimkVibCVr25GNtJhFPTMrc,18145
27
27
  seleniumbase/console_scripts/sb_commander.py,sha256=exQGKzqRAoGqRmQtDmlmoHnSG9eSy9eh8HVy-tXw6s4,13343
28
- seleniumbase/console_scripts/sb_install.py,sha256=GgOqQZZhjwbSle9aB-6Fyf3x6Xlj78uKQ6PkPq-3VEE,55346
28
+ seleniumbase/console_scripts/sb_install.py,sha256=RdByOmTQebibRFk5ym-FtFr0Gf91_ZfOsBB2MN5izUc,55524
29
29
  seleniumbase/console_scripts/sb_mkchart.py,sha256=ep9g-9CSIwaOJKVxhB3xjRQpfsuApyN8-Dr129cNXwQ,10941
30
- seleniumbase/console_scripts/sb_mkdir.py,sha256=SaI2wnjE5eQLxX8RPdjFjM_ghBbMm4r_vBUzU5t5dzY,29819
30
+ seleniumbase/console_scripts/sb_mkdir.py,sha256=TpXjsG-SZE496EFhbR1aJr5tcHRBo57QSmA9nfpxNXs,30713
31
31
  seleniumbase/console_scripts/sb_mkfile.py,sha256=OWYd4yFccmjrd-gNn1t1una-HDRU2_N2-r4Tg3nHsj0,17744
32
32
  seleniumbase/console_scripts/sb_mkpres.py,sha256=EWFRVacjYTX49y-fEiYTZacM9_01IxuuaO4nMjHrIGo,11015
33
33
  seleniumbase/console_scripts/sb_mkrec.py,sha256=PrizjTmyrROYPO0yDm-zQS3QSfsZNeAmcJKKUvfgLhc,11966
@@ -36,7 +36,7 @@ seleniumbase/console_scripts/sb_print.py,sha256=tNy-bMDgwHJO3bZxMpmo9weSE8uhbH0C
36
36
  seleniumbase/console_scripts/sb_recorder.py,sha256=fnHb5-kh11Hit-E9Ha-e4QXzqLcZvtij6mb5qNd4B1Q,11032
37
37
  seleniumbase/core/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
38
38
  seleniumbase/core/application_manager.py,sha256=e_0sjtI8cjY5BNyZj1QBR0j6_oCScxGmSXYEpcYwuZE,576
39
- seleniumbase/core/browser_launcher.py,sha256=4XvJ-oppY02wIrMm8nKeGQH5rZ1MCO95vQLiYT9vXL0,233436
39
+ seleniumbase/core/browser_launcher.py,sha256=yBXCddbmRF7LXkM4I67KvYCYIMJovN9_5NucacfaTxk,233695
40
40
  seleniumbase/core/capabilities_parser.py,sha256=meIS2uHapTCq2ldfNAToC7r0cKmZDRXuYNKExM1GHDY,6038
41
41
  seleniumbase/core/colored_traceback.py,sha256=DrRWfg7XEnKcgY59Xj7Jdk09H-XqHYBSUpB-DiZt6iY,2020
42
42
  seleniumbase/core/create_db_tables.sql,sha256=VWPtrdiW_HQ6yETHjqTu-VIrTwvd8I8o1NfBeaVSHpU,972
@@ -86,13 +86,13 @@ seleniumbase/plugins/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hS
86
86
  seleniumbase/plugins/base_plugin.py,sha256=FemdftNhOaTfQIw5bWcJQPPPGQ3P0_sMEI_YYDuzZgU,14972
87
87
  seleniumbase/plugins/basic_test_info.py,sha256=8ov6n417gPbqqvrlT4zrch7l2XcRt-GF2ny6rR9AMWk,2108
88
88
  seleniumbase/plugins/db_reporting_plugin.py,sha256=En09qUCoojrk9-vbcnsoHdSELoGmag2GDIyu3jTiJas,7331
89
- seleniumbase/plugins/driver_manager.py,sha256=56uzORwS0VV4E0LuY89g3OSzakoVVigcVaXXWk9z9cY,35468
89
+ seleniumbase/plugins/driver_manager.py,sha256=QGGekWvcj58VMGr87UyXl1OvVTMjZDEdt8jaq7K13u8,35863
90
90
  seleniumbase/plugins/page_source.py,sha256=loTnXxOj4kxEukuTZEiGyvKBhY3KDVDMnNlHHheTBDE,1889
91
- seleniumbase/plugins/pytest_plugin.py,sha256=dWng0-21PR0bU76J4ipkjCKxlrt6OjUvxW4pGdiWCeQ,107658
91
+ seleniumbase/plugins/pytest_plugin.py,sha256=SKCHzUFSd8dHPQwYQTJp-6AX7YD6Kce-MemvNguNgYs,108249
92
92
  seleniumbase/plugins/s3_logging_plugin.py,sha256=WDfertQgGOW_SRJpFMaekYD6vBVW9VO62POtXXy2HCM,2319
93
- seleniumbase/plugins/sb_manager.py,sha256=xyQrtXrKju11DIlrzcOjSk4BI1wdUcpAIJDIuSMl-Tg,55847
93
+ seleniumbase/plugins/sb_manager.py,sha256=aOaP5ZxLM7EfpLml4f_iBXkidKtFA1KcZQQIGm4aSQQ,56242
94
94
  seleniumbase/plugins/screen_shots.py,sha256=1hrXw-hzuZ1BR6Yh7AyWX2ABnvnP73-RCbwdz958gj4,1127
95
- seleniumbase/plugins/selenium_plugin.py,sha256=J0H2TPAATEal06eQ-kchiLnBGRyjHzDzjoAfWVvNyuM,59374
95
+ seleniumbase/plugins/selenium_plugin.py,sha256=qpbP4pMGGdM2s_YWWNzgZQx9pLGETW6H3_Gbx2FQ57o,60023
96
96
  seleniumbase/resources/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
97
97
  seleniumbase/translate/__init__.py,sha256=N2i5XntTwJZmwr9-qvdX5gC6Rdm5-ClIbnQ8yyPn4Oo,459
98
98
  seleniumbase/translate/chinese.py,sha256=0QhK2eadtsdN4KCvwki1J7jBCe8I4xxWbKzteJKJozY,24698
@@ -135,9 +135,9 @@ seleniumbase/utilities/selenium_grid/start-grid-hub.bat,sha256=Ftq-GrAKRYH2ssDPr
135
135
  seleniumbase/utilities/selenium_grid/start-grid-hub.sh,sha256=KADv0RUHONLL2_I443QFK8PryBpDmKn5Gy0s4o0vDSM,106
136
136
  seleniumbase/utilities/selenium_ide/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
137
137
  seleniumbase/utilities/selenium_ide/convert_ide.py,sha256=pZFnqEJQEKZPyNFjkLD29s2HPQgCrWW9XJWpCPhWOoM,31691
138
- seleniumbase-4.34.2.dist-info/LICENSE,sha256=BRblZsX7HyPUjQmYTiyWr_e9tzWvmR3R4SFclM2R3W0,1085
139
- seleniumbase-4.34.2.dist-info/METADATA,sha256=tvfGcEsVci8OW-lRVq2-uKFxkyM97KAMiN7hDbS90qI,86522
140
- seleniumbase-4.34.2.dist-info/WHEEL,sha256=In9FTNxeP60KnTkGw7wk6mJPYd_dQSjEZmXdBdMCI-8,91
141
- seleniumbase-4.34.2.dist-info/entry_points.txt,sha256=CNrh2EKNaHYEhO6pP1RJyVLB99LkDDYX7TnUK8xfjqk,623
142
- seleniumbase-4.34.2.dist-info/top_level.txt,sha256=4N97aBOQ8ETCnDnokBsWb07lJfTaq3C1ZzYRxvLMxqU,19
143
- seleniumbase-4.34.2.dist-info/RECORD,,
138
+ seleniumbase-4.34.4.dist-info/LICENSE,sha256=BRblZsX7HyPUjQmYTiyWr_e9tzWvmR3R4SFclM2R3W0,1085
139
+ seleniumbase-4.34.4.dist-info/METADATA,sha256=KbnooUr5L7oZ3IBAtMXR6N7D0Ei_gNh0YTRQKkxK7J0,86520
140
+ seleniumbase-4.34.4.dist-info/WHEEL,sha256=In9FTNxeP60KnTkGw7wk6mJPYd_dQSjEZmXdBdMCI-8,91
141
+ seleniumbase-4.34.4.dist-info/entry_points.txt,sha256=CNrh2EKNaHYEhO6pP1RJyVLB99LkDDYX7TnUK8xfjqk,623
142
+ seleniumbase-4.34.4.dist-info/top_level.txt,sha256=4N97aBOQ8ETCnDnokBsWb07lJfTaq3C1ZzYRxvLMxqU,19
143
+ seleniumbase-4.34.4.dist-info/RECORD,,