seleniumbase 4.32.7__py3-none-any.whl → 4.32.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.32.7"
2
+ __version__ = "4.32.9"
@@ -620,11 +620,15 @@ def uc_open_with_cdp_mode(driver, url=None):
620
620
  cdp.reset_window_size = CDPM.reset_window_size
621
621
  cdp.set_locale = CDPM.set_locale
622
622
  cdp.set_attributes = CDPM.set_attributes
623
+ cdp.gui_press_key = CDPM.gui_press_key
624
+ cdp.gui_press_keys = CDPM.gui_press_keys
625
+ cdp.gui_write = CDPM.gui_write
623
626
  cdp.gui_click_x_y = CDPM.gui_click_x_y
624
627
  cdp.gui_click_element = CDPM.gui_click_element
625
628
  cdp.internalize_links = CDPM.internalize_links
626
629
  cdp.get_window = CDPM.get_window
627
630
  cdp.get_element_attributes = CDPM.get_element_attributes
631
+ cdp.get_element_attribute = CDPM.get_element_attribute
628
632
  cdp.get_element_html = CDPM.get_element_html
629
633
  cdp.get_element_rect = CDPM.get_element_rect
630
634
  cdp.get_element_size = CDPM.get_element_size
@@ -651,6 +655,11 @@ def uc_open_with_cdp_mode(driver, url=None):
651
655
  cdp.focus = CDPM.focus
652
656
  cdp.highlight_overlay = CDPM.highlight_overlay
653
657
  cdp.get_window_position = CDPM.get_window_position
658
+ cdp.check_if_unchecked = CDPM.check_if_unchecked
659
+ cdp.uncheck_if_checked = CDPM.uncheck_if_checked
660
+ cdp.select_if_unselected = CDPM.select_if_unselected
661
+ cdp.unselect_if_selected = CDPM.unselect_if_selected
662
+ cdp.is_checked = CDPM.is_checked
654
663
  cdp.is_element_present = CDPM.is_element_present
655
664
  cdp.is_element_visible = CDPM.is_element_visible
656
665
  cdp.assert_element_present = CDPM.assert_element_present
@@ -715,6 +724,9 @@ def uc_click(
715
724
  timeout=settings.SMALL_TIMEOUT,
716
725
  reconnect_time=None,
717
726
  ):
727
+ if __is_cdp_swap_needed(driver):
728
+ driver.cdp.click(selector)
729
+ return
718
730
  with suppress(Exception):
719
731
  rct = float(by) # Add shortcut: driver.uc_click(selector, RCT)
720
732
  if not reconnect_time:
@@ -1,6 +1,5 @@
1
1
  """Add CDP methods to extend the driver"""
2
2
  import fasteners
3
- import math
4
3
  import os
5
4
  import re
6
5
  import sys
@@ -771,10 +770,12 @@ class CDPMethods():
771
770
  window_rect = self.get_window_rect()
772
771
  w_bottom_y = window_rect["y"] + window_rect["height"]
773
772
  viewport_height = window_rect["innerHeight"]
774
- x = math.ceil(window_rect["x"] + element_rect["x"])
775
- y = math.ceil(w_bottom_y - viewport_height + element_rect["y"])
773
+ x = window_rect["x"] + element_rect["x"]
774
+ y = w_bottom_y - viewport_height + element_rect["y"]
776
775
  y_scroll_offset = window_rect["pageYOffset"]
777
- y = int(y - y_scroll_offset)
776
+ y = y - y_scroll_offset
777
+ x = x + window_rect["scrollX"]
778
+ y = y + window_rect["scrollY"]
778
779
  return ({"height": e_height, "width": e_width, "x": x, "y": y})
779
780
 
780
781
  def get_gui_element_center(self, selector):
@@ -804,6 +805,10 @@ class CDPMethods():
804
805
  )
805
806
  )
806
807
 
808
+ def get_element_attribute(self, selector, attribute):
809
+ attributes = self.get_element_attributes(selector)
810
+ return attributes[attribute]
811
+
807
812
  def get_element_html(self, selector):
808
813
  selector = self.__convert_to_css_if_xpath(selector)
