seleniumbase 4.39.3__py3-none-any.whl → 4.39.6__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.39.3"
2
+ __version__ = "4.39.6"
@@ -532,6 +532,7 @@ def uc_open_with_reconnect(driver, url, reconnect_time=None):
532
532
 
533
533
 
534
534
  def uc_open_with_cdp_mode(driver, url=None, **kwargs):
535
+ """Activate CDP Mode with the URL and kwargs."""
535
536
  import asyncio
536
537
  from seleniumbase.undetected.cdp_driver import cdp_util
537
538
 
@@ -579,6 +580,7 @@ def uc_open_with_cdp_mode(driver, url=None, **kwargs):
579
580
  headless = False
580
581
  headed = None
581
582
  xvfb = None
583
+ xvfb_metrics = None
582
584
  binary_location = None
583
585
  if hasattr(sb_config, "headless"):
584
586
  headless = sb_config.headless
@@ -586,6 +588,8 @@ def uc_open_with_cdp_mode(driver, url=None, **kwargs):
586
588
  headed = sb_config.headed
587
589
  if hasattr(sb_config, "xvfb"):
588
590
  xvfb = sb_config.xvfb
591
+ if hasattr(sb_config, "xvfb_metrics"):
592
+ xvfb_metrics = sb_config.xvfb_metrics
589
593
  if hasattr(sb_config, "binary_location"):
590
594
  binary_location = sb_config.binary_location
591
595
 
@@ -598,6 +602,7 @@ def uc_open_with_cdp_mode(driver, url=None, **kwargs):
598
602
  headless=headless,
599
603
  headed=headed,
600
604
  xvfb=xvfb,
605
+ xvfb_metrics=xvfb_metrics,
601
606
  browser_executable_path=binary_location,
602
607
  )
603
608
  )
@@ -679,6 +684,9 @@ def uc_open_with_cdp_mode(driver, url=None, **kwargs):
679
684
  cdp.go_forward = CDPM.go_forward
680
685
  cdp.get_navigation_history = CDPM.get_navigation_history
681
686
  cdp.tile_windows = CDPM.tile_windows
687
+ cdp.grant_permissions = CDPM.grant_permissions
688
+ cdp.grant_all_permissions = CDPM.grant_all_permissions
689
+ cdp.reset_permissions = CDPM.reset_permissions
682
690
  cdp.get_all_cookies = CDPM.get_all_cookies
683
691
  cdp.set_all_cookies = CDPM.set_all_cookies
684
692
  cdp.save_cookies = CDPM.save_cookies
@@ -959,6 +967,11 @@ def __install_pyautogui_if_missing():
959
967
  backend="xvfb",
960
968
  use_xauth=True,
961
969
  )
970
+ if "--debug-display" in sys.argv:
971
+ print(
972
+ "Starting VDisplay from browser_launcher: (%s, %s)"
973
+ % (xvfb_width, xvfb_height)
974
+ )
962
975
  _xvfb_display.start()
963
976
  sb_config._virtual_display = _xvfb_display
964
977
  sb_config.headless_active = True
