seleniumbase 4.29.5__py3-none-any.whl → 4.29.7__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.5"
2
+ __version__ = "4.29.7"
@@ -50,7 +50,7 @@ IS_WINDOWS = shared_utils.is_windows()
50
50
  DRIVER_DIR = os.path.dirname(os.path.realpath(drivers.__file__))
51
51
  LOCAL_PATH = "/usr/local/bin/" # On Mac and Linux systems
52
52
  DEFAULT_CHROMEDRIVER_VERSION = "114.0.5735.90" # (If can't find LATEST_STABLE)
53
- DEFAULT_GECKODRIVER_VERSION = "v0.34.0"
53
+ DEFAULT_GECKODRIVER_VERSION = "v0.35.0"
54
54
  DEFAULT_EDGEDRIVER_VERSION = "115.0.1901.183" # (If can't find LATEST_STABLE)
55
55
 
56
56
 
@@ -394,8 +394,8 @@ def uc_special_open_if_cf(
394
394
  )
395
395
  uc_metrics = {}
396
396
  if (
397
- isinstance(device_width, (int, float))
398
- and isinstance(device_height, (int, float))
397
+ isinstance(device_width, int)
398
+ and isinstance(device_height, int)
399
399
  and isinstance(device_pixel_ratio, (int, float))
400
400
  ):
401
401
  uc_metrics["width"] = device_width
@@ -781,6 +781,7 @@ def _uc_gui_click_captcha(
781
781
  )
782
782
  with gui_lock: # Prevent issues with multiple processes
783
783
  needs_switch = False
784
+ width_ratio = 1.0
784
785
  is_in_frame = js_utils.is_in_frame(driver)
785
786
  if is_in_frame and driver.is_element_present("#challenge-stage"):
786
787
  driver.switch_to.parent_frame()