809
814
  return self.loop.run_until_complete(
@@ -937,6 +942,45 @@ class CDPMethods():
937
942
  )
938
943
  return pyautogui_copy
939
944
 
945
+ def gui_press_key(self, key):
946
+ self.__install_pyautogui_if_missing()
947
+ import pyautogui
948
+ pyautogui = self.__get_configured_pyautogui(pyautogui)
949
+ gui_lock = fasteners.InterProcessLock(
950
+ constants.MultiBrowser.PYAUTOGUILOCK
951
+ )
952
+ with gui_lock:
953
+ pyautogui.press(key)
954
+ time.sleep(0.0375)
955
+ self.__slow_mode_pause_if_set()
956
+ self.loop.run_until_complete(self.page.wait())
957
+
958
+ def gui_press_keys(self, keys):
959
+ self.__install_pyautogui_if_missing()
960
+ import pyautogui
961
+ pyautogui = self.__get_configured_pyautogui(pyautogui)
962
+ gui_lock = fasteners.InterProcessLock(
963
+ constants.MultiBrowser.PYAUTOGUILOCK
964
+ )
965
+ with gui_lock:
966
+ for key in keys:
967
+ pyautogui.press(key)
968
+ time.sleep(0.0375)
969
+ self.__slow_mode_pause_if_set()
970
+ self.loop.run_until_complete(self.page.wait())
971
+
972
+ def gui_write(self, text):
973
+ self.__install_pyautogui_if_missing()
974
+ import pyautogui
975
+ pyautogui = self.__get_configured_pyautogui(pyautogui)
976
+ gui_lock = fasteners.InterProcessLock(
977
+ constants.MultiBrowser.PYAUTOGUILOCK
978
+ )
979
+ with gui_lock:
980
+ pyautogui.write(text)
981
+ self.__slow_mode_pause_if_set()
982
+ self.loop.run_until_complete(self.page.wait())
983
+
940
984
  def __gui_click_x_y(self, x, y, timeframe=0.25, uc_lock=False):
941
985
  self.__install_pyautogui_if_missing()
942
986
  import pyautogui
