seleniumbase 4.29.8__py3-none-any.whl → 4.29.9__py3-none-any.whl
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.
- seleniumbase/__version__.py +1 -1
- seleniumbase/core/browser_launcher.py +57 -5
- seleniumbase/plugins/driver_manager.py +58 -27
- seleniumbase/plugins/sb_manager.py +58 -27
- {seleniumbase-4.29.8.dist-info → seleniumbase-4.29.9.dist-info}/METADATA +4 -4
- {seleniumbase-4.29.8.dist-info → seleniumbase-4.29.9.dist-info}/RECORD +10 -10
- {seleniumbase-4.29.8.dist-info → seleniumbase-4.29.9.dist-info}/LICENSE +0 -0
- {seleniumbase-4.29.8.dist-info → seleniumbase-4.29.9.dist-info}/WHEEL +0 -0
- {seleniumbase-4.29.8.dist-info → seleniumbase-4.29.9.dist-info}/entry_points.txt +0 -0
- {seleniumbase-4.29.8.dist-info → seleniumbase-4.29.9.dist-info}/top_level.txt +0 -0
seleniumbase/__version__.py
CHANGED
@@ -1,2 +1,2 @@
|
|
1
1
|
# seleniumbase package
|
2
|
-
__version__ = "4.29.
|
2
|
+
__version__ = "4.29.9"
|
@@ -12,6 +12,7 @@ import warnings
|
|
12
12
|
from selenium import webdriver
|
13
13
|
from selenium.common.exceptions import ElementClickInterceptedException
|
14
14
|
from selenium.common.exceptions import InvalidSessionIdException
|
15
|
+
from selenium.common.exceptions import SessionNotCreatedException
|
15
16
|
from selenium.webdriver.chrome.service import Service as ChromeService
|
16
17
|
from selenium.webdriver.common.options import ArgOptions
|
17
18
|
from selenium.webdriver.common.service import utils as service_utils
|
@@ -718,7 +719,44 @@ def _uc_gui_click_x_y(driver, x, y, timeframe=0.25, uc_lock=False):
|
|
718
719
|
|
719
720
|
|
720
721
|
def uc_gui_click_x_y(driver, x, y, timeframe=0.25):
|
721
|
-
|
722
|
+
gui_lock = fasteners.InterProcessLock(
|
723
|
+
constants.MultiBrowser.PYAUTOGUILOCK
|
724
|
+
)
|
725
|
+
with gui_lock: # Prevent issues with multiple processes
|
726
|
+
install_pyautogui_if_missing(driver)
|
727
|
+
import pyautogui
|
728
|
+
pyautogui = get_configured_pyautogui(pyautogui)
|
729
|
+
if IS_WINDOWS:
|
730
|
+
width_ratio = 1.0
|
731
|
+
window_rect = driver.get_window_rect()
|
732
|
+
width = window_rect["width"]
|
733
|
+
height = window_rect["height"]
|
734
|
+
win_x = window_rect["x"]
|
735
|
+
win_y = window_rect["y"]
|
736
|
+
if (
|
737
|
+
hasattr(sb_config, "_saved_width_ratio")
|
738
|
+
and sb_config._saved_width_ratio
|
739
|
+
):
|
740
|
+
width_ratio = sb_config._saved_width_ratio
|
741
|
+
else:
|
742
|
+
scr_width = pyautogui.size().width
|
743
|
+
driver.maximize_window()
|
744
|
+
win_width = driver.get_window_size()["width"]
|
745
|
+
width_ratio = round(float(scr_width) / float(win_width), 2)
|
746
|
+
width_ratio += 0.01
|
747
|
+
if width_ratio < 0.45 or width_ratio > 2.55:
|
748
|
+
width_ratio = 1.01
|
749
|
+
sb_config._saved_width_ratio = width_ratio
|
750
|
+
driver.minimize_window()
|
751
|
+
driver.set_window_rect(win_x, win_y, width, height)
|
752
|
+
x = x * width_ratio
|
753
|
+
y = y * width_ratio
|
754
|
+
_uc_gui_click_x_y(driver, x, y, timeframe=timeframe, uc_lock=False)
|
755
|
+
return
|
756
|
+
page_actions.switch_to_window(
|
757
|
+
driver, driver.current_window_handle, 2, uc_lock=False
|
758
|
+
)
|
759
|
+
_uc_gui_click_x_y(driver, x, y, timeframe=timeframe, uc_lock=False)
|
722
760
|
|
723
761
|
|
724
762
|
def _on_a_cf_turnstile_page(driver):
|
@@ -804,6 +842,7 @@ def _uc_gui_click_captcha(
|
|
804
842
|
width_ratio = round(float(scr_width) / float(win_width), 2) + 0.01
|
805
843
|
if width_ratio < 0.45 or width_ratio > 2.55:
|
806
844
|
width_ratio = 1.01
|
845
|
+
sb_config._saved_width_ratio = width_ratio
|
807
846
|
driver.minimize_window()
|
808
847
|
driver.set_window_rect(win_x, win_y, width, height)
|
809
848
|
if ctype == "cf_t":
|
@@ -4239,11 +4278,11 @@ def get_local_driver(
|
|
4239
4278
|
driver.quit()
|
4240
4279
|
except Exception:
|
4241
4280
|
pass
|
4281
|
+
uc_path = None
|
4282
|
+
if os.path.exists(LOCAL_UC_DRIVER):
|
4283
|
+
uc_path = LOCAL_UC_DRIVER
|
4284
|
+
uc_path = os.path.realpath(uc_path)
|
4242
4285
|
try:
|
4243
|
-
uc_path = None
|
4244
|
-
if os.path.exists(LOCAL_UC_DRIVER):
|
4245
|
-
uc_path = LOCAL_UC_DRIVER
|
4246
|
-
uc_path = os.path.realpath(uc_path)
|
4247
4286
|
driver = undetected.Chrome(
|
4248
4287
|
options=chrome_options,
|
4249
4288
|
user_data_dir=user_data_dir,
|
@@ -4260,6 +4299,19 @@ def get_local_driver(
|
|
4260
4299
|
mac_certificate_error = True
|
4261
4300
|
else:
|
4262
4301
|
raise
|
4302
|
+
except SessionNotCreatedException:
|
4303
|
+
time.sleep(0.2)
|
4304
|
+
driver = undetected.Chrome(
|
4305
|
+
options=chrome_options,
|
4306
|
+
user_data_dir=user_data_dir,
|
4307
|
+
driver_executable_path=uc_path,
|
4308
|
+
browser_executable_path=b_path,
|
4309
|
+
enable_cdp_events=cdp_events,
|
4310
|
+
headless=False, # Xvfb needed!
|
4311
|
+
version_main=uc_chrome_version,
|
4312
|
+
use_subprocess=True, # Always!
|
4313
|
+
)
|
4314
|
+
uc_activated = True
|
4263
4315
|
if mac_certificate_error:
|
4264
4316
|
cf_lock_path = (
|
4265
4317
|
constants.MultiBrowser.CERT_FIXING_LOCK
|
@@ -303,28 +303,44 @@ def Driver(
|
|
303
303
|
proxy_string = proxy_string[1:-1]
|
304
304
|
c_a = chromium_arg
|
305
305
|
if c_a is None and "--chromium-arg" in arg_join:
|
306
|
-
|
307
|
-
|
308
|
-
|
309
|
-
|
310
|
-
|
311
|
-
|
312
|
-
c_a =
|
313
|
-
|
314
|
-
|
306
|
+
count = 0
|
307
|
+
for arg in sys_argv:
|
308
|
+
if arg.startswith("--chromium-arg="):
|
309
|
+
c_a = arg.split("--chromium-arg=")[1]
|
310
|
+
break
|
311
|
+
elif arg == "--chromium-arg" and len(sys_argv) > count + 1:
|
312
|
+
c_a = sys_argv[count + 1]
|
313
|
+
if c_a.startswith("-"):
|
314
|
+
c_a = None
|
315
|
+
break
|
316
|
+
count += 1
|
315
317
|
chromium_arg = c_a
|
316
318
|
d_f = disable_features
|
317
319
|
if d_f is None and "--disable-features" in arg_join:
|
318
|
-
|
319
|
-
|
320
|
-
|
321
|
-
|
322
|
-
|
323
|
-
|
324
|
-
d_f =
|
325
|
-
|
326
|
-
|
320
|
+
count = 0
|
321
|
+
for arg in sys_argv:
|
322
|
+
if arg.startswith("--disable-features="):
|
323
|
+
d_f = arg.split("--disable-features=")[1]
|
324
|
+
break
|
325
|
+
elif arg == "--disable-features" and len(sys_argv) > count + 1:
|
326
|
+
d_f = sys_argv[count + 1]
|
327
|
+
if d_f.startswith("-"):
|
328
|
+
d_f = None
|
329
|
+
break
|
330
|
+
count += 1
|
327
331
|
disable_features = d_f
|
332
|
+
if agent is None and "--agent" in arg_join:
|
333
|
+
count = 0
|
334
|
+
for arg in sys_argv:
|
335
|
+
if arg.startswith("--agent="):
|
336
|
+
agent = arg.split("--agent=")[1]
|
337
|
+
break
|
338
|
+
elif arg == "--agent" and len(sys_argv) > count + 1:
|
339
|
+
agent = sys_argv[count + 1]
|
340
|
+
if agent.startswith("-"):
|
341
|
+
agent = None
|
342
|
+
break
|
343
|
+
count += 1
|
328
344
|
user_agent = agent
|
329
345
|
recorder_mode = False
|
330
346
|
if recorder_ext:
|
@@ -535,15 +551,30 @@ def Driver(
|
|
535
551
|
host_resolver_rules = (
|
536
552
|
arg_join.split("--host_resolver_rules=")[1].split('"')[0]
|
537
553
|
)
|
538
|
-
if driver_version is None:
|
539
|
-
|
540
|
-
|
541
|
-
|
542
|
-
|
543
|
-
|
544
|
-
|
545
|
-
|
546
|
-
|
554
|
+
if driver_version is None and "--driver-version" in arg_join:
|
555
|
+
count = 0
|
556
|
+
for arg in sys_argv:
|
557
|
+
if arg.startswith("--driver-version="):
|
558
|
+
driver_version = arg.split("--driver-version=")[1]
|
559
|
+
break
|
560
|
+
elif arg == "--driver-version" and len(sys_argv) > count + 1:
|
561
|
+
driver_version = sys_argv[count + 1]
|
562
|
+
if driver_version.startswith("-"):
|
563
|
+
driver_version = None
|
564
|
+
break
|
565
|
+
count += 1
|
566
|
+
if driver_version is None and "--driver_version" in arg_join:
|
567
|
+
count = 0
|
568
|
+
for arg in sys_argv:
|
569
|
+
if arg.startswith("--driver_version="):
|
570
|
+
driver_version = arg.split("--driver_version=")[1]
|
571
|
+
break
|
572
|
+
elif arg == "--driver_version" and len(sys_argv) > count + 1:
|
573
|
+
driver_version = sys_argv[count + 1]
|
574
|
+
if driver_version.startswith("-"):
|
575
|
+
driver_version = None
|
576
|
+
break
|
577
|
+
count += 1
|
547
578
|
browser_name = browser
|
548
579
|
|
549
580
|
# Launch a web browser
|
@@ -337,28 +337,44 @@ def SB(
|
|
337
337
|
proxy_string = proxy_string[1:-1]
|
338
338
|
c_a = chromium_arg
|
339
339
|
if c_a is None and "--chromium-arg" in arg_join:
|
340
|
-
|
341
|
-
|
342
|
-
|
343
|
-
|
344
|
-
|
345
|
-
|
346
|
-
c_a =
|
347
|
-
|
348
|
-
|
340
|
+
count = 0
|
341
|
+
for arg in sys_argv:
|
342
|
+
if arg.startswith("--chromium-arg="):
|
343
|
+
c_a = arg.split("--chromium-arg=")[1]
|
344
|
+
break
|
345
|
+
elif arg == "--chromium-arg" and len(sys_argv) > count + 1:
|
346
|
+
c_a = sys_argv[count + 1]
|
347
|
+
if c_a.startswith("-"):
|
348
|
+
c_a = None
|
349
|
+
break
|
350
|
+
count += 1
|
349
351
|
chromium_arg = c_a
|
350
352
|
d_f = disable_features
|
351
353
|
if d_f is None and "--disable-features" in arg_join:
|
352
|
-
|
353
|
-
|
354
|
-
|
355
|
-
|
356
|
-
|
357
|
-
|
358
|
-
d_f =
|
359
|
-
|
360
|
-
|
354
|
+
count = 0
|
355
|
+
for arg in sys_argv:
|
356
|
+
if arg.startswith("--disable-features="):
|
357
|
+
d_f = arg.split("--disable-features=")[1]
|
358
|
+
break
|
359
|
+
elif arg == "--disable-features" and len(sys_argv) > count + 1:
|
360
|
+
d_f = sys_argv[count + 1]
|
361
|
+
if d_f.startswith("-"):
|
362
|
+
d_f = None
|
363
|
+
break
|
364
|
+
count += 1
|
361
365
|
disable_features = d_f
|
366
|
+
if agent is None and "--agent" in arg_join:
|
367
|
+
count = 0
|
368
|
+
for arg in sys_argv:
|
369
|
+
if arg.startswith("--agent="):
|
370
|
+
agent = arg.split("--agent=")[1]
|
371
|
+
break
|
372
|
+
elif arg == "--agent" and len(sys_argv) > count + 1:
|
373
|
+
agent = sys_argv[count + 1]
|
374
|
+
if agent.startswith("-"):
|
375
|
+
agent = None
|
376
|
+
break
|
377
|
+
count += 1
|
362
378
|
user_agent = agent
|
363
379
|
recorder_mode = False
|
364
380
|
if recorder_ext:
|
@@ -679,15 +695,30 @@ def SB(
|
|
679
695
|
host_resolver_rules = (
|
680
696
|
arg_join.split("--host_resolver_rules=")[1].split('"')[0]
|
681
697
|
)
|
682
|
-
if driver_version is None:
|
683
|
-
|
684
|
-
|
685
|
-
|
686
|
-
|
687
|
-
|
688
|
-
|
689
|
-
|
690
|
-
|
698
|
+
if driver_version is None and "--driver-version" in arg_join:
|
699
|
+
count = 0
|
700
|
+
for arg in sys_argv:
|
701
|
+
if arg.startswith("--driver-version="):
|
702
|
+
driver_version = arg.split("--driver-version=")[1]
|
703
|
+
break
|
704
|
+
elif arg == "--driver-version" and len(sys_argv) > count + 1:
|
705
|
+
driver_version = sys_argv[count + 1]
|
706
|
+
if driver_version.startswith("-"):
|
707
|
+
driver_version = None
|
708
|
+
break
|
709
|
+
count += 1
|
710
|
+
if driver_version is None and "--driver_version" in arg_join:
|
711
|
+
count = 0
|
712
|
+
for arg in sys_argv:
|
713
|
+
if arg.startswith("--driver_version="):
|
714
|
+
driver_version = arg.split("--driver_version=")[1]
|
715
|
+
break
|
716
|
+
elif arg == "--driver_version" and len(sys_argv) > count + 1:
|
717
|
+
driver_version = sys_argv[count + 1]
|
718
|
+
if driver_version.startswith("-"):
|
719
|
+
driver_version = None
|
720
|
+
break
|
721
|
+
count += 1
|
691
722
|
if highlights is not None:
|
692
723
|
try:
|
693
724
|
highlights = int(highlights)
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: seleniumbase
|
3
|
-
Version: 4.29.
|
3
|
+
Version: 4.29.9
|
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
|
@@ -86,7 +86,7 @@ Requires-Dist: sbvirtualdisplay ==1.3.0
|
|
86
86
|
Requires-Dist: behave ==1.2.6
|
87
87
|
Requires-Dist: beautifulsoup4 ==4.12.3
|
88
88
|
Requires-Dist: tabcompleter ==1.3.3
|
89
|
-
Requires-Dist: pdbp ==1.5.
|
89
|
+
Requires-Dist: pdbp ==1.5.4
|
90
90
|
Requires-Dist: colorama ==0.4.6
|
91
91
|
Requires-Dist: pyotp ==2.9.0
|
92
92
|
Requires-Dist: mdurl ==0.1.2
|
@@ -121,7 +121,7 @@ Requires-Dist: filelock >=3.15.4 ; python_version >= "3.8"
|
|
121
121
|
Requires-Dist: platformdirs >=4.2.2 ; python_version >= "3.8"
|
122
122
|
Requires-Dist: typing-extensions >=4.12.2 ; python_version >= "3.8"
|
123
123
|
Requires-Dist: pyyaml >=6.0.2 ; python_version >= "3.8"
|
124
|
-
Requires-Dist: trio ==0.26.
|
124
|
+
Requires-Dist: trio ==0.26.2 ; python_version >= "3.8"
|
125
125
|
Requires-Dist: websocket-client ==1.8.0 ; python_version >= "3.8"
|
126
126
|
Requires-Dist: selenium ==4.23.1 ; python_version >= "3.8"
|
127
127
|
Requires-Dist: execnet ==2.1.1 ; python_version >= "3.8"
|
@@ -242,7 +242,7 @@ Requires-Dist: pyasn1 ==0.6.0 ; (python_version >= "3.8") and extra == 'selenium
|
|
242
242
|
|
243
243
|
📚 Learn from [**over 200 examples** in the **SeleniumBase/examples/** folder](https://github.com/seleniumbase/SeleniumBase/tree/master/examples).
|
244
244
|
|
245
|
-
👤 Note that <span translate="no">SeleniumBase</span> <a translate="no" href="https://github.com/seleniumbase/SeleniumBase/blob/master/help_docs/uc_mode.md">UC Mode
|
245
|
+
👤 Note that <span translate="no">SeleniumBase</span> <a translate="no" href="https://github.com/seleniumbase/SeleniumBase/blob/master/help_docs/uc_mode.md"><b>UC Mode</b> (Stealth Mode) has its own ReadMe</a>.
|
246
246
|
|
247
247
|
ℹ️ Scripts can be called via <code translate="no"><b>python</b></code>, although some <a href="https://github.com/seleniumbase/SeleniumBase/blob/master/help_docs/syntax_formats.md">Syntax Formats</a> expect <a href="https://docs.pytest.org/en/latest/how-to/usage.html" translate="no"><b>pytest</b></a> (a Python unit-testing framework included with SeleniumBase that can discover & collect tests automatically).
|
248
248
|
|
@@ -5,7 +5,7 @@ sbase/steps.py,sha256=bKT_u5bJkKzYWEuAXi9NVVRYYxQRCM1_YJUrNFFRVPY,42865
|
|
5
5
|
seleniumbase/ReadMe.md,sha256=4nEdto4d0Ch0Zneg0yAC-RBBdqRqPUP0SCo-ze_XDPM,3612
|
6
6
|
seleniumbase/__init__.py,sha256=dgq30q6wGO2fJOVYemxC5hLxzv-of-MRn5P1YarBq5k,2263
|
7
7
|
seleniumbase/__main__.py,sha256=dn1p6dgCchmcH1zzTzzQvFwwdQQqnTGH6ULV9m4hv24,654
|
8
|
-
seleniumbase/__version__.py,sha256=
|
8
|
+
seleniumbase/__version__.py,sha256=K7oWQM2Se1ae6tk-zeGpATgCw9BOdGfbwqaicuyDRvo,46
|
9
9
|
seleniumbase/behave/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
10
10
|
seleniumbase/behave/behave_helper.py,sha256=elkl8P9eLulRAioLstE9baYNM9N_PHBmAOcajX-pH_Y,24198
|
11
11
|
seleniumbase/behave/behave_sb.py,sha256=q4uYZixZBf7VYWnQnEk2weTcyMy1X1faR3vyYvUzDiA,56406
|
@@ -40,7 +40,7 @@ seleniumbase/console_scripts/sb_print.py,sha256=yo641b_OdSE0GUauOyxk-QrNeIjYzbRY
|
|
40
40
|
seleniumbase/console_scripts/sb_recorder.py,sha256=UQQhnAR18dbcC7ToDvj6TM2PIG5qBrNaekaM6kSK_E8,10970
|
41
41
|
seleniumbase/core/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
42
42
|
seleniumbase/core/application_manager.py,sha256=e_0sjtI8cjY5BNyZj1QBR0j6_oCScxGmSXYEpcYwuZE,576
|
43
|
-
seleniumbase/core/browser_launcher.py,sha256=
|
43
|
+
seleniumbase/core/browser_launcher.py,sha256=_Oms_vw4OHofMFyXxKDDX_PD1sdabHGdIrebGHUoC9s,197939
|
44
44
|
seleniumbase/core/capabilities_parser.py,sha256=meIS2uHapTCq2ldfNAToC7r0cKmZDRXuYNKExM1GHDY,6038
|
45
45
|
seleniumbase/core/colored_traceback.py,sha256=DrRWfg7XEnKcgY59Xj7Jdk09H-XqHYBSUpB-DiZt6iY,2020
|
46
46
|
seleniumbase/core/create_db_tables.sql,sha256=VWPtrdiW_HQ6yETHjqTu-VIrTwvd8I8o1NfBeaVSHpU,972
|
@@ -92,11 +92,11 @@ seleniumbase/plugins/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hS
|
|
92
92
|
seleniumbase/plugins/base_plugin.py,sha256=o_-IraDNgsMEJQv1HsmS5ZcTvYOXiQ4NpxryG2m9c2A,14970
|
93
93
|
seleniumbase/plugins/basic_test_info.py,sha256=8ov6n417gPbqqvrlT4zrch7l2XcRt-GF2ny6rR9AMWk,2108
|
94
94
|
seleniumbase/plugins/db_reporting_plugin.py,sha256=En09qUCoojrk9-vbcnsoHdSELoGmag2GDIyu3jTiJas,7331
|
95
|
-
seleniumbase/plugins/driver_manager.py,sha256=
|
95
|
+
seleniumbase/plugins/driver_manager.py,sha256=dBwltG0AMj3uMFq6s40MWKaGyaLyh-f38rqoWVBcRQE,24491
|
96
96
|
seleniumbase/plugins/page_source.py,sha256=loTnXxOj4kxEukuTZEiGyvKBhY3KDVDMnNlHHheTBDE,1889
|
97
97
|
seleniumbase/plugins/pytest_plugin.py,sha256=ObITovmkwpAcwXNxF6qTHRzERPA7_ntAmbxPRTefj1M,94999
|
98
98
|
seleniumbase/plugins/s3_logging_plugin.py,sha256=WDfertQgGOW_SRJpFMaekYD6vBVW9VO62POtXXy2HCM,2319
|
99
|
-
seleniumbase/plugins/sb_manager.py,sha256=
|
99
|
+
seleniumbase/plugins/sb_manager.py,sha256=j-yOiwyeDYbXrgRUiW92zMx0qHYqisF1bUCglG0MXvA,42414
|
100
100
|
seleniumbase/plugins/screen_shots.py,sha256=1hrXw-hzuZ1BR6Yh7AyWX2ABnvnP73-RCbwdz958gj4,1127
|
101
101
|
seleniumbase/plugins/selenium_plugin.py,sha256=FESjalW8mdboLB_B59j8EeY6IvmEIbp_BY9cPTxJsM4,55122
|
102
102
|
seleniumbase/resources/ReadMe.md,sha256=uminnO5_Uv-UZDKcc9a9s9kxisaYUps-H98Fp5PJcaU,2124
|
@@ -137,9 +137,9 @@ seleniumbase/utilities/selenium_grid/start-grid-hub.sh,sha256=KADv0RUHONLL2_I443
|
|
137
137
|
seleniumbase/utilities/selenium_ide/ReadMe.md,sha256=hznGeuMpkIimqMiZBW-4goIy2ltW4l8X9kb0YSPUQfE,4483
|
138
138
|
seleniumbase/utilities/selenium_ide/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
139
139
|
seleniumbase/utilities/selenium_ide/convert_ide.py,sha256=pZFnqEJQEKZPyNFjkLD29s2HPQgCrWW9XJWpCPhWOoM,31691
|
140
|
-
seleniumbase-4.29.
|
141
|
-
seleniumbase-4.29.
|
142
|
-
seleniumbase-4.29.
|
143
|
-
seleniumbase-4.29.
|
144
|
-
seleniumbase-4.29.
|
145
|
-
seleniumbase-4.29.
|
140
|
+
seleniumbase-4.29.9.dist-info/LICENSE,sha256=odSYtWibXBnQ1gBg6CnDZ82n8kLF_if5-2nbqnEyD8k,1085
|
141
|
+
seleniumbase-4.29.9.dist-info/METADATA,sha256=_HNAOVVpaQQplvd0Heva3qVY5QO-u9llC9LNB6oVF9E,85783
|
142
|
+
seleniumbase-4.29.9.dist-info/WHEEL,sha256=R0nc6qTxuoLk7ShA2_Y-UWkN8ZdfDBG2B6Eqpz2WXbs,91
|
143
|
+
seleniumbase-4.29.9.dist-info/entry_points.txt,sha256=CNrh2EKNaHYEhO6pP1RJyVLB99LkDDYX7TnUK8xfjqk,623
|
144
|
+
seleniumbase-4.29.9.dist-info/top_level.txt,sha256=4N97aBOQ8ETCnDnokBsWb07lJfTaq3C1ZzYRxvLMxqU,19
|
145
|
+
seleniumbase-4.29.9.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|