@@ -2144,6 +2157,7 @@ def _set_chrome_options(
2144
2157
  prefs["download.prompt_for_download"] = False
2145
2158
  prefs["download_bubble.partial_view_enabled"] = False
2146
2159
  prefs["credentials_enable_service"] = False
2160
+ prefs["autofill.credit_card_enabled"] = False
2147
2161
  prefs["local_discovery.notifications_enabled"] = False
2148
2162
  prefs["safebrowsing.enabled"] = False # Prevent PW "data breach" pop-ups
2149
2163
  prefs["safebrowsing.disable_download_protection"] = True
@@ -4002,6 +4016,7 @@ def get_local_driver(
4002
4016
  "download.directory_upgrade": True,
4003
4017
  "download.prompt_for_download": False,
4004
4018
  "credentials_enable_service": False,
4019
+ "autofill.credit_card_enabled": False,
4005
4020
  "local_discovery.notifications_enabled": False,
4006
4021
  "safebrowsing.disable_download_protection": True,
4007
4022
  "safebrowsing.enabled": False, # Prevent PW "data breach" pop-ups
@@ -645,6 +645,30 @@ class CDPMethods():
645
645
  driver.tile_windows(windows, max_columns)
646
646
  )
647
647
 
648
+ def grant_permissions(self, permissions, origin=None):
649
+ """Grant specific permissions to the current window.
650
+ Applies to all origins if no origin is specified."""
651
+ driver = self.driver
652
+ if hasattr(driver, "cdp_base"):
653
+ driver = driver.cdp_base
654
+ return self.loop.run_until_complete(
655
+ driver.grant_permissions(permissions, origin)
656
+ )
657
+
658
+ def grant_all_permissions(self):
659
+ """Grant all permissions to the current window for all origins."""
660
+ driver = self.driver
661
+ if hasattr(driver, "cdp_base"):
662
+ driver = driver.cdp_base
663
+ return self.loop.run_until_complete(driver.grant_all_permissions())
664
+
665
+ def reset_permissions(self):
666
+ """Reset permissions for all origins on the current window."""
667
+ driver = self.driver
668
+ if hasattr(driver, "cdp_base"):
669
+ driver = driver.cdp_base
670
+ return self.loop.run_until_complete(driver.reset_permissions())
671
+
648
672
  def get_all_cookies(self, *args, **kwargs):
649
673
  driver = self.driver
650
674
  if hasattr(driver, "cdp_base"):
@@ -681,9 +705,7 @@ class CDPMethods():
681
705
  driver = self.driver
682
706
  if hasattr(driver, "cdp_base"):
683
707
  driver = driver.cdp_base
684
- return self.loop.run_until_complete(
685
- driver.cookies.clear()
686
- )
708
+ return self.loop.run_until_complete(driver.cookies.clear())
687
709
 
688
710
  def sleep(self, seconds):
689
711
  time.sleep(seconds)
@@ -702,9 +724,7 @@ class CDPMethods():
702
724
 
703
725
  js_code = active_css_js.get_active_element_css
704
726
  js_code = js_code.replace("return getBestSelector", "getBestSelector")
705
- return self.loop.run_until_complete(
706
- self.page.evaluate(js_code)
707
- )
727
+ return self.loop.run_until_complete(self.page.evaluate(js_code))
708
728
 
709
729
  def click(self, selector, timeout=None):
710
730
  if not timeout:
@@ -978,17 +998,13 @@ class CDPMethods():
978
998
  "\n".join(exp_list[0:-1]) + "\n"
979
999
  + exp_list[-1].strip()[len("return "):]
980
1000
  ).strip()
981
- return self.loop.run_until_complete(
982
- self.page.evaluate(expression)
983
- )
1001
+ return self.loop.run_until_complete(self.page.evaluate(expression))
984
1002
 
985
1003
  def js_dumps(self, obj_name):
986
1004
  """Similar to evaluate(), but for dictionary results."""
987
1005
  if obj_name.startswith("return "):
988
1006
  obj_name = obj_name[len("return "):]
989
- return self.loop.run_until_complete(
990
- self.page.js_dumps(obj_name)
991
- )
1007
+ return self.loop.run_until_complete(self.page.js_dumps(obj_name))
992
1008
 
993
1009
  def maximize(self):
994
1010
  if self.get_window()[1].window_state.value == "maximized":
@@ -1309,6 +1325,8 @@ class CDPMethods():
1309
1325
  )
1310
1326
 
1311
1327
  def get_element_attribute(self, selector, attribute):
1328
+ """Find an element and return the value of an attribute.
1329
+ Raises an exception if there's no such element or attribute."""
1312
1330
  attributes = self.get_element_attributes(selector)
1313
1331
  with suppress(Exception):
1314
1332
  return attributes[attribute]
@@ -1319,10 +1337,16 @@ class CDPMethods():
1319
1337
  return value
1320
1338
 
1321
1339
  def get_attribute(self, selector, attribute):
1340
+ """Find an element and return the value of an attribute.
1341
+ If the element doesn't exist: Raises an exception.
1342
+ If the attribute doesn't exist: Returns None."""
1322
1343
  return self.find_element(selector).get_attribute(attribute)
1323
1344
 
1324
1345
  def get_element_html(self, selector):
