seleniumbase 4.29.7__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.
@@ -1,2 +1,2 @@
1
1
  # seleniumbase package
2
- __version__ = "4.29.7"
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
- _uc_gui_click_x_y(driver, x, y, timeframe=timeframe, uc_lock=True)
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":
@@ -900,8 +939,8 @@ def _uc_gui_click_captcha(
900
939
  y = i_y + element.rect["y"] + int(element.rect["height"] / 2)
901
940
  y += 1
902
941
  else:
903
- x = i_x + 34
904
- y = i_y + 34
942
+ x = (i_x + 34) * width_ratio
943
+ y = (i_y + 34) * width_ratio
905
944
  driver.switch_to.default_content()
906
945
  except Exception:
907
946
  try:
@@ -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
- if "--chromium-arg=" in arg_join:
307
- c_a = arg_join.split("--chromium-arg=")[1].split(" ")[0]
308
- elif "--chromium-arg " in arg_join:
309
- c_a = arg_join.split("--chromium-arg ")[1].split(" ")[0]
310
- if c_a:
311
- if c_a.startswith('"') and c_a.endswith('"'):
312
- c_a = c_a[1:-1]
313
- elif c_a.startswith("'") and c_a.endswith("'"):
314
- c_a = c_a[1:-1]
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
- if "--disable-features=" in arg_join:
319
- d_f = arg_join.split("--disable-features=")[1].split(" ")[0]
320
- elif "--disable-features " in arg_join:
321
- d_f = arg_join.split("--disable-features ")[1].split(" ")[0]
322
- if d_f:
323
- if d_f.startswith('"') and d_f.endswith('"'):
324
- d_f = d_f[1:-1]
325
- elif c_a.startswith("'") and d_f.endswith("'"):
326
- d_f = d_f[1:-1]
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
- if "--driver-version=" in arg_join:
540
- driver_version = (
541
- arg_join.split("--driver-version=")[1].split(" ")[0]
542
- )
543
- elif "--driver_version=" in arg_join:
544
- driver_version = (
545
- arg_join.split("--driver_version=")[1].split(" ")[0]
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
- if "--chromium-arg=" in arg_join:
341
- c_a = arg_join.split("--chromium-arg=")[1].split(" ")[0]
342
- elif "--chromium-arg " in arg_join:
343
- c_a = arg_join.split("--chromium-arg ")[1].split(" ")[0]
344
- if c_a:
345
- if c_a.startswith('"') and c_a.endswith('"'):
346
- c_a = c_a[1:-1]
347
- elif c_a.startswith("'") and c_a.endswith("'"):
348
- c_a = c_a[1:-1]
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
- if "--disable-features=" in arg_join:
353
- d_f = arg_join.split("--disable-features=")[1].split(" ")[0]
354
- elif "--disable-features " in arg_join:
355
- d_f = arg_join.split("--disable-features ")[1].split(" ")[0]
356
- if d_f:
357
- if d_f.startswith('"') and d_f.endswith('"'):
358
- d_f = d_f[1:-1]
359
- elif c_a.startswith("'") and d_f.endswith("'"):
360
- d_f = d_f[1:-1]
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
- if "--driver-version=" in arg_join:
684
- driver_version = (
685
- arg_join.split("--driver-version=")[1].split(" ")[0]
686
- )
687
- elif "--driver_version=" in arg_join:
688
- driver_version = (
689
- arg_join.split("--driver_version=")[1].split(" ")[0]
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.7
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.3
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.1 ; python_version >= "3.8"
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 / Stealth Mode has its own ReadMe</a>.
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=xXhadZnhxEp5mYq4VqumeQzgQ1C26cplLEmPM9Dt4oc,46
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=qEoFpcJYPLbiEZg7wzUEMJonwJxkwDCDhspWQQJrRrQ,195446
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=x879oEkmHJnWQAaLCoppGya-YDh5_aoKVWXcBSer-do,23406
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=8vNps3MTcS9XFG5hLYfkIAUI8BpVS7qtww0KpJC1UL4,41329
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.7.dist-info/LICENSE,sha256=odSYtWibXBnQ1gBg6CnDZ82n8kLF_if5-2nbqnEyD8k,1085
141
- seleniumbase-4.29.7.dist-info/METADATA,sha256=vgxxfAPDMNrMD90fsEBq87Q6mpf402FcjMfbjzfGPgo,85776
142
- seleniumbase-4.29.7.dist-info/WHEEL,sha256=R0nc6qTxuoLk7ShA2_Y-UWkN8ZdfDBG2B6Eqpz2WXbs,91
143
- seleniumbase-4.29.7.dist-info/entry_points.txt,sha256=CNrh2EKNaHYEhO6pP1RJyVLB99LkDDYX7TnUK8xfjqk,623
144
- seleniumbase-4.29.7.dist-info/top_level.txt,sha256=4N97aBOQ8ETCnDnokBsWb07lJfTaq3C1ZzYRxvLMxqU,19
145
- seleniumbase-4.29.7.dist-info/RECORD,,
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,,