seleniumbase 4.35.2__py3-none-any.whl → 4.35.4__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.35.2"
2
+ __version__ = "4.35.4"
@@ -682,6 +682,15 @@ def uc_open_with_cdp_mode(driver, url=None):
682
682
  cdp.gui_hover_element = CDPM.gui_hover_element
683
683
  cdp.gui_hover_and_click = CDPM.gui_hover_and_click
684
684
  cdp.internalize_links = CDPM.internalize_links
685
+ cdp.open_new_window = CDPM.open_new_window
686
+ cdp.switch_to_window = CDPM.switch_to_window
687
+ cdp.switch_to_newest_window = CDPM.switch_to_newest_window
688
+ cdp.open_new_tab = CDPM.open_new_tab
689
+ cdp.switch_to_tab = CDPM.switch_to_tab
690
+ cdp.switch_to_newest_tab = CDPM.switch_to_newest_tab
691
+ cdp.close_active_tab = CDPM.close_active_tab
692
+ cdp.get_active_tab = CDPM.get_active_tab
693
+ cdp.get_tabs = CDPM.get_tabs
685
694
  cdp.get_window = CDPM.get_window
686
695
  cdp.get_element_attributes = CDPM.get_element_attributes
687
696
  cdp.get_element_attribute = CDPM.get_element_attribute