1346
+ """Find an element and return the outerHTML."""
1325
1347
  selector = self.__convert_to_css_if_xpath(selector)
1348
+ self.find_element(selector)
1349
+ self.__add_light_pause()
1326
1350
  return self.loop.run_until_complete(
1327
1351
  self.page.evaluate(
1328
1352
  """document.querySelector('%s').outerHTML"""
@@ -1415,6 +1439,10 @@ class CDPMethods():
1415
1439
  shared_utils.is_linux()
1416
1440
  and (not sb_config.headed or sb_config.xvfb)
1417
1441
  and not driver.config.headless
1442
+ and (
1443
+ not hasattr(sb_config, "_virtual_display")
1444
+ or not sb_config._virtual_display
1445
+ )
1418
1446
  ):
1419
1447
  from sbvirtualdisplay import Display
1420
1448
  xvfb_width = 1366
@@ -1442,6 +1470,11 @@ class CDPMethods():
1442
1470
  backend="xvfb",
1443
1471
  use_xauth=True,
1444
1472
  )
1473
+ if "--debug-display" in sys.argv:
1474
+ print(
1475
+ "Starting VDisplay from sb_cdp: (%s, %s)"
1476
+ % (xvfb_width, xvfb_height)
1477
+ )
1445
1478
  xvfb_display.start()
1446
1479
 
1447
1480
  def __get_configured_pyautogui(self, pyautogui_copy):
@@ -1910,7 +1910,10 @@ class BaseCase(unittest.TestCase):
1910
1910
  timeout = self.__get_new_timeout(timeout)
1911
1911
  selector, by = self.__recalculate_selector(selector, by)
1912
1912
  if self.__is_cdp_swap_needed():
1913
- return self.cdp.get_element_attribute(selector, attribute)
1913
+ if hard_fail:
1914
+ return self.cdp.get_element_attribute(selector, attribute)
1915
+ else:
1916
+ return self.cdp.get_attribute(selector, attribute)
1914
1917
  self.wait_for_ready_state_complete()
1915
1918
  time.sleep(0.01)
1916
1919
  if self.__is_shadow_selector(selector):
@@ -4883,6 +4886,7 @@ class BaseCase(unittest.TestCase):
4883
4886
  self.execute_script(script)
4884
4887
 
4885
4888
  def activate_cdp_mode(self, url=None, **kwargs):
4889
+ """Activate CDP Mode with the URL and kwargs."""
4886
4890
  if hasattr(self.driver, "_is_using_uc") and self.driver._is_using_uc:
4887
4891
  if self.__is_cdp_swap_needed():
4888
4892
  return # CDP Mode is already active
@@ -4898,6 +4902,8 @@ class BaseCase(unittest.TestCase):
4898
4902
  self.cdp = self.driver.cdp
4899
4903
 
4900
4904
  def activate_recorder(self):
4905
+ """Activate Recorder Mode on the current tab/window.
4906
+ For persistent Recorder Mode, use the extension instead."""
4901
4907
  from seleniumbase.js_code.recorder_js import recorder_js
4902
4908
 
4903
4909
  if not self.is_chromium():
@@ -14158,7 +14164,13 @@ class BaseCase(unittest.TestCase):
14158
14164
  backend="xvfb",
14159
14165
  use_xauth=True,
14160
14166
  )
14167
+ if "--debug-display" in sys.argv:
14168
+ print(
14169
+ "Starting VDisplay from base_case: (%s, %s)"
14170
+ % (self._xvfb_width, self._xvfb_height)
14171
+ )
14161
14172
  self._xvfb_display.start()
14173
+ sb_config._virtual_display = self._xvfb_display
14162
14174
  if "DISPLAY" not in os.environ.keys():