@@ -1033,6 +1077,28 @@ class CDPMethods():
1033
1077
  This prevents those links from opening in a new tab."""
1034
1078
  self.set_attributes('[target="_blank"]', "target", "_self")
1035
1079
 
1080
+ def is_checked(self, selector):
1081
+ """Return True if checkbox (or radio button) is checked."""
1082
+ self.find_element(selector, timeout=settings.SMALL_TIMEOUT)
1083
+ return self.get_element_attribute(selector, "checked")
1084
+
1085
+ def is_selected(self, selector):
1086
+ return self.is_checked(selector)
1087
+
1088
+ def check_if_unchecked(self, selector):
1089
+ if not self.is_checked(selector):
1090
+ self.click(selector)
1091
+
1092
+ def select_if_unselected(self, selector):
1093
+ self.check_if_unchecked(selector)
1094
+
1095
+ def uncheck_if_checked(self, selector):
1096
+ if self.is_checked(selector):
1097
+ self.click(selector)
1098
+
1099
+ def unselect_if_selected(self, selector):
1100
+ self.uncheck_if_checked(selector)
1101
+
1036
1102
  def is_element_present(self, selector):
1037
1103
  try:
1038
1104
  self.select(selector, timeout=0.01)
@@ -1884,6 +1884,8 @@ class BaseCase(unittest.TestCase):
1884
1884
  if self.timeout_multiplier and timeout == settings.LARGE_TIMEOUT:
1885
1885
  timeout = self.__get_new_timeout(timeout)
1886
1886
  selector, by = self.__recalculate_selector(selector, by)
1887
+ if self.__is_cdp_swap_needed():
1888
+ return self.cdp.get_element_attribute(selector)
1887
1889
  self.wait_for_ready_state_complete()
1888
1890
  time.sleep(0.01)
1889
1891
  if self.__is_shadow_selector(selector):
@@ -2460,16 +2462,14 @@ class BaseCase(unittest.TestCase):
2460
2462
  if self.timeout_multiplier and timeout == settings.SMALL_TIMEOUT:
2461
2463
  timeout = self.__get_new_timeout(timeout)
2462
2464
  selector, by = self.__recalculate_selector(selector, by)
2465
+ if self.__is_cdp_swap_needed():
2466
+ return self.cdp.is_checked(selector)
2463
2467
  kind = self.get_attribute(selector, "type", by=by, timeout=timeout)
2464
2468
  if kind != "checkbox" and kind != "radio":
2465
2469
  raise Exception("Expecting a checkbox or a radio button element!")
2466
- is_checked = self.get_attribute(
2470
+ return self.get_attribute(
2467
2471
  selector, "checked", by=by, timeout=timeout, hard_fail=False
2468
2472
  )
2469
- if is_checked:
2470
- return True
2471
- else: # (NoneType)
2472
- return False
2473
2473
 
2474
2474
  def is_selected(self, selector, by="css selector", timeout=None):
2475
2475
  """Same as is_checked()"""
@@ -2479,6 +2479,9 @@ class BaseCase(unittest.TestCase):
2479
2479
  """If a checkbox or radio button is not checked, will check it."""
2480
2480
  self.__check_scope()
2481
2481
  selector, by = self.__recalculate_selector(selector, by)
2482
+ if self.__is_cdp_swap_needed():
2483
+ self.cdp.check_if_unchecked(selector)
2484
+ return
2482
2485
  if not self.is_checked(selector, by=by):
2483
2486
  if self.is_element_visible(selector, by=by):
2484
2487
  self.click(selector, by=by)
@@ -2515,6 +2518,9 @@ class BaseCase(unittest.TestCase):
2515
2518
  """If a checkbox is checked, will uncheck it."""
2516
2519
  self.__check_scope()
2517
2520
  selector, by = self.__recalculate_selector(selector, by)
2521
+ if self.__is_cdp_swap_needed():
2522
+ self.cdp.uncheck_if_checked(selector)
2523
+ return
2518
2524
  if self.is_checked(selector, by=by):
2519
2525
  if self.is_element_visible(selector, by=by):
2520
2526
  self.click(selector, by=by)
@@ -6087,6 +6093,9 @@ class BaseCase(unittest.TestCase):
6087
6093
  timeout = settings.SMALL_TIMEOUT
6088
6094
  if self.timeout_multiplier and timeout == settings.SMALL_TIMEOUT:
6089
6095
  timeout = self.__get_new_timeout(timeout)
6096
+ if self.__is_cdp_swap_needed():
6097
+ self.cdp.scroll_into_view(selector)
6098
+ return
6090
6099
  if self.demo_mode or self.slow_mode:
6091
6100
  self.slow_scroll_to(selector, by=by, timeout=timeout)
6092
6101
  return
@@ -550,11 +550,7 @@ def Driver(
550
550
  or uc_sub
551
551
  ):
552
552
  undetectable = True
553
- if (
554
- (undetectable or undetected or uc)
555
- and (uc_subprocess is None)
556
- and (uc_sub is None)
557
- ):
553
+ if undetectable or undetected or uc:
558
554
  uc_subprocess = True # Use UC as a subprocess by default.
559
555
  elif (
560
556
  "--undetectable" in sys_argv
@@ -608,11 +608,7 @@ def SB(
608
608
  or uc_sub
609
609
  ):
610
610
  undetectable = True
611
- if (
612
- (undetectable or undetected or uc)
613
- and (uc_subprocess is None)
614
- and (uc_sub is None)
615
- ):
611
+ if undetectable or undetected or uc:
616
612
  uc_subprocess = True # Use UC as a subprocess by default.
617
613
  elif (
618
614
  "--undetectable" in sys_argv
@@ -18,6 +18,7 @@ from typing import (
18
18
  TypeVar,
19
19
  )
20
20
  import websockets
21
+ from websockets.protocol import State
21
22
  from . import cdp_util as util
22
23
  import mycdp as cdp
23
24
  import mycdp.network
@@ -261,7 +262,7 @@ class Connection(metaclass=CantTouchThis):
261
262
  """
262
263
  Opens the websocket connection. Shouldn't be called manually by users.