@@ -791,6 +792,20 @@ def _uc_gui_click_captcha(
791
792
  page_actions.switch_to_window(
792
793
  driver, driver.current_window_handle, 2, uc_lock=False
793
794
  )
795
+ if IS_WINDOWS:
796
+ window_rect = driver.get_window_rect()
797
+ width = window_rect["width"]
798
+ height = window_rect["height"]
799
+ win_x = window_rect["x"]
800
+ win_y = window_rect["y"]
801
+ scr_width = pyautogui.size().width
802
+ driver.maximize_window()
803
+ win_width = driver.get_window_size()["width"]
804
+ width_ratio = round(float(scr_width) / float(win_width), 2) + 0.01
805
+ if width_ratio < 0.45 or width_ratio > 2.55:
806
+ width_ratio = 1.01
807
+ driver.minimize_window()
808
+ driver.set_window_rect(win_x, win_y, width, height)
794
809
  if ctype == "cf_t":
795
810
  if (
796
811
  driver.is_element_present(".cf-turnstile-wrapper iframe")
@@ -1015,6 +1030,18 @@ def _uc_gui_handle_captcha(
1015
1030
  page_actions.switch_to_window(
1016
1031
  driver, driver.current_window_handle, 2, uc_lock=False
1017
1032
  )
1033
+ if IS_WINDOWS and hasattr(pyautogui, "getActiveWindowTitle"):
1034
+ py_a_g_title = pyautogui.getActiveWindowTitle()
1035
+ window_title = driver.title
1036
+ if not py_a_g_title.startswith(window_title):
1037
+ window_rect = driver.get_window_rect()
1038
+ width = window_rect["width"]
1039
+ height = window_rect["height"]
1040
+ win_x = window_rect["x"]
1041
+ win_y = window_rect["y"]
1042
+ driver.minimize_window()
1043
+ driver.set_window_rect(win_x, win_y, width, height)
1044
+ time.sleep(0.33)
1018
1045
  if ctype == "cf_t":
1019
1046
  if (
1020
1047
  driver.is_element_present(".cf-turnstile-wrapper iframe")
@@ -1519,8 +1546,8 @@ def _set_chrome_options(
1519
1546
  emulator_settings = {}
1520
1547
  device_metrics = {}
1521
1548
  if (
1522
- isinstance(device_width, (int, float))
1523
- and isinstance(device_height, (int, float))
1549
+ isinstance(device_width, int)
1550
+ and isinstance(device_height, int)
1524
1551
  and isinstance(device_pixel_ratio, (int, float))
1525
1552
  ):
1526
1553
  device_metrics["width"] = device_width
@@ -1688,7 +1715,10 @@ def _set_chrome_options(
1688
1715
  chrome_options.add_argument("--ignore-certificate-errors")
1689
1716
  if not enable_ws:
1690
1717
  chrome_options.add_argument("--disable-web-security")
1691
- if IS_LINUX or not is_using_uc(undetectable, browser_name):
1718
+ if (
1719
+ IS_LINUX
1720
+ or (IS_MAC and not is_using_uc(undetectable, browser_name))
1721
+ ):
1692
1722
  chrome_options.add_argument("--no-sandbox")
1693
1723
  if remote_debug:
1694
1724
  # To access the Debugger, go to: chrome://inspect/#devices
@@ -3269,8 +3299,8 @@ def get_local_driver(
3269
3299
  emulator_settings = {}
3270
3300
  device_metrics = {}
3271
3301
  if (
3272
- isinstance(device_width, (int, float))
3273
- and isinstance(device_height, (int, float))
3302
+ isinstance(device_width, int)
3303
+ and isinstance(device_height, int)
3274
3304
  and isinstance(device_pixel_ratio, (int, float))
3275
3305
  ):
3276
3306
  device_metrics["width"] = device_width
@@ -3405,7 +3435,10 @@ def get_local_driver(
3405
3435
  edge_options.add_argument("--allow-running-insecure-content")
3406
3436
  if user_agent:
3407
3437
  edge_options.add_argument("--user-agent=%s" % user_agent)
3408
- if IS_LINUX or not is_using_uc(undetectable, browser_name):
3438
+ if (
3439
+ IS_LINUX
3440
+ or (IS_MAC and not is_using_uc(undetectable, browser_name))
3441
+ ):
3409
3442
  edge_options.add_argument("--no-sandbox")
3410
3443
  if remote_debug:
3411
3444
  # To access the Debugger, go to: edge://inspect/#devices
@@ -4496,8 +4529,8 @@ def get_local_driver(
4496
4529
  if mobile_emulator:
4497
4530
  uc_metrics = {}
4498
4531
  if (
4499
- isinstance(device_width, (int, float))
4500
- and isinstance(device_height, (int, float))
4532
+ isinstance(device_width, int)
4533
+ and isinstance(device_height, int)
4501
4534
  and isinstance(device_pixel_ratio, (int, float))
4502
4535
  ):
4503
4536
  uc_metrics["width"] = device_width
@@ -14818,8 +14818,8 @@ class BaseCase(unittest.TestCase):
14818
14818
  metrics_list = metrics_string.split(",")
14819
14819
  exception_string = (
14820
14820
  "Invalid input for Mobile Emulator device metrics!\n"
14821
- "Expecting a comma-separated string with three\n"
14822
- "integer values for Width, Height, and Pixel-Ratio.\n"
14821
+ "Expecting a comma-separated string with integer values\n"
14822
+ "for Width/Height, and an int or float for Pixel-Ratio.\n"
14823
14823
  'Example: --metrics="411,731,3" '
14824
14824
  )
14825
14825
  if len(metrics_list) != 3:
@@ -14827,7 +14827,7 @@ class BaseCase(unittest.TestCase):
14827
14827
  try:
14828
14828
  self.__device_width = int(metrics_list[0])
14829
14829
  self.__device_height = int(metrics_list[1])
14830
- self.__device_pixel_ratio = int(metrics_list[2])
14830
+ self.__device_pixel_ratio = float(metrics_list[2])
14831
14831
  self.mobile_emulator = True
14832
14832
  except Exception:
14833
14833
  raise Exception(exception_string)
@@ -114,6 +114,13 @@ def recalculate_selector(selector, by, xp_ok=True):
114
114
  by = By.XPATH
115
115
  if by == "":
116
116
  by = By.CSS_SELECTOR
117
+ if not is_valid_by(by):
118
+ valid_by_options = [
119
+ "css selector", "link text", "partial link text",
120
+ "name", "xpath", "id", "tag name", "class name",
121
+ ]
122
+ msg = "Choose a `by` from: %s." % valid_by_options
123
+ raise Exception('Invalid `by`: "%s"\n%s' % (by, msg))
117
124
  return (selector, by)
118
125
 
119
126
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: seleniumbase
3
- Version: 4.29.5
3
+ Version: 4.29.7
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
@@ -58,12 +58,11 @@ Classifier: Topic :: Utilities
58
58
  Requires-Python: >=3.7
59
59
  Description-Content-Type: text/markdown
60
60
  License-File: LICENSE
61
- Requires-Dist: attrs >=23.2.0
61
+ Requires-Dist: attrs >=24.2.0
62
62
  Requires-Dist: certifi >=2024.7.4
63
63
  Requires-Dist: exceptiongroup >=1.2.2
64
64
  Requires-Dist: parse >=1.20.2
65
65
  Requires-Dist: parse-type >=0.6.2
66
- Requires-Dist: pyyaml >=6.0.1
67
66
  Requires-Dist: six ==1.16.0
68
67
  Requires-Dist: idna ==3.7
69
68
  Requires-Dist: chardet ==5.2.0
@@ -101,6 +100,7 @@ Requires-Dist: setuptools >=68.0.0 ; python_version < "3.8"
101
100
  Requires-Dist: wheel >=0.42.0 ; python_version < "3.8"
102
101
  Requires-Dist: filelock >=3.12.2 ; python_version < "3.8"
103
102
  Requires-Dist: platformdirs >=4.0.0 ; python_version < "3.8"
103
+ Requires-Dist: pyyaml ==6.0.1 ; python_version < "3.8"
104
104
  Requires-Dist: trio ==0.22.2 ; python_version < "3.8"
105
105
  Requires-Dist: selenium ==4.11.2 ; python_version < "3.8"
106
106
  Requires-Dist: execnet ==2.0.2 ; python_version < "3.8"
@@ -116,11 +116,12 @@ Requires-Dist: setuptools >=70.2.0 ; python_version >= "3.10"
116
116
  Requires-Dist: urllib3 <2.3.0,>=1.26.19 ; python_version >= "3.10"
117
117
  Requires-Dist: pip >=24.1.2 ; python_version >= "3.8"
118
118
  Requires-Dist: packaging >=24.1 ; python_version >= "3.8"
119
- Requires-Dist: wheel >=0.43.0 ; python_version >= "3.8"
119
+ Requires-Dist: wheel >=0.44.0 ; python_version >= "3.8"
120
120
  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
- Requires-Dist: trio ==0.26.0 ; python_version >= "3.8"
123
+ Requires-Dist: pyyaml >=6.0.2 ; python_version >= "3.8"
124
+ Requires-Dist: trio ==0.26.1 ; python_version >= "3.8"
124
125
  Requires-Dist: websocket-client ==1.8.0 ; python_version >= "3.8"
125
126
  Requires-Dist: selenium ==4.23.1 ; python_version >= "3.8"
126
127
  Requires-Dist: execnet ==2.1.1 ; python_version >= "3.8"
@@ -140,16 +141,16 @@ Requires-Dist: allure-behave >=2.13.5 ; extra == 'allure'
140
141
  Provides-Extra: coverage
141
142
  Requires-Dist: coverage ==7.2.7 ; (python_version < "3.8") and extra == 'coverage'
142
143
  Requires-Dist: pytest-cov ==4.1.0 ; (python_version < "3.8") and extra == 'coverage'
143
- Requires-Dist: coverage >=7.6.0 ; (python_version >= "3.8") and extra == 'coverage'
144
+ Requires-Dist: coverage >=7.6.1 ; (python_version >= "3.8") and extra == 'coverage'
144
145
  Requires-Dist: pytest-cov >=5.0.0 ; (python_version >= "3.8") and extra == 'coverage'
145
146
  Provides-Extra: flake8
146
147
  Requires-Dist: mccabe ==0.7.0 ; extra == 'flake8'
147
148
  Requires-Dist: flake8 ==5.0.4 ; (python_version < "3.9") and extra == 'flake8'
148
149
  Requires-Dist: pyflakes ==2.5.0 ; (python_version < "3.9") and extra == 'flake8'
149
150
  Requires-Dist: pycodestyle ==2.9.1 ; (python_version < "3.9") and extra == 'flake8'
150
- Requires-Dist: flake8 ==7.1.0 ; (python_version >= "3.9") and extra == 'flake8'
151
+ Requires-Dist: flake8 ==7.1.1 ; (python_version >= "3.9") and extra == 'flake8'
151
152
  Requires-Dist: pyflakes ==3.2.0 ; (python_version >= "3.9") and extra == 'flake8'
152
- Requires-Dist: pycodestyle ==2.12.0 ; (python_version >= "3.9") and extra == 'flake8'
153
+ Requires-Dist: pycodestyle ==2.12.1 ; (python_version >= "3.9") and extra == 'flake8'
153
154
  Provides-Extra: ipdb
154
155
  Requires-Dist: ipdb ==0.13.13 ; extra == 'ipdb'
155
156
  Requires-Dist: ipython ==7.34.0 ; extra == 'ipdb'
@@ -159,7 +160,7 @@ Requires-Dist: pdfminer.six ==20221105 ; (python_version < "3.8") and extra == '
159
160
  Requires-Dist: cffi ==1.15.1 ; (python_version < "3.8") and extra == 'pdfminer'
160
161
  Requires-Dist: cryptography ==39.0.2 ; (python_version < "3.9") and extra == 'pdfminer'
161
162
  Requires-Dist: pdfminer.six ==20240706 ; (python_version >= "3.8") and extra == 'pdfminer'
162
- Requires-Dist: cffi ==1.16.0 ; (python_version >= "3.8") and extra == 'pdfminer'
163
+ Requires-Dist: cffi ==1.17.0 ; (python_version >= "3.8") and extra == 'pdfminer'
163
164
  Requires-Dist: cryptography ==43.0.0 ; (python_version >= "3.9") and extra == 'pdfminer'
164
165
  Provides-Extra: pillow
165
166
  Requires-Dist: Pillow ==9.5.0 ; (python_version < "3.8") and extra == 'pillow'
@@ -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=0HczSW_Tdr-OCCeHjw9Q5zGNL9yfcXXCfeTSGL5Xlzo,46
8
+ seleniumbase/__version__.py,sha256=xXhadZnhxEp5mYq4VqumeQzgQ1C26cplLEmPM9Dt4oc,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
@@ -29,7 +29,7 @@ seleniumbase/console_scripts/run.py,sha256=54XCmUvOtYT5UmajEZ208wflH5BLkEpHZSmvg
29
29
  seleniumbase/console_scripts/sb_behave_gui.py,sha256=8uFTnHU3lPsxAlPFbGe4tH4fVryEbQeVBydwJZw3e9c,15403
30
30
  seleniumbase/console_scripts/sb_caseplans.py,sha256=HrML5SU6E_3gC8Ae5byo5tnBidrs0sY3feJ8ug4cR4o,18415
31
31
  seleniumbase/console_scripts/sb_commander.py,sha256=FdRLcEe3xOnnbU1bZI4_1ZLu5eKdR4JuIh37j5M-J00,13585
32
- seleniumbase/console_scripts/sb_install.py,sha256=BCQqIUZrHpoRv7bXULzgrOnLCGEWmkZ45MrNIColOHI,45682
32
+ seleniumbase/console_scripts/sb_install.py,sha256=SZlJyN51SzQVR7WKquJtukOo3_h2mK00UMTkb0HEciQ,45682
33
33
  seleniumbase/console_scripts/sb_mkchart.py,sha256=QDDjA8N_Qy62Mgbe2fnSU8mhZbKTVyV9KJRKYz2Tf7Y,11232
34
34
  seleniumbase/console_scripts/sb_mkdir.py,sha256=-OJrGM3upjdhCQb00zxSapS7eVtE49K3bR6KzsGvBbM,30049
35
35
  seleniumbase/console_scripts/sb_mkfile.py,sha256=t2rxTZTz76RDeSbBdHLaHUDS6LT_p0ttm2H_uYdtBko,16480
@@ -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=RIQnvbJbpH9Ds6931tA16XxT3xXK8RDvFeQQDaYaC_A,194161
43
+ seleniumbase/core/browser_launcher.py,sha256=qEoFpcJYPLbiEZg7wzUEMJonwJxkwDCDhspWQQJrRrQ,195446
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
@@ -70,13 +70,13 @@ seleniumbase/extensions/disable_csp.zip,sha256=YMifIIgEBiLrEFrS1sfW4Exh4br1V4oK1
70
70
  seleniumbase/extensions/recorder.zip,sha256=OOyzF-Ize2cSRu1CqhzSAq5vusI9hqLLd2OIApUHesI,11918
71
71
  seleniumbase/extensions/sbase_ext.zip,sha256=3s1N8zrVaMz8RQEOIoBzC3KDjtmHwVZRvVsX25Odr_s,8175
72
72
  seleniumbase/fixtures/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
73
- seleniumbase/fixtures/base_case.py,sha256=mgtLtLFrO9L0916qgYWYj0Fr7i7srtauGJfiFi-Yq3g,701875
73
+ seleniumbase/fixtures/base_case.py,sha256=V1ashm9TqaDi7Lhv38HZz5mHQ8o4ag2CscfNXJuYmJo,701890
74
74
  seleniumbase/fixtures/constants.py,sha256=TapuGLdERtvZPGMblVXkNGybr8tj8FMtN3sbJ3ygyoc,13569
75
75
  seleniumbase/fixtures/css_to_xpath.py,sha256=9ouDB1xl4MJ2os6JOgTIAyHKOQfuxtxvXC3O5hSnEKA,1954
76
76
  seleniumbase/fixtures/errors.py,sha256=KyxuEVx_e3MPhVrJfNIa_3ltMpbCFxfy_jxK8RFNTns,555
77
77
  seleniumbase/fixtures/js_utils.py,sha256=y1FgWvrg7CjryqGnFhbmFIIVYMzQfYZhwppYae87UCo,51158
78
78
  seleniumbase/fixtures/page_actions.py,sha256=_LBmIqKBdRlgrKnl6aKUcHbns1GC18_YNvuRniRv1V8,63066
79
- seleniumbase/fixtures/page_utils.py,sha256=QmAvTlT0j0ESf1IgvyXwHJapJakFM7QqBLXnHXgaeJw,12596
79
+ seleniumbase/fixtures/page_utils.py,sha256=VJmhImXorrrXqokFvbDMGBWODLa9bHiaviHAO0r_0W0,12907
80
80
  seleniumbase/fixtures/shared_utils.py,sha256=Fc78v0OxfLPOPqeT8ExsdkTgXHlmpxvJeLbLyDnu1dI,5748
81
81
  seleniumbase/fixtures/unittest_helper.py,sha256=sfZ92rZeBAn_sF_yQ3I6_I7h3lyU5-cV_UMegBNoEm8,1294
82
82
  seleniumbase/fixtures/words.py,sha256=FOA4mAYvl3EPVpBTvgvK6YwCL8BdlRCmed685kEe7Vg,7827
@@ -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.5.dist-info/LICENSE,sha256=odSYtWibXBnQ1gBg6CnDZ82n8kLF_if5-2nbqnEyD8k,1085
141
- seleniumbase-4.29.5.dist-info/METADATA,sha256=9KDnfWkf548uf1KzVll5zqW7aAQF2ApHMAYV7kLG5qQ,85695
142
- seleniumbase-4.29.5.dist-info/WHEEL,sha256=R0nc6qTxuoLk7ShA2_Y-UWkN8ZdfDBG2B6Eqpz2WXbs,91
143
- seleniumbase-4.29.5.dist-info/entry_points.txt,sha256=CNrh2EKNaHYEhO6pP1RJyVLB99LkDDYX7TnUK8xfjqk,623
144
- seleniumbase-4.29.5.dist-info/top_level.txt,sha256=4N97aBOQ8ETCnDnokBsWb07lJfTaq3C1ZzYRxvLMxqU,19
145
- seleniumbase-4.29.5.dist-info/RECORD,,
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,,