@@ -2033,6 +2042,7 @@ def _set_chrome_options(
2033
2042
  prefs["download.default_directory"] = downloads_path
2034
2043
  prefs["download.directory_upgrade"] = True
2035
2044
  prefs["download.prompt_for_download"] = False
2045
+ prefs["download_bubble.partial_view_enabled"] = False
2036
2046
  prefs["credentials_enable_service"] = False
2037
2047
  prefs["local_discovery.notifications_enabled"] = False
2038
2048
  prefs["safebrowsing.enabled"] = False # Prevent PW "data breach" pop-ups
@@ -106,7 +106,7 @@ class CDPMethods():
106
106
  driver = self.driver
107
107
  if hasattr(driver, "cdp_base"):
108
108
  driver = driver.cdp_base
109
- self.page = self.loop.run_until_complete(driver.get(url))
109
+ self.loop.run_until_complete(self.page.get(url))
110
110
  url_protocol = url.split(":")[0]
111
111
  safe_url = True
112
112
  if url_protocol not in ["about", "data", "chrome"]:
@@ -1014,10 +1014,61 @@ class CDPMethods():
1014
1014
  self.set_window_rect(x, y, width, height)
1015
1015
  self.__add_light_pause()
1016
1016
 
1017
+ def open_new_window(self, url=None, switch_to=True):
1018
+ return self.open_new_tab(url=url, switch_to=switch_to)
1019
+
1020
+ def switch_to_window(self, window):
1021
+ self.switch_to_tab(window)
1022
+
1023
+ def switch_to_newest_window(self):
1024
+ self.switch_to_tab(-1)
1025
+
1026
+ def open_new_tab(self, url=None, switch_to=True):
1027
+ if not isinstance(url, str):
1028
+ url = "about:blank"
1029
+ self.loop.run_until_complete(self.page.get(url, new_tab=True))
1030
+ if switch_to:
1031
+ self.switch_to_newest_tab()
1032
+
1033
+ def switch_to_tab(self, tab):
1034
+ driver = self.driver
1035
+ if hasattr(driver, "cdp_base"):
1036
+ driver = driver.cdp_base
1037
+ if isinstance(tab, int):
1038
+ self.page = driver.tabs[tab]
1039
+ elif isinstance(tab, cdp_util.Tab):
1040
+ self.page = tab
1041
+ else:
1042
+ raise Exception("`tab` must be an int or a Tab type!")
1043
+ self.bring_active_window_to_front()
1044
+
1045
+ def switch_to_newest_tab(self):
1046
+ self.switch_to_tab(-1)
1047
+
1048
+ def close_active_tab(self):
1049
+ """Close the active tab.
1050
+ The active tab is the one currenly controlled by CDP.
1051
+ The active tab MIGHT NOT be the currently visible tab!
1052
+ (If a page opens a new tab, the new tab WON'T be active)
1053
+ To switch the active tab, call: sb.switch_to_tab(tab)"""
1054
+ return self.loop.run_until_complete(self.page.close())
1055
+
1056
+ def get_active_tab(self):
1057
+ """Return the active tab.
1058
+ The active tab is the one currenly controlled by CDP.
1059
+ The active tab MIGHT NOT be the currently visible tab!
1060
+ (If a page opens a new tab, the new tab WON'T be active)
1061
+ To switch the active tab, call: sb.switch_to_tab(tab)"""
1062
+ return self.page
1063
+
1064
+ def get_tabs(self):
1065
+ driver = self.driver
1066
+ if hasattr(driver, "cdp_base"):
1067
+ driver = driver.cdp_base
1068
+ return driver.tabs
1069
+
1017
1070
  def get_window(self):
1018
- return self.loop.run_until_complete(
1019
- self.page.get_window()
1020
- )
1071
+ return self.loop.run_until_complete(self.page.get_window())
1021
1072
 
1022
1073
  def get_text(self, selector):
1023
1074
  return self.find_element(selector).text_all
@@ -1211,14 +1262,10 @@ class CDPMethods():
1211
1262
  return ((e_x + e_width / 2.0) + 0.5, (e_y + e_height / 2.0) + 0.5)
1212
1263
 
1213
1264
  def get_document(self):
1214
- return self.loop.run_until_complete(
1215
- self.page.get_document()
1216
- )
1265
+ return self.loop.run_until_complete(self.page.get_document())
1217
1266
 
1218
1267
  def get_flattened_document(self):
1219
- return self.loop.run_until_complete(
1220
- self.page.get_flattened_document()
1221
- )
1268
+ return self.loop.run_until_complete(self.page.get_flattened_document())
1222
1269
 
1223
1270
  def get_element_attributes(self, selector):
1224
1271
  selector = self.__convert_to_css_if_xpath(selector)
@@ -3896,6 +3896,9 @@ class BaseCase(unittest.TestCase):
3896
3896
 
3897
3897
  def open_new_window(self, switch_to=True):
3898
3898
  """Opens a new browser tab/window and switches to it by default."""
3899
+ if self.__is_cdp_swap_needed():
3900
+ self.cdp.open_new_tab(switch_to=switch_to)
3901
+ return
3899
3902
  self.wait_for_ready_state_complete()
3900
3903
  if switch_to:
3901
3904
  try:
@@ -3918,6 +3921,9 @@ class BaseCase(unittest.TestCase):
3918
3921
  timeout = settings.SMALL_TIMEOUT
3919
3922
  if self.timeout_multiplier and timeout == settings.SMALL_TIMEOUT:
3920
3923
  timeout = self.__get_new_timeout(timeout)
3924
+ if self.__is_cdp_swap_needed() and not isinstance(window, str):
3925
+ self.cdp.switch_to_tab(window)
3926
+ return
3921
3927
  page_actions.switch_to_window(self.driver, window, timeout)
3922
3928
 
3923
3929
  def switch_to_default_window(self):
@@ -10336,7 +10342,7 @@ class BaseCase(unittest.TestCase):
10336
10342
  timeout = self.__get_new_timeout(timeout)
10337
10343
  selector, by = self.__recalculate_selector(selector, by)
10338
10344
  if self.__is_cdp_swap_needed():
10339
- return self.cdp.wait_for_text(
10345
+ return self.cdp.wait_for_text_not_visible(
10340
10346
  text, selector=selector, timeout=timeout
10341
10347
  )
10342
10348
  return page_actions.wait_for_text_not_visible(
@@ -477,6 +477,7 @@ class Chrome(selenium.webdriver.chrome.webdriver.WebDriver):
477
477
  with suppress(Exception):
478
478
  if self.service.is_connectable():
479
479
  self.stop_client()
480
+ time.sleep(0.003)
480
481
  self.service.stop()
481
482
  self._is_connected = False
482
483
 
@@ -660,7 +660,7 @@ class CookieJar:
660
660
  break
661
661
  else:
662
662
  connection = self._browser.connection
663
- cookies = await connection.send(cdp.storage.get_cookies())
663
+ cookies = await connection.send(cdp.network.get_cookies())
664
664
  if requests_cookie_format:
665
665
  import requests.cookies
666
666
 
@@ -690,8 +690,7 @@ class CookieJar:
690
690
  break
691
691
  else:
692
692
  connection = self._browser.connection
693
- cookies = await connection.send(cdp.storage.get_cookies())
694
- await connection.send(cdp.storage.set_cookies(cookies))
693
+ await connection.send(cdp.network.set_cookies(cookies))
695
694
 
696
695
  async def save(self, file: PathLike = ".session.dat", pattern: str = ".*"):
697
696
  """
@@ -718,7 +717,7 @@ class CookieJar:
718
717
  break
719
718
  else:
720
719
  connection = self._browser.connection
721
- cookies = await connection.send(cdp.storage.get_cookies())
720
+ cookies = await connection.send(cdp.network.get_cookies())
722
721
  # if not connection:
723
722
  # return
724
723
  # if not connection.websocket:
@@ -776,7 +775,7 @@ class CookieJar:
776
775
  cookie.value,
777
776
  )
778
777
  break
779
- await connection.send(cdp.storage.set_cookies(included_cookies))
778
+ await connection.send(cdp.network.set_cookies(included_cookies))
780
779
 
781
780
  async def clear(self):
782
781
  """
@@ -791,7 +790,7 @@ class CookieJar:
791
790
  break
792
791
  else:
793
792
  connection = self._browser.connection
794
- cookies = await connection.send(cdp.storage.get_cookies())
793
+ cookies = await connection.send(cdp.network.get_cookies())
795
794
  if cookies:
796
795
  await connection.send(cdp.storage.clear_cookies())
797
796
 
@@ -382,7 +382,7 @@ class Connection(metaclass=CantTouchThis):
382
382
  async def send(
383
383
  self,
384
384
  cdp_obj: Generator[dict[str, Any], dict[str, Any], Any],
385
- _is_update=False,
385
+ _is_update=True,
386
386
  ) -> Any:
387
387
  """
388
388
  Send a protocol command.
@@ -852,6 +852,7 @@ class Tab(Connection):
852
852
  await self.send(
853
853
  cdp.target.close_target(target_id=self.target.target_id)
854
854
  )
855
+ await asyncio.sleep(0.1)
855
856
 
856
857
  async def get_window(self) -> Tuple[
857
858
  cdp.browser.WindowID, cdp.browser.Bounds
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: seleniumbase
3
- Version: 4.35.2
3
+ Version: 4.35.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
@@ -110,7 +110,7 @@ Requires-Dist: sortedcontainers==2.4.0
110
110
  Requires-Dist: execnet==2.1.1
111
111
  Requires-Dist: iniconfig==2.0.0
112
112
  Requires-Dist: pluggy==1.5.0
113
- Requires-Dist: pytest==8.3.4
113
+ Requires-Dist: pytest==8.3.5
114
114
  Requires-Dist: pytest-html==4.0.2
115
115
  Requires-Dist: pytest-metadata==3.1.1
116
116
  Requires-Dist: pytest-ordering==0.6
@@ -151,7 +151,7 @@ Requires-Dist: mss==9.0.2; extra == "mss"
151
151
  Provides-Extra: pdfminer
152
152
  Requires-Dist: pdfminer.six==20240706; extra == "pdfminer"
153
153
  Requires-Dist: cryptography==39.0.2; python_version < "3.9" and extra == "pdfminer"
154
- Requires-Dist: cryptography==44.0.1; python_version >= "3.9" and extra == "pdfminer"
154
+ Requires-Dist: cryptography==44.0.2; python_version >= "3.9" and extra == "pdfminer"
155
155
  Requires-Dist: cffi==1.17.1; extra == "pdfminer"
156
156
  Requires-Dist: pycparser==2.22; extra == "pdfminer"
157
157
  Provides-Extra: pillow
@@ -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=JFEY9P5QJqsa1M6ghzLMH2eIPQyh85iglCaQwg8Y8z4,2498
5
5
  seleniumbase/__main__.py,sha256=dn1p6dgCchmcH1zzTzzQvFwwdQQqnTGH6ULV9m4hv24,654
6
- seleniumbase/__version__.py,sha256=P9cTVt3PVLsDI9atFloLWRPlzTGkd73niFjhDtv1sQc,46
6
+ seleniumbase/__version__.py,sha256=IksyggWqGI_zELnLnvW4IXN2rTpkeGXFJtRWudNaUNM,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
@@ -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=YJsddTlS6fFo08olKsKKnUdZQxFm5mpXt8rKC7ZunKE,236579
39
+ seleniumbase/core/browser_launcher.py,sha256=I3CdpcZGoyxe0QS6m2qt-vMgLejN66q6WRS3cPQCaV8,237064
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
@@ -50,7 +50,7 @@ seleniumbase/core/proxy_helper.py,sha256=4VkpMwavz0fx8wcOqJ_jyBT0HIXwcxmAcpd1gjJ
50
50
  seleniumbase/core/recorder_helper.py,sha256=fNGjbapXmEsht54x1o6Igk198QdnPxDDnjUOzQxNhNQ,25055
51
51
  seleniumbase/core/report_helper.py,sha256=AIl6Qava2yW1uSzbLpJBlPlYDz0KE-rVhogh8hsGWBo,12201
52
52
  seleniumbase/core/s3_manager.py,sha256=bkeI8I4y19ebWuQG1oEZV5qJbotC6eN8vin31OCNWJk,3521
53
- seleniumbase/core/sb_cdp.py,sha256=kPC9tS-cGA-Vy9-DW-yrV33q787Ml_ISET9iQX9jmnw,82049
53
+ seleniumbase/core/sb_cdp.py,sha256=xKhJowUxlDK_2jjM5DGGj2UMa-cBU28xihrScgtz7ZE,83866
54
54
  seleniumbase/core/sb_driver.py,sha256=yvTDRblBzG6bDX7XcLiAA6QcBelSJj_HHL_04lcfeeE,13760
55
55
  seleniumbase/core/session_helper.py,sha256=s9zD3PVZEWVzG2h81cCUskbNWLfdjC_LwwQjKptHCak,558
56
56
  seleniumbase/core/settings_parser.py,sha256=gqVohHVlE_5L5Cqe2L24uYrRzvoK-saX8E_Df7_-_3I,7609
@@ -65,7 +65,7 @@ seleniumbase/extensions/disable_csp.zip,sha256=5RvomXnm2PdivUVcxTV6jfvD8WhTEsQYH
65
65
  seleniumbase/extensions/recorder.zip,sha256=OOyzF-Ize2cSRu1CqhzSAq5vusI9hqLLd2OIApUHesI,11918
66
66
  seleniumbase/extensions/sbase_ext.zip,sha256=3s1N8zrVaMz8RQEOIoBzC3KDjtmHwVZRvVsX25Odr_s,8175
67
67
  seleniumbase/fixtures/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
68
- seleniumbase/fixtures/base_case.py,sha256=ncejN3q7m6_GHQTASuy4LHkeeCn829RRZN4lRB0-MkA,722341
68
+ seleniumbase/fixtures/base_case.py,sha256=YTaO_EDz3ACMFV7aK1EFtt2a5mHzvquu7BPwL_vGH3c,722601
69
69
  seleniumbase/fixtures/constants.py,sha256=WMrItuNyKq3XVJ64NluLIRc4gJCxDw8K8qXED0b9S2w,13752
70
70
  seleniumbase/fixtures/css_to_xpath.py,sha256=9ouDB1xl4MJ2os6JOgTIAyHKOQfuxtxvXC3O5hSnEKA,1954
71
71
  seleniumbase/fixtures/errors.py,sha256=KyxuEVx_e3MPhVrJfNIa_3ltMpbCFxfy_jxK8RFNTns,555
@@ -106,7 +106,7 @@ seleniumbase/translate/portuguese.py,sha256=x3P4qxp56UiI41GoaL7JbUvFRYsgXU1EKjTg
106
106
  seleniumbase/translate/russian.py,sha256=TyN9n0b4GRWDEYnHRGw1rfNAscdDmP3F3Y3aySM3C7s,27978
107
107
  seleniumbase/translate/spanish.py,sha256=hh3xgW1Pq122SHYVvJAxFaXhFrjniOVncVbJbfWqOUM,25528
108
108
  seleniumbase/translate/translator.py,sha256=wPhZH6e5NhmebYL1kP2eGxUcVy1gfTb6XCH8ATEPpxE,49238
109
- seleniumbase/undetected/__init__.py,sha256=s3Si9sNgZEg0dy7JSPdQYbG4a0i3_T3uISl4CmzbM4M,24338
109
+ seleniumbase/undetected/__init__.py,sha256=6_pKZZQFqudtng4IleiwVXvLnUibFgFOrIISq2IGbc0,24377
110
110
  seleniumbase/undetected/cdp.py,sha256=RLpwZnhUvmK9tgXcZIBBQedwk2q7Jj_EXZkmzI8WUqk,4023
111
111
  seleniumbase/undetected/dprocess.py,sha256=83EV8ZHJWHG1TSUv9JNClBhdgiBXlkCc6mJ--HsoP3k,1681
112
112
  seleniumbase/undetected/options.py,sha256=BoNuwhrG7oOvuLvTwkvsWCF36pMkS1tHCG-XpP4_EkI,3001
@@ -115,12 +115,12 @@ seleniumbase/undetected/reactor.py,sha256=NropaXcO54pzmDq6quR27qPJxab6636H7LRAaq
115
115
  seleniumbase/undetected/webelement.py,sha256=OOpUYbEiOG52KsYYyuDW9tYLdA2SMnukvwQHUdPVn9E,1389
116
116
  seleniumbase/undetected/cdp_driver/__init__.py,sha256=Ga9alwuaZZy4_XOShc0HjgFnNqpPdrcbjAicz5gE7a4,215
117
117
  seleniumbase/undetected/cdp_driver/_contradict.py,sha256=lP4b0h5quAy573ETn_TBbYV889cL1AuPLVInpJ0ZkiU,3183
118
- seleniumbase/undetected/cdp_driver/browser.py,sha256=KOmHmmZkfKUoc7Qwkl5zxazuHhwW8foMYoZkRyTmgGk,30525
118
+ seleniumbase/undetected/cdp_driver/browser.py,sha256=c-9EWqpD2ZtpDg8edMuw9hYa6GuyOP1qxorNjtsWe1U,30457
119
119
  seleniumbase/undetected/cdp_driver/cdp_util.py,sha256=6-0-Dq_dFAOXQ5_a58i9y93zRqWUrjWoy6Pf_xBoveE,21648
120
120
  seleniumbase/undetected/cdp_driver/config.py,sha256=t8KV1Vqa5SQRBq3-gjkHHmj9h85AplAM01asO3AWufs,12507
121
- seleniumbase/undetected/cdp_driver/connection.py,sha256=sOTUGjbUqKA2hPvDcRCdqw1VQjVGJs7mbgVvzS7ldtE,23360
121
+ seleniumbase/undetected/cdp_driver/connection.py,sha256=_ounWzQ1m3_t-zJVgOAU2RINiKphfJkw2Qbu-zIoHC0,23359
122
122
  seleniumbase/undetected/cdp_driver/element.py,sha256=FIC6v7OmumLCT-_vIc3H4oju_oBbaLpWJUJIKm2c_q4,40467
123
- seleniumbase/undetected/cdp_driver/tab.py,sha256=rcASsWY_mC7L0wXpFSWM5mtojzA47qG9BWEMXe7ZGF8,50906
123
+ seleniumbase/undetected/cdp_driver/tab.py,sha256=4fRB9OtiMx23r79a2aJKlEhCkP3E_JVGD_7EvJ3srxo,50944
124
124
  seleniumbase/utilities/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
125
125
  seleniumbase/utilities/selenium_grid/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
126
126
  seleniumbase/utilities/selenium_grid/download_selenium_server.py,sha256=ZdoInIbhtmdKCIPxxtJHhd2sqotqcNXWMYbwWrkh9O0,1727
@@ -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.35.2.dist-info/LICENSE,sha256=BRblZsX7HyPUjQmYTiyWr_e9tzWvmR3R4SFclM2R3W0,1085
139
- seleniumbase-4.35.2.dist-info/METADATA,sha256=QVAff0P_RE1LsQ199DwJ28P1Qjy0ZIUBJU7yzObSmUs,86525
140
- seleniumbase-4.35.2.dist-info/WHEEL,sha256=jB7zZ3N9hIM9adW7qlTAyycLYW9npaWKLRzaoVcLKcM,91
141
- seleniumbase-4.35.2.dist-info/entry_points.txt,sha256=CNrh2EKNaHYEhO6pP1RJyVLB99LkDDYX7TnUK8xfjqk,623
142
- seleniumbase-4.35.2.dist-info/top_level.txt,sha256=4N97aBOQ8ETCnDnokBsWb07lJfTaq3C1ZzYRxvLMxqU,19
143
- seleniumbase-4.35.2.dist-info/RECORD,,
138
+ seleniumbase-4.35.4.dist-info/LICENSE,sha256=BRblZsX7HyPUjQmYTiyWr_e9tzWvmR3R4SFclM2R3W0,1085
139
+ seleniumbase-4.35.4.dist-info/METADATA,sha256=QHqs05gZ1ZPiyfYeZIOBgEEY1CdCmdnktBRVsdSPWl0,86525
140
+ seleniumbase-4.35.4.dist-info/WHEEL,sha256=jB7zZ3N9hIM9adW7qlTAyycLYW9npaWKLRzaoVcLKcM,91
141
+ seleniumbase-4.35.4.dist-info/entry_points.txt,sha256=CNrh2EKNaHYEhO6pP1RJyVLB99LkDDYX7TnUK8xfjqk,623
142
+ seleniumbase-4.35.4.dist-info/top_level.txt,sha256=4N97aBOQ8ETCnDnokBsWb07lJfTaq3C1ZzYRxvLMxqU,19
143
+ seleniumbase-4.35.4.dist-info/RECORD,,