263
264
  """
264
- if not self.websocket or self.websocket.closed:
265
+ if not self.websocket or self.websocket.state is State.CLOSED:
265
266
  try:
266
267
  self.websocket = await websockets.connect(
267
268
  self.websocket_url,
@@ -288,7 +289,7 @@ class Connection(metaclass=CantTouchThis):
288
289
  """
289
290
  Closes the websocket connection. Shouldn't be called manually by users.
290
291
  """
291
- if self.websocket and not self.websocket.closed:
292
+ if self.websocket and self.websocket.state is not State.CLOSED:
292
293
  if self.listener and self.listener.running:
293
294
  self.listener.cancel()
294
295
  self.enabled_domains.clear()
@@ -393,7 +394,7 @@ class Connection(metaclass=CantTouchThis):
393
394
  when multiple calls to connection.send() are made.
394
395
  """
395
396
  await self.aopen()
396
- if not self.websocket or self.closed:
397
+ if not self.websocket or self.websocket.state is State.CLOSED:
397
398
  return
398
399
  if self._owner:
399
400
  browser = self._owner
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: seleniumbase
3
- Version: 4.32.7
3
+ Version: 4.32.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
@@ -60,12 +60,11 @@ Requires-Python: >=3.8
60
60
  Description-Content-Type: text/markdown
61
61
  License-File: LICENSE
62
62
  Requires-Dist: pip>=24.2
63
- Requires-Dist: packaging>=24.1
64
- Requires-Dist: wheel>=0.44.0
63
+ Requires-Dist: packaging>=24.2
64
+ Requires-Dist: wheel>=0.45.0
65
65
  Requires-Dist: attrs>=24.2.0
66
66
  Requires-Dist: certifi>=2024.8.30
67
67
  Requires-Dist: exceptiongroup>=1.2.2
68
- Requires-Dist: websockets>=13.1
69
68
  Requires-Dist: filelock>=3.16.1
70
69
  Requires-Dist: fasteners>=0.19
71
70
  Requires-Dist: mycdp>=1.0.1
@@ -80,7 +79,7 @@ Requires-Dist: colorama>=0.4.6
80
79
  Requires-Dist: pyyaml>=6.0.2
81
80
  Requires-Dist: pygments>=2.18.0
82
81
  Requires-Dist: tabcompleter>=1.4.0
83
- Requires-Dist: pdbp>=1.6.0
82
+ Requires-Dist: pdbp>=1.6.1
84
83
  Requires-Dist: idna==3.10
85
84
  Requires-Dist: chardet==5.2.0
86
85
  Requires-Dist: charset-normalizer==3.4.0
@@ -117,8 +116,10 @@ Requires-Dist: python-xlib==0.33; platform_system == "Linux"
117
116
  Requires-Dist: pyreadline3>=3.5.3; platform_system == "Windows"
118
117
  Requires-Dist: setuptools~=70.2; python_version < "3.10"
119
118
  Requires-Dist: urllib3<2,>=1.26.20; python_version < "3.10"
119
+ Requires-Dist: websockets~=13.1; python_version < "3.9"
120
120
  Requires-Dist: setuptools>=73.0.1; python_version >= "3.10"
121
121
  Requires-Dist: urllib3<2.3.0,>=1.26.20; python_version >= "3.10"
122
+ Requires-Dist: websockets>=14.0; python_version >= "3.9"
122
123
  Provides-Extra: allure
123
124
  Requires-Dist: allure-pytest>=2.13.5; extra == "allure"
124
125
  Requires-Dist: allure-python-commons>=2.13.5; extra == "allure"
@@ -3,7 +3,7 @@ sbase/__main__.py,sha256=G0bVB1-DM4PGwQ1KyOupaWCs4ePbChZNNWuX2htim5U,647
3
3
  sbase/steps.py,sha256=bKT_u5bJkKzYWEuAXi9NVVRYYxQRCM1_YJUrNFFRVPY,42865
4
4
  seleniumbase/__init__.py,sha256=OtJh8nGKL4xtZpw8KPqmn7Q6R-86t4cWUDyVF5MbMTo,2398
5
5
  seleniumbase/__main__.py,sha256=dn1p6dgCchmcH1zzTzzQvFwwdQQqnTGH6ULV9m4hv24,654
