seleniumbase 4.28.0a3__py3-none-any.whl → 4.28.2__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.28.0a3"
2
+ __version__ = "4.28.2"
@@ -389,7 +389,9 @@ def uc_special_open_if_cf(
389
389
  driver.execute_script('window.open("%s","_blank");' % url)
390
390
  driver.close()
391
391
  if mobile_emulator:
392
- driver.switch_to.window(driver.window_handles[-1])
392
+ page_actions.switch_to_window(
393
+ driver, driver.window_handles[-1], 2
394
+ )
393
395
  uc_metrics = {}
394
396
  if (
395
397
  isinstance(device_width, int)
@@ -419,7 +421,9 @@ def uc_special_open_if_cf(
419
421
  except Exception:
420
422
  pass
421
423
  if not mobile_emulator:
422
- driver.switch_to.window(driver.window_handles[-1])
424
+ page_actions.switch_to_window(
425
+ driver, driver.window_handles[-1], 2
426
+ )
423
427
  else:
424
428
  driver.default_get(url) # The original one
425
429
  else:
@@ -450,7 +454,7 @@ def uc_open_with_tab(driver, url):
450
454
  with driver:
451
455
  driver.execute_script('window.open("%s","_blank");' % url)
452
456
  driver.close()
453
- driver.switch_to.window(driver.window_handles[-1])
457
+ page_actions.switch_to_window(driver, driver.window_handles[-1], 2)
454
458
  else:
455
459
  driver.default_get(url) # The original one
456
460
  return None
@@ -476,10 +480,14 @@ def uc_open_with_reconnect(driver, url, reconnect_time=None):
476
480
  driver.reconnect(reconnect_time)
477
481
  time.sleep(0.004)
478
482
  try:
479
- driver.switch_to.window(driver.window_handles[-1])
483
+ page_actions.switch_to_window(
484
+ driver, driver.window_handles[-1], 2
485
+ )
480
486
  except InvalidSessionIdException:
481
487
  time.sleep(0.05)
482
- driver.switch_to.window(driver.window_handles[-1])
488
+ page_actions.switch_to_window(
489
+ driver, driver.window_handles[-1], 2
490
+ )
483
491
  else:
484
492
  driver.default_get(url) # The original one
485
493
  return None
@@ -546,17 +554,17 @@ def uc_click(
546
554
  driver.reconnect(reconnect_time)
547
555
 
548
556
 
549
- def verify_pyautogui_has_a_headed_browser():
557
+ def verify_pyautogui_has_a_headed_browser(driver):
550
558
  """PyAutoGUI requires a headed browser so that it can
551
559
  focus on the correct element when performing actions."""
552
- if sb_config.headless or sb_config.headless2:
560
+ if hasattr(driver, "_is_hidden") and driver._is_hidden:
553
561
  raise Exception(
554
562
  "PyAutoGUI can't be used in headless mode!"
555
563
  )
556
564
 
557
565
 
558
- def install_pyautogui_if_missing():
559
- verify_pyautogui_has_a_headed_browser()
566
+ def install_pyautogui_if_missing(driver):
567
+ verify_pyautogui_has_a_headed_browser(driver)
560
568
  pip_find_lock = fasteners.InterProcessLock(
561
569
  constants.PipInstall.FINDLOCK
562
570
  )
@@ -566,10 +574,11 @@ def install_pyautogui_if_missing():
566
574
  try:
567
575
  use_pyautogui_ver = constants.PyAutoGUI.VER
568
576
  if pyautogui.__version__ != use_pyautogui_ver:
577
+ del pyautogui
569
578
  shared_utils.pip_install(
570
579
  "pyautogui", version=use_pyautogui_ver
571
580
  )
572
- del pyautogui
581
+ import pyautogui
573
582
  except Exception:
574
583
  pass
575
584
  except Exception:
@@ -607,7 +616,7 @@ def get_configured_pyautogui(pyautogui_copy):
607
616
 
608
617
 
609
618
  def uc_gui_press_key(driver, key):
610
- install_pyautogui_if_missing()
619
+ install_pyautogui_if_missing(driver)
611
620
  import pyautogui
612
621
  pyautogui = get_configured_pyautogui(pyautogui)
613
622
  gui_lock = fasteners.InterProcessLock(
@@ -618,7 +627,7 @@ def uc_gui_press_key(driver, key):
618
627
 
619
628
 
620
629
  def uc_gui_press_keys(driver, keys):
621
- install_pyautogui_if_missing()
630
+ install_pyautogui_if_missing(driver)
622
631
  import pyautogui
623
632
  pyautogui = get_configured_pyautogui(pyautogui)
624
633
  gui_lock = fasteners.InterProcessLock(
@@ -630,7 +639,7 @@ def uc_gui_press_keys(driver, keys):
630
639
 
631
640
 
632
641
  def uc_gui_write(driver, text):
633
- install_pyautogui_if_missing()
642
+ install_pyautogui_if_missing(driver)
634
643
  import pyautogui
635
644
  pyautogui = get_configured_pyautogui(pyautogui)
636
645
  gui_lock = fasteners.InterProcessLock(
@@ -647,7 +656,7 @@ def uc_gui_handle_cf(driver, frame="iframe"):
647
656
  and 'aria-label="Cloudflare"' not in source
648
657
  ):
649
658
  return
650
- install_pyautogui_if_missing()
659
+ install_pyautogui_if_missing(driver)
651
660
  import pyautogui
652
661
  pyautogui = get_configured_pyautogui(pyautogui)
653
662
  gui_lock = fasteners.InterProcessLock(
@@ -663,9 +672,7 @@ def uc_gui_handle_cf(driver, frame="iframe"):
663
672
  if not is_in_frame:
664
673
  # Make sure the window is on top
665
674
  page_actions.switch_to_window(
666
- driver,
667
- driver.current_window_handle,
668
- timeout=settings.SMALL_TIMEOUT,
675
+ driver, driver.current_window_handle, 2
669
676
  )
670
677
  if not is_in_frame or needs_switch:
671
678
  # Currently not in frame (or nested frame outside CF one)
@@ -1030,7 +1037,7 @@ def _set_chrome_options(
1030
1037
  prefs["download.prompt_for_download"] = False
1031
1038
  prefs["credentials_enable_service"] = False
1032
1039
  prefs["local_discovery.notifications_enabled"] = False
1033
- prefs["safebrowsing.enabled"] = True
1040
+ prefs["safebrowsing.enabled"] = False # Prevent PW "data breach" pop-ups
1034
1041
  prefs["safebrowsing.disable_download_protection"] = True
1035
1042
  prefs["omnibox-max-zero-suggest-matches"] = 0
1036
1043
  prefs["omnibox-use-existing-autocomplete-client"] = 0
@@ -2621,7 +2628,7 @@ def get_local_driver(
2621
2628
  "credentials_enable_service": False,
2622
2629
  "local_discovery.notifications_enabled": False,
2623
2630
  "safebrowsing.disable_download_protection": True,
2624
- "safebrowsing.enabled": True,
2631
+ "safebrowsing.enabled": False, # Prevent PW "data breach" pop-ups
2625
2632
  "omnibox-max-zero-suggest-matches": 0,
2626
2633
  "omnibox-use-existing-autocomplete-client": 0,
2627
2634
  "omnibox-trending-zero-prefix-suggestions-on-ntp": 0,
@@ -4030,6 +4037,8 @@ def get_local_driver(
4030
4037
  driver, *args, **kwargs
4031
4038
  )
4032
4039
  )
4040
+ driver._is_hidden = (headless or headless2)
4041
+ driver._is_using_uc = True
4033
4042
  if mobile_emulator:
4034
4043
  uc_metrics = {}
4035
4044
  if (
@@ -6822,10 +6822,10 @@ class BaseCase(unittest.TestCase):
6822
6822
  try:
6823
6823
  import cryptography
6824
6824
  if cryptography.__version__ != "39.0.2":
6825
+ del cryptography # To get newer ver
6825
6826
  shared_utils.pip_install(
6826
6827
  "cryptography", version="39.0.2"
6827
6828
  )
6828
- del cryptography # To get newer ver
6829
6829
  import cryptography
6830
6830
  except Exception:
6831
6831
  shared_utils.pip_install(
@@ -13749,10 +13749,10 @@ class BaseCase(unittest.TestCase):
13749
13749
  try:
13750
13750
  use_pyautogui_ver = constants.PyAutoGUI.VER
13751
13751
  if pyautogui.__version__ != use_pyautogui_ver:
13752
+ del pyautogui # To get newer ver
13752
13753
  shared_utils.pip_install(
13753
13754
  "pyautogui", version=use_pyautogui_ver
13754
13755
  )
13755
- del pyautogui # To get newer ver
13756
13756
  import pyautogui
13757
13757
  except Exception:
13758
13758
  pass
@@ -18,6 +18,7 @@ By.TAG_NAME # "tag name"
18
18
  By.PARTIAL_LINK_TEXT # "partial link text"
19
19
  """
20
20
  import codecs
21
+ import fasteners
21
22
  import os
22
23
  import time
23
24
  from selenium.common.exceptions import ElementNotInteractableException
@@ -32,6 +33,7 @@ from selenium.webdriver.common.keys import Keys
32
33
  from seleniumbase.common.exceptions import LinkTextNotFoundException
33
34
  from seleniumbase.common.exceptions import TextNotVisibleException
34
35
  from seleniumbase.config import settings
36
+ from seleniumbase.fixtures import constants
35
37
  from seleniumbase.fixtures import page_utils
36
38
  from seleniumbase.fixtures import shared_utils
37
39
 
@@ -1428,6 +1430,18 @@ def switch_to_frame(driver, frame, timeout=settings.SMALL_TIMEOUT):
1428
1430
  timeout_exception(Exception, message)
1429
1431
 
1430
1432
 
1433
+ def __switch_to_window(driver, window_handle):
1434
+ if hasattr(driver, "_is_using_uc") and driver._is_using_uc:
1435
+ gui_lock = fasteners.InterProcessLock(
1436
+ constants.MultiBrowser.PYAUTOGUILOCK
1437
+ )
1438
+ with gui_lock:
1439
+ driver.switch_to.window(window_handle)
1440
+ else:
1441
+ driver.switch_to.window(window_handle)
1442
+ return True
1443
+
1444
+
1431
1445
  def switch_to_window(driver, window, timeout=settings.SMALL_TIMEOUT):
1432
1446
  """
1433
1447
  Wait for a window to appear, and switch to it. This should be usable
@@ -1451,7 +1465,7 @@ def switch_to_window(driver, window, timeout=settings.SMALL_TIMEOUT):
1451
1465
  shared_utils.check_if_time_limit_exceeded()
1452
1466
  try:
1453
1467
  window_handle = driver.window_handles[window]
1454
- driver.switch_to.window(window_handle)
1468
+ __switch_to_window(driver, window_handle)
1455
1469
  return True
1456
1470
  except IndexError:
1457
1471
  now_ms = time.time() * 1000.0
@@ -1472,7 +1486,7 @@ def switch_to_window(driver, window, timeout=settings.SMALL_TIMEOUT):
1472
1486
  for x in range(int(timeout * 10)):
1473
1487
  shared_utils.check_if_time_limit_exceeded()
1474
1488
  try:
1475
- driver.switch_to.window(window_handle)
1489
+ __switch_to_window(driver, window_handle)
1476
1490
  return True
1477
1491
  except NoSuchWindowException:
1478
1492
  now_ms = time.time() * 1000.0
@@ -81,46 +81,46 @@ def format_exc(exception, message):
81
81
  from seleniumbase.common.exceptions import TextNotVisibleException
82
82
  from seleniumbase.common import exceptions
83
83
 
84
- if exception == Exception:
84
+ if exception is Exception:
85
85
  exc = Exception
86
86
  return exc, message
87
- elif exception == ElementNotVisibleException:
87
+ elif exception is ElementNotVisibleException:
88
88
  exc = exceptions.ElementNotVisibleException
89
89
  elif exception == "ElementNotVisibleException":
90
90
  exc = exceptions.ElementNotVisibleException
91
- elif exception == LinkTextNotFoundException:
91
+ elif exception is LinkTextNotFoundException:
92
92
  exc = exceptions.LinkTextNotFoundException
93
93
  elif exception == "LinkTextNotFoundException":
94
94
  exc = exceptions.LinkTextNotFoundException
95
- elif exception == NoSuchElementException:
95
+ elif exception is NoSuchElementException:
96
96
  exc = exceptions.NoSuchElementException
97
97
  elif exception == "NoSuchElementException":
98
98
  exc = exceptions.NoSuchElementException
99
- elif exception == TextNotVisibleException:
99
+ elif exception is TextNotVisibleException:
100
100
  exc = exceptions.TextNotVisibleException
101
101
  elif exception == "TextNotVisibleException":
102
102
  exc = exceptions.TextNotVisibleException
103
- elif exception == NoAlertPresentException:
103
+ elif exception is NoAlertPresentException:
104
104
  exc = exceptions.NoAlertPresentException
105
105
  elif exception == "NoAlertPresentException":
106
106
  exc = exceptions.NoAlertPresentException
107
- elif exception == NoSuchAttributeException:
107
+ elif exception is NoSuchAttributeException:
108
108
  exc = exceptions.NoSuchAttributeException
109
109
  elif exception == "NoSuchAttributeException":
110
110
  exc = exceptions.NoSuchAttributeException
111
- elif exception == NoSuchFrameException:
111
+ elif exception is NoSuchFrameException:
112
112
  exc = exceptions.NoSuchFrameException
113
113
  elif exception == "NoSuchFrameException":
114
114
  exc = exceptions.NoSuchFrameException
115
- elif exception == NoSuchWindowException:
115
+ elif exception is NoSuchWindowException:
116
116
  exc = exceptions.NoSuchWindowException
117
117
  elif exception == "NoSuchWindowException":
118
118
  exc = exceptions.NoSuchWindowException
119
- elif exception == NoSuchFileException:
119
+ elif exception is NoSuchFileException:
120
120
  exc = exceptions.NoSuchFileException
121
121
  elif exception == "NoSuchFileException":
122
122
  exc = exceptions.NoSuchFileException
123
- elif exception == NoSuchOptionException:
123
+ elif exception is NoSuchOptionException:
124
124
  exc = exceptions.NoSuchOptionException
125
125
  elif exception == "NoSuchOptionException":
126
126
  exc = exceptions.NoSuchOptionException
@@ -125,7 +125,9 @@ def Driver(
125
125
  uc_cdp=None, # Shortcut / Duplicate of "uc_cdp_events".
126
126
  uc_sub=None, # Shortcut / Duplicate of "uc_subprocess".
127
127
  log_cdp=None, # Shortcut / Duplicate of "log_cdp_events".
128
+ ad_block=None, # Shortcut / Duplicate of "ad_block_on".
128
129
  server=None, # Shortcut / Duplicate of "servername".
130
+ guest=None, # Shortcut / Duplicate of "guest_mode".
129
131
  wire=None, # Shortcut / Duplicate of "use_wire".
130
132
  pls=None, # Shortcut / Duplicate of "page_load_strategy".
131
133
  ):
@@ -263,6 +265,8 @@ def Driver(
263
265
  incognito = True
264
266
  else:
265
267
  incognito = False
268
+ if guest is not None and guest_mode is None:
269
+ guest_mode = guest
266
270
  if guest_mode is None:
267
271
  if "--guest" in sys_argv:
268
272
  guest_mode = True
@@ -387,6 +391,14 @@ def Driver(
387
391
  uc_cdp_events = True
388
392
  else:
389
393
  uc_cdp_events = False
394
+ if undetectable and browser != "chrome":
395
+ message = (
396
+ '\n Undetected-Chromedriver Mode ONLY supports Chrome!'
397
+ '\n ("uc=True" / "undetectable=True" / "--uc")'
398
+ '\n (Your browser choice was: "%s".)'
399
+ '\n (Will use "%s" without UC Mode.)\n' % (browser, browser)
400
+ )
401
+ print(message)
390
402
  if headed is None:
391
403
  # Override the default headless mode on Linux if set.
392
404
  if "--gui" in sys_argv or "--headed" in sys_argv:
@@ -507,6 +519,8 @@ def Driver(
507
519
  swiftshader = True
508
520
  else:
509
521
  swiftshader = False
522
+ if ad_block is not None and ad_block_on is None:
523
+ ad_block_on = ad_block
510
524
  if ad_block_on is None:
511
525
  if "--ad-block" in sys_argv or "--ad_block" in sys_argv:
512
526
  ad_block_on = True
@@ -103,7 +103,9 @@ def SB(
103
103
  uc_cdp=None, # Shortcut / Duplicate of "uc_cdp_events".
104
104
  uc_sub=None, # Shortcut / Duplicate of "uc_subprocess".
105
105
  log_cdp=None, # Shortcut / Duplicate of "log_cdp_events".
106
+ ad_block=None, # Shortcut / Duplicate of "ad_block_on".
106
107
  server=None, # Shortcut / Duplicate of "servername".
108
+ guest=None, # Shortcut / Duplicate of "guest_mode".
107
109
  wire=None, # Shortcut / Duplicate of "use_wire".
108
110
  pls=None, # Shortcut / Duplicate of "page_load_strategy".
109
111
  sjw=None, # Shortcut / Duplicate of "skip_js_waits".
@@ -296,6 +298,8 @@ def SB(
296
298
  incognito = True
297
299
  else:
298
300
  incognito = False
301
+ if guest is not None and guest_mode is None:
302
+ guest_mode = guest
299
303
  if guest_mode is None:
300
304
  if "--guest" in sys_argv:
301
305
  guest_mode = True
@@ -444,6 +448,14 @@ def SB(
444
448
  uc_cdp_events = True
445
449
  else:
446
450
  uc_cdp_events = False
451
+ if undetectable and browser != "chrome":
452
+ message = (
453
+ '\n Undetected-Chromedriver Mode ONLY supports Chrome!'
454
+ '\n ("uc=True" / "undetectable=True" / "--uc")'
455
+ '\n (Your browser choice was: "%s".)'
456
+ '\n (Will use "%s" without UC Mode.)\n' % (browser, browser)
457
+ )
458
+ print(message)
447
459
  if headed is None:
448
460
  # Override the default headless mode on Linux if set.
449
461
  if "--gui" in sys_argv or "--headed" in sys_argv:
@@ -651,6 +663,8 @@ def SB(
651
663
  swiftshader = True
652
664
  else:
653
665
  swiftshader = False
666
+ if ad_block is not None and ad_block_on is None:
667
+ ad_block_on = ad_block
654
668
  if ad_block_on is None:
655
669
  if "--ad-block" in sys_argv or "--ad_block" in sys_argv:
656
670
  ad_block_on = True
@@ -278,15 +278,19 @@ class Chrome(selenium.webdriver.chrome.webdriver.WebDriver):
278
278
  options.binary_location, *options.arguments
279
279
  )
280
280
  else:
281
- browser = subprocess.Popen(
282
- [options.binary_location, *options.arguments],
283
- stdin=subprocess.PIPE,
284
- stdout=subprocess.PIPE,
285
- stderr=subprocess.PIPE,
286
- close_fds=IS_POSIX,
287
- creationflags=creationflags,
281
+ gui_lock = fasteners.InterProcessLock(
282
+ constants.MultiBrowser.PYAUTOGUILOCK
288
283
  )
289
- self.browser_pid = browser.pid
284
+ with gui_lock:
285
+ browser = subprocess.Popen(
286
+ [options.binary_location, *options.arguments],
287
+ stdin=subprocess.PIPE,
288
+ stdout=subprocess.PIPE,
289
+ stderr=subprocess.PIPE,
290
+ close_fds=IS_POSIX,
291
+ creationflags=creationflags,
292
+ )
293
+ self.browser_pid = browser.pid
290
294
  service_ = None
291
295
  log_output = subprocess.PIPE
292
296
  if sys.version_info < (3, 8):
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: seleniumbase
3
- Version: 4.28.0a3
3
+ Version: 4.28.2
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
@@ -87,7 +87,7 @@ Requires-Dist: sbvirtualdisplay ==1.3.0
87
87
  Requires-Dist: behave ==1.2.6
88
88
  Requires-Dist: beautifulsoup4 ==4.12.3
89
89
  Requires-Dist: tabcompleter ==1.3.0
90
- Requires-Dist: pdbp ==1.5.0
90
+ Requires-Dist: pdbp ==1.5.1
91
91
  Requires-Dist: colorama ==0.4.6
92
92
  Requires-Dist: pyotp ==2.9.0
93
93
  Requires-Dist: mdurl ==0.1.2
@@ -113,11 +113,11 @@ Requires-Dist: soupsieve ==2.4.1 ; python_version < "3.8"
113
113
  Requires-Dist: pygments ==2.17.2 ; python_version < "3.8"
114
114
  Requires-Dist: markdown-it-py ==2.2.0 ; python_version < "3.8"
115
115
  Requires-Dist: urllib3 <2.3.0,>=1.26.18 ; python_version >= "3.10"
116
- Requires-Dist: pip >=24.1 ; python_version >= "3.8"
116
+ Requires-Dist: pip >=24.1.1 ; python_version >= "3.8"
117
117
  Requires-Dist: packaging >=24.1 ; python_version >= "3.8"
118
- Requires-Dist: setuptools >=70.1.0 ; python_version >= "3.8"
118
+ Requires-Dist: setuptools >=70.1.1 ; python_version >= "3.8"
119
119
  Requires-Dist: wheel >=0.43.0 ; python_version >= "3.8"
120
- Requires-Dist: filelock >=3.15.3 ; python_version >= "3.8"
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
123
  Requires-Dist: trio ==0.25.1 ; python_version >= "3.8"
@@ -139,7 +139,7 @@ Requires-Dist: allure-behave >=2.13.5 ; extra == 'allure'
139
139
  Provides-Extra: coverage
140
140
  Requires-Dist: coverage ==7.2.7 ; (python_version < "3.8") and extra == 'coverage'
141
141
  Requires-Dist: pytest-cov ==4.1.0 ; (python_version < "3.8") and extra == 'coverage'
142
- Requires-Dist: coverage >=7.5.3 ; (python_version >= "3.8") and extra == 'coverage'
142
+ Requires-Dist: coverage >=7.5.4 ; (python_version >= "3.8") and extra == 'coverage'
143
143
  Requires-Dist: pytest-cov >=5.0.0 ; (python_version >= "3.8") and extra == 'coverage'
144
144
  Provides-Extra: flake8
145
145
  Requires-Dist: mccabe ==0.7.0 ; extra == 'flake8'
@@ -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=0eVNLuFCugFzKCUVv1KmmV-DJcs0g2fHuUZirq7dkPg,48
8
+ seleniumbase/__version__.py,sha256=5LdSq2oRCgT1RzNcyA-lqWKjAcD-Zx80dQ77gewKL18,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=pDkIoq2Fz5mS95uYVs0JXrsTh--qGjFg639dDap_qiY,176343
43
+ seleniumbase/core/browser_launcher.py,sha256=SaXoKQkbybkJ8Sqi3FIsG8SInFYncRQTzAjar97HNlY,176804
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,14 +70,14 @@ 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=X3EwrOuPIVqPbtmhW8CtoGE3KqmZ5PyMUOxlQBmGIW8,698095
73
+ seleniumbase/fixtures/base_case.py,sha256=qCh7W-WPtmpnSUsyc6CbERE4AH415Hp7Ms33GnLw_xo,698095
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
- seleniumbase/fixtures/page_actions.py,sha256=YVbpdJpaJO-B7pkKw8hxEWpO9e3XraYle5FBJHdQ7Qw,62434
78
+ seleniumbase/fixtures/page_actions.py,sha256=lsat_gPsTwTsnqOrtCHZogDsufzMfUGjQ1ihiMjSeUk,62867
79
79
  seleniumbase/fixtures/page_utils.py,sha256=QmAvTlT0j0ESf1IgvyXwHJapJakFM7QqBLXnHXgaeJw,12596
80
- seleniumbase/fixtures/shared_utils.py,sha256=9VgFvodh0-3GeGbj5wvWOaG4fLpwmgWkrvIKQ89KMvE,5748
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
83
83
  seleniumbase/fixtures/xpath_to_css.py,sha256=lML56k656fElXJ4NJF07r35FjctrbgQkXUotNk7A-as,8876
@@ -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=WScJYz-5UxUEq3LfICmq0tFe_mglWhG9x28KCq4SSUE,22775
95
+ seleniumbase/plugins/driver_manager.py,sha256=x879oEkmHJnWQAaLCoppGya-YDh5_aoKVWXcBSer-do,23406
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=oDKlGtCWyoaDp3qdq-rZFWU7NfBkk5odkG9e3ZqlBug,40698
99
+ seleniumbase/plugins/sb_manager.py,sha256=8vNps3MTcS9XFG5hLYfkIAUI8BpVS7qtww0KpJC1UL4,41329
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
@@ -114,7 +114,7 @@ seleniumbase/translate/portuguese.py,sha256=x3P4qxp56UiI41GoaL7JbUvFRYsgXU1EKjTg
114
114
  seleniumbase/translate/russian.py,sha256=TyN9n0b4GRWDEYnHRGw1rfNAscdDmP3F3Y3aySM3C7s,27978
115
115
  seleniumbase/translate/spanish.py,sha256=hh3xgW1Pq122SHYVvJAxFaXhFrjniOVncVbJbfWqOUM,25528
116
116
  seleniumbase/translate/translator.py,sha256=yfoa4tCAbaD0W3gcbjsoGpNZjJdTY246W9uGuTlh4bw,49436
117
- seleniumbase/undetected/__init__.py,sha256=-4JWNgiUkuaCZWlB9pea7MiVZWiNJs7SICxu4yGD4s8,22074
117
+ seleniumbase/undetected/__init__.py,sha256=OCTExZ-VtAxMiarnpbPXurTTOp2-rBdqH2K7ywlZawk,22275
118
118
  seleniumbase/undetected/cdp.py,sha256=EralLQm8diG5i6EoHFXHIQEc7Uf7PWtzyPH_upS5RIs,4047
119
119
  seleniumbase/undetected/dprocess.py,sha256=WWQ_X_-Q7Lfx1m6oxkYHU0eTIc76Jodph4n1QnK4GEE,1706
120
120
  seleniumbase/undetected/options.py,sha256=SGuz8iqlVPYN7IexNiGauupWF0xP3mqO72-9tgIqeuI,2999
@@ -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.28.0a3.dist-info/LICENSE,sha256=odSYtWibXBnQ1gBg6CnDZ82n8kLF_if5-2nbqnEyD8k,1085
141
- seleniumbase-4.28.0a3.dist-info/METADATA,sha256=53UFjAMxEGijQjBslQ9UjarI2hbolSXES1AzUfM7Fi8,85546
142
- seleniumbase-4.28.0a3.dist-info/WHEEL,sha256=cpQTJ5IWu9CdaPViMhC9YzF8gZuS5-vlfoFihTBC86A,91
143
- seleniumbase-4.28.0a3.dist-info/entry_points.txt,sha256=CNrh2EKNaHYEhO6pP1RJyVLB99LkDDYX7TnUK8xfjqk,623
144
- seleniumbase-4.28.0a3.dist-info/top_level.txt,sha256=4N97aBOQ8ETCnDnokBsWb07lJfTaq3C1ZzYRxvLMxqU,19
145
- seleniumbase-4.28.0a3.dist-info/RECORD,,
140
+ seleniumbase-4.28.2.dist-info/LICENSE,sha256=odSYtWibXBnQ1gBg6CnDZ82n8kLF_if5-2nbqnEyD8k,1085
141
+ seleniumbase-4.28.2.dist-info/METADATA,sha256=4Tzxn1C24HxU7bFYBN93SWfE-YAQPQwqShJcXwDtUlA,85546
142
+ seleniumbase-4.28.2.dist-info/WHEEL,sha256=mguMlWGMX-VHnMpKOjjQidIo1ssRlCFu4a4mBpz1s2M,91
143
+ seleniumbase-4.28.2.dist-info/entry_points.txt,sha256=CNrh2EKNaHYEhO6pP1RJyVLB99LkDDYX7TnUK8xfjqk,623
144
+ seleniumbase-4.28.2.dist-info/top_level.txt,sha256=4N97aBOQ8ETCnDnokBsWb07lJfTaq3C1ZzYRxvLMxqU,19
145
+ seleniumbase-4.28.2.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: setuptools (70.1.0)
2
+ Generator: setuptools (70.1.1)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
5