14163
14175
  print(
14164
14176
  "\nX11 display failed! Will use regular xvfb!"
@@ -16,7 +16,7 @@ import urllib.request
16
16
  import warnings
17
17
  from collections import defaultdict
18
18
  from seleniumbase import config as sb_config
19
- from typing import List, Set, Tuple, Union
19
+ from typing import List, Optional, Set, Tuple, Union
20
20
  import mycdp as cdp
21
21
  from . import cdp_util as util
22
22
  from . import tab
@@ -504,10 +504,22 @@ class Browser:
504
504
  # self.connection.handlers[cdp.inspector.Detached] = [self.stop]
505
505
  # return self
506
506
 
507
+ async def grant_permissions(
508
+ self,
509
+ permissions: List[str] | str,
510
+ origin: Optional[str] = None,
511
+ ):
512
+ """Grant specific permissions to the current window.
513
+ Applies to all origins if no origin is specified."""
514
+ if isinstance(permissions, str):
515
+ permissions = [permissions]
516
+ await self.connection.send(
517
+ cdp.browser.grant_permissions(permissions, origin)
518
+ )
519
+
507
520
  async def grant_all_permissions(self):
508
521
  """
509
522
  Grant permissions for:
510
- accessibilityEvents
511
523
  audioCapture
512
524
  backgroundSync
513
525
  backgroundFetch
@@ -524,21 +536,45 @@ class Browser:
524
536
  notifications
525
537
  paymentHandler
526
538
  periodicBackgroundSync
527
- protectedMediaIdentifier
528
539
  sensors
529
540
  storageAccess
530
541
  topLevelStorageAccess
531
542
  videoCapture
532
- videoCapturePanTiltZoom
533
543
  wakeLockScreen
534
544
  wakeLockSystem
535
545
  windowManagement
536
546
  """
537
- permissions = list(cdp.browser.PermissionType)
538
- permissions.remove(cdp.browser.PermissionType.FLASH)
539
- permissions.remove(cdp.browser.PermissionType.CAPTURED_SURFACE_CONTROL)
547
+ permissions = [
548
+ "audioCapture",
549
+ "backgroundSync",
550
+ "backgroundFetch",
551
+ "clipboardReadWrite",
552
+ "clipboardSanitizedWrite",
553
+ "displayCapture",
554
+ "durableStorage",
555
+ "geolocation",
556
+ "idleDetection",
557
+ "localFonts",
558
+ "midi",
559
+ "midiSysex",
560
+ "nfc",
561
+ "notifications",
562
+ "paymentHandler",
563
+ "periodicBackgroundSync",
564
+ "sensors",
565
+ "storageAccess",
566
+ "topLevelStorageAccess",
567
+ "videoCapture",
568
+ "wakeLockScreen",
569
+ "wakeLockSystem",
570
+ "windowManagement",
571
+ ]
540
572
  await self.connection.send(cdp.browser.grant_permissions(permissions))
541
573
 
574
+ async def reset_permissions(self):
575
+ """Reset permissions for all origins on the current window."""
576
+ await self.connection.send(cdp.browser.reset_permissions())
577
+
542
578
  async def tile_windows(self, windows=None, max_columns: int = 0):
543
579
  import math
544
580
  try:
@@ -51,7 +51,14 @@ def __activate_virtual_display_as_needed(
51
51
  headless, headed, xvfb, xvfb_metrics
52
52
  ):
53
53
  """This is only needed on Linux."""
54
- if IS_LINUX and (not headed or xvfb):
54
+ if (
55
+ IS_LINUX
56
+ and (not headed or xvfb)
57
+ and (
58
+ not hasattr(sb_config, "_virtual_display")
59
+ or not sb_config._virtual_display
60
+ )
61
+ ):
55
62
  from sbvirtualdisplay import Display
56
63
  pip_find_lock = fasteners.InterProcessLock(
57
64
  constants.PipInstall.FINDLOCK
@@ -87,6 +94,11 @@ def __activate_virtual_display_as_needed(
87
94
  backend="xvfb",
88
95
  use_xauth=True,
89
96
  )
97
+ if "--debug-display" in sys.argv:
98
+ print(
99
+ "Starting VDisplay from cdp_util: (%s, %s)"
100
+ % (_xvfb_width, _xvfb_height)
101
+ )
90
102
  _xvfb_display.start()
91
103
  if "DISPLAY" not in os.environ.keys():
92
104
  print(
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: seleniumbase
3
- Version: 4.39.3
3
+ Version: 4.39.6
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
@@ -40,6 +40,7 @@ Classifier: Programming Language :: Python :: 3.10
40
40
  Classifier: Programming Language :: Python :: 3.11
41
41
  Classifier: Programming Language :: Python :: 3.12
42
42
  Classifier: Programming Language :: Python :: 3.13
43
+ Classifier: Programming Language :: Python :: 3.14
43
44
  Classifier: Topic :: Internet
44
45
  Classifier: Topic :: Internet :: WWW/HTTP :: Browsers
45
46
  Classifier: Topic :: Scientific/Engineering
@@ -66,7 +67,7 @@ Requires-Dist: setuptools~=70.2; python_version < "3.10"
66
67
  Requires-Dist: setuptools>=80.9.0; python_version >= "3.10"
67
68
  Requires-Dist: wheel>=0.45.1
68
69
  Requires-Dist: attrs>=25.3.0
69
- Requires-Dist: certifi>=2025.4.26
70
+ Requires-Dist: certifi>=2025.6.15
70
71
  Requires-Dist: exceptiongroup>=1.3.0
71
72
  Requires-Dist: websockets~=13.1; python_version < "3.9"
72
73
  Requires-Dist: websockets>=15.0.1; python_version >= "3.9"
@@ -87,7 +88,7 @@ Requires-Dist: parse>=1.20.2
87
88
  Requires-Dist: parse-type>=0.6.4
88
89
  Requires-Dist: colorama>=0.4.6
89
90
  Requires-Dist: pyyaml>=6.0.2
90
- Requires-Dist: pygments>=2.19.1
91
+ Requires-Dist: pygments>=2.19.2
91
92
  Requires-Dist: pyreadline3>=3.5.3; platform_system == "Windows"
92
93
  Requires-Dist: tabcompleter>=1.4.0
93
94
  Requires-Dist: pdbp>=1.7.0
@@ -95,7 +96,7 @@ Requires-Dist: idna==3.10
95
96
  Requires-Dist: chardet==5.2.0
96
97
  Requires-Dist: charset-normalizer<4,>=3.4.2
97
98
  Requires-Dist: urllib3<2,>=1.26.20; python_version < "3.10"
98
- Requires-Dist: urllib3<2.5.0,>=1.26.20; python_version >= "3.10"
99
+ Requires-Dist: urllib3<2.6.0,>=1.26.20; python_version >= "3.10"
99
100
  Requires-Dist: requests==2.32.4
100
101
  Requires-Dist: sniffio==1.3.1
101
102
  Requires-Dist: h11==0.16.0
@@ -116,14 +117,14 @@ Requires-Dist: iniconfig==2.1.0
116
117
  Requires-Dist: pluggy==1.5.0; python_version < "3.9"
117
118
  Requires-Dist: pluggy==1.6.0; python_version >= "3.9"
118
119
  Requires-Dist: pytest==8.3.5; python_version < "3.9"
119
- Requires-Dist: pytest==8.4.0; python_version >= "3.9"
120
+ Requires-Dist: pytest==8.4.1; python_version >= "3.9"
120
121
  Requires-Dist: pytest-html==4.0.2
121
122
  Requires-Dist: pytest-metadata==3.1.1
122
123
  Requires-Dist: pytest-ordering==0.6
123
124
  Requires-Dist: pytest-rerunfailures==14.0; python_version < "3.9"
124
125
  Requires-Dist: pytest-rerunfailures==15.1; python_version >= "3.9"
125
126
  Requires-Dist: pytest-xdist==3.6.1; python_version < "3.9"
126
- Requires-Dist: pytest-xdist==3.7.0; python_version >= "3.9"
127
+ Requires-Dist: pytest-xdist==3.8.0; python_version >= "3.9"
127
128
  Requires-Dist: parameterized==0.9.0
128
129
  Requires-Dist: behave==1.2.6
129
130
  Requires-Dist: soupsieve==2.7
@@ -139,17 +140,17 @@ Requires-Dist: allure-python-commons>=2.13.5; extra == "allure"
139
140
  Requires-Dist: allure-behave>=2.13.5; extra == "allure"
140
141
  Provides-Extra: coverage
141
142
  Requires-Dist: coverage>=7.6.1; python_version < "3.9" and extra == "coverage"
142
- Requires-Dist: coverage>=7.8.2; python_version >= "3.9" and extra == "coverage"
143
+ Requires-Dist: coverage>=7.9.1; python_version >= "3.9" and extra == "coverage"
143
144
  Requires-Dist: pytest-cov>=5.0.0; python_version < "3.9" and extra == "coverage"
144
- Requires-Dist: pytest-cov>=6.1.1; python_version >= "3.9" and extra == "coverage"
145
+ Requires-Dist: pytest-cov>=6.2.1; python_version >= "3.9" and extra == "coverage"
145
146
  Provides-Extra: flake8
146
147
  Requires-Dist: flake8==5.0.4; python_version < "3.9" and extra == "flake8"
147
- Requires-Dist: flake8==7.2.0; python_version >= "3.9" and extra == "flake8"
148
+ Requires-Dist: flake8==7.3.0; python_version >= "3.9" and extra == "flake8"
148
149
  Requires-Dist: mccabe==0.7.0; extra == "flake8"
149
150
  Requires-Dist: pyflakes==2.5.0; python_version < "3.9" and extra == "flake8"
150
- Requires-Dist: pyflakes==3.3.2; python_version >= "3.9" and extra == "flake8"
151
+ Requires-Dist: pyflakes==3.4.0; python_version >= "3.9" and extra == "flake8"
151
152
  Requires-Dist: pycodestyle==2.9.1; python_version < "3.9" and extra == "flake8"
152
- Requires-Dist: pycodestyle==2.13.0; python_version >= "3.9" and extra == "flake8"
153
+ Requires-Dist: pycodestyle==2.14.0; 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"
@@ -160,12 +161,12 @@ Provides-Extra: pdfminer
160
161
  Requires-Dist: pdfminer.six==20250324; python_version < "3.9" and extra == "pdfminer"
161
162
  Requires-Dist: pdfminer.six==20250506; python_version >= "3.9" and extra == "pdfminer"
162
163
  Requires-Dist: cryptography==39.0.2; python_version < "3.9" and extra == "pdfminer"
163
- Requires-Dist: cryptography==45.0.3; python_version >= "3.9" and extra == "pdfminer"
164
+ Requires-Dist: cryptography==45.0.4; python_version >= "3.9" and extra == "pdfminer"
164
165
  Requires-Dist: cffi==1.17.1; extra == "pdfminer"
165
166
  Requires-Dist: pycparser==2.22; extra == "pdfminer"
166
167
  Provides-Extra: pillow
167
168
  Requires-Dist: Pillow>=10.4.0; python_version < "3.9" and extra == "pillow"
168
- Requires-Dist: Pillow>=11.2.1; python_version >= "3.9" and extra == "pillow"
169
+ Requires-Dist: Pillow>=11.3.0; python_version >= "3.9" and extra == "pillow"
169
170
  Provides-Extra: pip-system-certs
170
171
  Requires-Dist: pip-system-certs==4.0; platform_system == "Windows" and extra == "pip-system-certs"
171
172
  Provides-Extra: proxy
@@ -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=nTUvL9_RRWHzoBJZ-PxE0bdg5Ws2Y35U5sdL7LXHfRU,46
6
+ seleniumbase/__version__.py,sha256=8zjRpQKgeZH5MsjlkKK9zW-9i5Cxv8FcdzjOkNJCAlo,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=bbbfa8ID6nMnmrVJ7G-014uOj5PE4B8IROZB2WXSQ8I,59172
@@ -36,7 +36,7 @@ seleniumbase/console_scripts/sb_print.py,sha256=tNy-bMDgwHJO3bZxMpmo9weSE8uhbH0C
36
36
  seleniumbase/console_scripts/sb_recorder.py,sha256=DH-n2fN7N9qyHMl7wjtn8MiliBgfw-1kwgmfg1GUuhk,10772
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=EwMup2zhgUGslHsjoeMPbKSD5-W92M2hKO6RiNqL06Q,242895
39
+ seleniumbase/core/browser_launcher.py,sha256=nzmsNY6rxD77MjRsSXvmxIJCPjqmWG1z2ArC35ev7zg,243609
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=pZ1NboNfziHU3vWZLOZLX-qkfM3oKSnpc3omQf9
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=z_4qx2jI_gtK5r3niGXgEOBpfMUicUCOciowai50MP4,3529
53
- seleniumbase/core/sb_cdp.py,sha256=zgkVXOhwf94NGdsUO0eM8yVUS3s5FzSuAPJNsz3lrZo,86452
53
+ seleniumbase/core/sb_cdp.py,sha256=ad3iRpHAHcsH4QtJVFJemxEak2RvSJkNtS_EO3OPX8g,88252
54
54
  seleniumbase/core/sb_driver.py,sha256=yUdS9_9OXTVaWzp1qY7msvnsvCK8X3FIcxMixb0BuBE,13827
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=JEE_FVEvlS63cFQbVLEroIyPSS91nWCDL0MhjVrmIpk,11813
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=N9EIcW_YSkmH9N-dS9ksPOu799AOARry_lnSXwwW9oU,727121
68
+ seleniumbase/fixtures/base_case.py,sha256=039aEMIJJ81JisIQyVgfa1WzHMRrW4BMzgqNz9DTKgM,727718
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
@@ -115,8 +115,8 @@ 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=5XVzfA6JQqh5q5ShKgSwjebB9n598leKZ4EYfG49bgs,34565
119
- seleniumbase/undetected/cdp_driver/cdp_util.py,sha256=_DoF4EE1osbzSb3do-sIrMnL_Gse2S2vs3NUAuhGSAI,24819
118
+ seleniumbase/undetected/cdp_driver/browser.py,sha256=LF0TukNNuPN1zh75oiPBHKU3uLc4BmVyyw0EFn7hnWg,35640
119
+ seleniumbase/undetected/cdp_driver/cdp_util.py,sha256=ku3Nq8yjC6kbvVV2PB149E-TxQIIvjHDFQI2wyi0HVs,25221
120
120
  seleniumbase/undetected/cdp_driver/config.py,sha256=4-nUkEf7JSuOdFMNd6XmJnFucZrA59-kH1FUMxDcgFU,12561
121
121
  seleniumbase/undetected/cdp_driver/connection.py,sha256=WgZ4QamXSdTzP4Xfgkn8mxv-JFivMG6hqbyHy2_LQlg,25717
122
122
  seleniumbase/undetected/cdp_driver/element.py,sha256=FIC6v7OmumLCT-_vIc3H4oju_oBbaLpWJUJIKm2c_q4,40467
@@ -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.39.3.dist-info/licenses/LICENSE,sha256=BRblZsX7HyPUjQmYTiyWr_e9tzWvmR3R4SFclM2R3W0,1085
139
- seleniumbase-4.39.3.dist-info/METADATA,sha256=HP5hNOGCz7XYhzmE5bggasu-3gJpnSobclAGUsCGc24,87284
140
- seleniumbase-4.39.3.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
141
- seleniumbase-4.39.3.dist-info/entry_points.txt,sha256=CNrh2EKNaHYEhO6pP1RJyVLB99LkDDYX7TnUK8xfjqk,623
142
- seleniumbase-4.39.3.dist-info/top_level.txt,sha256=4N97aBOQ8ETCnDnokBsWb07lJfTaq3C1ZzYRxvLMxqU,19
143
- seleniumbase-4.39.3.dist-info/RECORD,,
138
+ seleniumbase-4.39.6.dist-info/licenses/LICENSE,sha256=BRblZsX7HyPUjQmYTiyWr_e9tzWvmR3R4SFclM2R3W0,1085
139
+ seleniumbase-4.39.6.dist-info/METADATA,sha256=R1P9fLbDM-LhAnuEI1ohiM0JJoZ3WQEXyu9i7JmdubE,87335
140
+ seleniumbase-4.39.6.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
141
+ seleniumbase-4.39.6.dist-info/entry_points.txt,sha256=CNrh2EKNaHYEhO6pP1RJyVLB99LkDDYX7TnUK8xfjqk,623
142
+ seleniumbase-4.39.6.dist-info/top_level.txt,sha256=4N97aBOQ8ETCnDnokBsWb07lJfTaq3C1ZzYRxvLMxqU,19
143
+ seleniumbase-4.39.6.dist-info/RECORD,,