6
- seleniumbase/__version__.py,sha256=OKPw6_xuqPFIHXuQ5lc-BDAB67jpMQ_dqtgnJNg8uL8,46
6
+ seleniumbase/__version__.py,sha256=am_TdSeFJWZgGKFn3vmM8ge4vQM8qlkXsvTrl75KN2M,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=-hza7Nx2U41mSObYiPMi48v3JlPh3sJO3yzP0kqZ1Gk,59174
@@ -36,7 +36,7 @@ seleniumbase/console_scripts/sb_print.py,sha256=tNy-bMDgwHJO3bZxMpmo9weSE8uhbH0C
36
36
  seleniumbase/console_scripts/sb_recorder.py,sha256=1oAA4wFzVboNhIFDwJLD3jgy9RuoavywKQG7R67bNZE,10908
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=90omfhV8Q1-ki6Vend1j99C00LKFTKoNTYI4CwooOVk,216914
39
+ seleniumbase/core/browser_launcher.py,sha256=HG8_3PsRDx1acbA0ZW9DO_cYjkPy3OfDOvHaZnFUwJM,217440
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=cXhu8ErK9Vjdm82RMaQj7hEq_yUWizSp6LyiD50
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=ZuK55SpMu199j0ZI1tJCip8ruM7YR2FH0m0hsATxbxY,43260
53
+ seleniumbase/core/sb_cdp.py,sha256=4dp20r_KSK8n8nhqzqPMTk48nXt16wzGKSW2v63j_p0,45560
54
54
  seleniumbase/core/sb_driver.py,sha256=-k4vHwMnuiBIkdVInTtJA-IDLrgQfyMhNxSHMIsjepw,11623
55
55
  seleniumbase/core/session_helper.py,sha256=s9zD3PVZEWVzG2h81cCUskbNWLfdjC_LwwQjKptHCak,558
56
56
  seleniumbase/core/settings_parser.py,sha256=KokVXpCiGZhJ-D4Bo-hizPz5r-iefzWoiTANu9zNaq4,7504
@@ -65,7 +65,7 @@ seleniumbase/extensions/disable_csp.zip,sha256=YMifIIgEBiLrEFrS1sfW4Exh4br1V4oK1
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=ChVH_uQqjXwTHI9Q7V17Wixdc75KIEFz-E70Eu871Es,711157
68
+ seleniumbase/fixtures/base_case.py,sha256=DfOl1L5VCOaKduVqvnkBeUc4qHs3n6SEdl65CLXaEFs,711565
69
69
  seleniumbase/fixtures/constants.py,sha256=XYYMpB-ZDI756LvfhSK9RxdqQ_qO9fJVXgBqBYlQNkk,13609
70
70
  seleniumbase/fixtures/css_to_xpath.py,sha256=9ouDB1xl4MJ2os6JOgTIAyHKOQfuxtxvXC3O5hSnEKA,1954
71
71
  seleniumbase/fixtures/errors.py,sha256=KyxuEVx_e3MPhVrJfNIa_3ltMpbCFxfy_jxK8RFNTns,555
@@ -86,11 +86,11 @@ 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=0W87pKdZpoBxq1xnWthgqZAdjlEhwMR4LgntrzsTd9M,34575
89
+ seleniumbase/plugins/driver_manager.py,sha256=s20s0pJYaNrG0WNwyIC04oUMRVFjtm6V_nS1-EvFm7g,34492
90
90
  seleniumbase/plugins/page_source.py,sha256=loTnXxOj4kxEukuTZEiGyvKBhY3KDVDMnNlHHheTBDE,1889
91
91
  seleniumbase/plugins/pytest_plugin.py,sha256=Up96HY6q3hcPo4LQoEcKqt1hm2OmY5GZz_nMXTqDSXQ,97185
92
92
  seleniumbase/plugins/s3_logging_plugin.py,sha256=WDfertQgGOW_SRJpFMaekYD6vBVW9VO62POtXXy2HCM,2319
93
- seleniumbase/plugins/sb_manager.py,sha256=xOij0pxUyDRsIa8Bm1s5Zy4zikElNKDk6TYx_dqQ2Bw,54333
93
+ seleniumbase/plugins/sb_manager.py,sha256=_Uefqpopw6M5NZq7WRi5sXyPMSyaCtBA7oSXObhlvM8,54250
94
94
  seleniumbase/plugins/screen_shots.py,sha256=1hrXw-hzuZ1BR6Yh7AyWX2ABnvnP73-RCbwdz958gj4,1127
95
95
  seleniumbase/plugins/selenium_plugin.py,sha256=GhGW2ATy2kM7UH7NrZ2je402nN2LMlVHpM-yxlU3I9E,59069
96
96
  seleniumbase/resources/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -118,7 +118,7 @@ seleniumbase/undetected/cdp_driver/_contradict.py,sha256=6thDYeoEGiC7Q3tXLgoD_Ah
118
118
  seleniumbase/undetected/cdp_driver/browser.py,sha256=mGmpWuR206yYJoBPTNslru8CbEpQuvvIHdjBylSkoKg,30020
119
119
  seleniumbase/undetected/cdp_driver/cdp_util.py,sha256=Erfb62fzpvGr0QIIJOiqvGkyoyBakHOIwgbrQ7dqUgM,16625
120
120
  seleniumbase/undetected/cdp_driver/config.py,sha256=Rjvde7V-XJ0ihZdTmOmHEVWSuDWm3SprQ3njg8SN3Go,12087
121
- seleniumbase/undetected/cdp_driver/connection.py,sha256=HnwXlD4rawGzCyiGR3Shr4iaK7KTncvSqs3CXxCZM_8,23266
121
+ seleniumbase/undetected/cdp_driver/connection.py,sha256=sOTUGjbUqKA2hPvDcRCdqw1VQjVGJs7mbgVvzS7ldtE,23360
122
122
  seleniumbase/undetected/cdp_driver/element.py,sha256=9oD9GxguctunrlHV3lWXlZgb9cNEjD5x03Oy84OqyVA,39631
123
123
  seleniumbase/undetected/cdp_driver/tab.py,sha256=wUNF8GHrbhaUqg57A9ZTYHKhNPjZIcOHwrz3pj1SAg0,50526
124
124
  seleniumbase/utilities/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -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.32.7.dist-info/LICENSE,sha256=odSYtWibXBnQ1gBg6CnDZ82n8kLF_if5-2nbqnEyD8k,1085
139
- seleniumbase-4.32.7.dist-info/METADATA,sha256=HIdMgaVZC17OSFsh2a811ES3MZEIgfbjlXgnhyjbDZg,86380
140
- seleniumbase-4.32.7.dist-info/WHEEL,sha256=P9jw-gEje8ByB7_hXoICnHtVCrEwMQh-630tKvQWehc,91
141
- seleniumbase-4.32.7.dist-info/entry_points.txt,sha256=CNrh2EKNaHYEhO6pP1RJyVLB99LkDDYX7TnUK8xfjqk,623
142
- seleniumbase-4.32.7.dist-info/top_level.txt,sha256=4N97aBOQ8ETCnDnokBsWb07lJfTaq3C1ZzYRxvLMxqU,19
143
- seleniumbase-4.32.7.dist-info/RECORD,,
138
+ seleniumbase-4.32.9.dist-info/LICENSE,sha256=odSYtWibXBnQ1gBg6CnDZ82n8kLF_if5-2nbqnEyD8k,1085
139
+ seleniumbase-4.32.9.dist-info/METADATA,sha256=nd96od-BctakXK-zGmDPiKl4Ymfsz91frtzdx2s_rtg,86461
140
+ seleniumbase-4.32.9.dist-info/WHEEL,sha256=P9jw-gEje8ByB7_hXoICnHtVCrEwMQh-630tKvQWehc,91
141
+ seleniumbase-4.32.9.dist-info/entry_points.txt,sha256=CNrh2EKNaHYEhO6pP1RJyVLB99LkDDYX7TnUK8xfjqk,623
142
+ seleniumbase-4.32.9.dist-info/top_level.txt,sha256=4N97aBOQ8ETCnDnokBsWb07lJfTaq3C1ZzYRxvLMxqU,19
143
+ seleniumbase-4.32.9.dist-info/RECORD,,