seleniumbase 4.31.6a4__py3-none-any.whl → 4.32.1__py3-none-any.whl

Sign up to get free protection for your applications and to get access to all the features.
@@ -124,10 +124,13 @@ def Driver(
124
124
  d_width=None, # Set device width
125
125
  d_height=None, # Set device height
126
126
  d_p_r=None, # Set device pixel ratio
127
+ position=None, # Shortcut / Duplicate of "window_position".
128
+ size=None, # Shortcut / Duplicate of "window_size".
127
129
  uc=None, # Shortcut / Duplicate of "undetectable".
128
130
  undetected=None, # Shortcut / Duplicate of "undetectable".
129
131
  uc_cdp=None, # Shortcut / Duplicate of "uc_cdp_events".
130
132
  uc_sub=None, # Shortcut / Duplicate of "uc_subprocess".
133
+ locale=None, # Shortcut / Duplicate of "locale_code".
131
134
  log_cdp=None, # Shortcut / Duplicate of "log_cdp_events".
132
135
  ad_block=None, # Shortcut / Duplicate of "ad_block_on".
133
136
  server=None, # Shortcut / Duplicate of "servername".
@@ -216,10 +219,13 @@ def Driver(
216
219
  d_width (int): Set device width
217
220
  d_height (int): Set device height
218
221
  d_p_r (float): Set device pixel ratio
222
+ position (x,y): Shortcut / Duplicate of "window_position".
223
+ size (w,h): Shortcut / Duplicate of "window_size".
219
224
  uc (bool): Shortcut / Duplicate of "undetectable".
220
225
  undetected (bool): Shortcut / Duplicate of "undetectable".
221
226
  uc_cdp (bool): Shortcut / Duplicate of "uc_cdp_events".
222
227
  uc_sub (bool): Shortcut / Duplicate of "uc_subprocess".
228
+ locale (str): Shortcut / Duplicate of "locale_code".
223
229
  log_cdp (bool): Shortcut / Duplicate of "log_cdp_events".
224
230
  ad_block (bool): Shortcut / Duplicate of "ad_block_on".
225
231
  server (str): Shortcut / Duplicate of "servername".
@@ -433,6 +439,8 @@ def Driver(
433
439
  break
434
440
  count += 1
435
441
  disable_features = d_f
442
+ if window_position is None and position is not None:
443
+ window_position = position
436
444
  w_p = window_position
437
445
  if w_p is None and "--window-position" in arg_join:
438
446
  count = 0
@@ -446,29 +454,31 @@ def Driver(
446
454
  w_p = None
447
455
  break
448
456
  count += 1
449
- window_position = w_p
450
- if window_position:
451
- if window_position.count(",") != 1:
452
- message = (
453
- '\n\n window_position expects an "x,y" string!'
454
- '\n (Your input was: "%s")\n' % window_position
455
- )
456
- raise Exception(message)
457
- window_position = window_position.replace(" ", "")
458
- win_x = None
459
- win_y = None
460
- try:
461
- win_x = int(window_position.split(",")[0])
462
- win_y = int(window_position.split(",")[1])
463
- except Exception:
464
- message = (
465
- '\n\n Expecting integer values for "x,y"!'
466
- '\n (window_position input was: "%s")\n'
467
- % window_position
468
- )
469
- raise Exception(message)
470
- settings.WINDOW_START_X = win_x
471
- settings.WINDOW_START_Y = win_y
457
+ window_position = w_p
458
+ if window_position:
459
+ if window_position.count(",") != 1:
460
+ message = (
461
+ '\n\n window_position expects an "x,y" string!'
462
+ '\n (Your input was: "%s")\n' % window_position
463
+ )
464
+ raise Exception(message)
465
+ window_position = window_position.replace(" ", "")
466
+ win_x = None
467
+ win_y = None
468
+ try:
469
+ win_x = int(window_position.split(",")[0])
470
+ win_y = int(window_position.split(",")[1])
471
+ except Exception:
472
+ message = (
473
+ '\n\n Expecting integer values for "x,y"!'
474
+ '\n (window_position input was: "%s")\n'
475
+ % window_position
476
+ )
477
+ raise Exception(message)
478
+ settings.WINDOW_START_X = win_x
479
+ settings.WINDOW_START_Y = win_y
480
+ if window_size is None and size is not None:
481
+ window_size = size
472
482
  w_s = window_size
473
483
  if w_s is None and "--window-size" in arg_join:
474
484
  count = 0
@@ -482,30 +492,30 @@ def Driver(
482
492
  w_s = None
483
493
  break
484
494
  count += 1
485
- window_size = w_s
486
- if window_size:
487
- if window_size.count(",") != 1:
488
- message = (
489
- '\n\n window_size expects a "width,height" string!'
490
- '\n (Your input was: "%s")\n' % window_size
491
- )
492
- raise Exception(message)
493
- window_size = window_size.replace(" ", "")
494
- width = None
495
- height = None
496
- try:
497
- width = int(window_size.split(",")[0])
498
- height = int(window_size.split(",")[1])
499
- except Exception:
500
- message = (
501
- '\n\n Expecting integer values for "width,height"!'
502
- '\n (window_size input was: "%s")\n' % window_size
503
- )
504
- raise Exception(message)
505
- settings.CHROME_START_WIDTH = width
506
- settings.CHROME_START_HEIGHT = height
507
- settings.HEADLESS_START_WIDTH = width
508
- settings.HEADLESS_START_HEIGHT = height
495
+ window_size = w_s
496
+ if window_size:
497
+ if window_size.count(",") != 1:
498
+ message = (
499
+ '\n\n window_size expects a "width,height" string!'
500
+ '\n (Your input was: "%s")\n' % window_size
501
+ )
502
+ raise Exception(message)
503
+ window_size = window_size.replace(" ", "")
504
+ width = None
505
+ height = None
506
+ try:
507
+ width = int(window_size.split(",")[0])
508
+ height = int(window_size.split(",")[1])
509
+ except Exception:
510
+ message = (
511
+ '\n\n Expecting integer values for "width,height"!'
512
+ '\n (window_size input was: "%s")\n' % window_size
513
+ )
514
+ raise Exception(message)
515
+ settings.CHROME_START_WIDTH = width
516
+ settings.CHROME_START_HEIGHT = height
517
+ settings.HEADLESS_START_WIDTH = width
518
+ settings.HEADLESS_START_HEIGHT = height
509
519
  if agent is None and "--agent" in arg_join:
510
520
  count = 0
511
521
  for arg in sys_argv:
@@ -734,6 +744,8 @@ def Driver(
734
744
  swiftshader = True
735
745
  else:
736
746
  swiftshader = False
747
+ if locale is not None and locale_code is None:
748
+ locale_code = locale
737
749
  if ad_block is not None and ad_block_on is None:
738
750
  ad_block_on = ad_block
739
751
  if ad_block_on is None:
@@ -779,6 +791,83 @@ def Driver(
779
791
  # Launch a web browser
780
792
  from seleniumbase.core import browser_launcher
781
793
 
794
+ # Fix Chrome-130 issues by creating a user-data-dir in advance
795
+ if undetectable and not user_data_dir and browser == "chrome":
796
+ import tempfile
797
+ import time
798
+ user_data_dir = (
799
+ os.path.normpath(tempfile.mkdtemp())
800
+ )
801
+ try:
802
+ decoy_driver = browser_launcher.get_driver(
803
+ browser_name=browser_name,
804
+ headless=False,
805
+ locale_code=locale_code,
806
+ use_grid=use_grid,
807
+ protocol=protocol,
808
+ servername=servername,
809
+ port=port,
810
+ proxy_string=proxy_string,
811
+ proxy_bypass_list=proxy_bypass_list,
812
+ proxy_pac_url=proxy_pac_url,
813
+ multi_proxy=multi_proxy,
814
+ user_agent=user_agent,
815
+ cap_file=cap_file,
816
+ cap_string=cap_string,
817
+ recorder_ext=recorder_ext,
818
+ disable_cookies=disable_cookies,
819
+ disable_js=disable_js,
820
+ disable_csp=disable_csp,
821
+ enable_ws=enable_ws,
822
+ enable_sync=enable_sync,
823
+ use_auto_ext=use_auto_ext,
824
+ undetectable=undetectable,
825
+ uc_cdp_events=uc_cdp_events,
826
+ uc_subprocess=uc_subprocess,
827
+ log_cdp_events=log_cdp_events,
828
+ no_sandbox=no_sandbox,
829
+ disable_gpu=disable_gpu,
830
+ headless1=False,
831
+ headless2=True,
832
+ incognito=incognito,
833
+ guest_mode=guest_mode,
834
+ dark_mode=dark_mode,
835
+ devtools=devtools,
836
+ remote_debug=remote_debug,
837
+ enable_3d_apis=enable_3d_apis,
838
+ swiftshader=swiftshader,
839
+ ad_block_on=ad_block_on,
840
+ host_resolver_rules=host_resolver_rules,
841
+ block_images=block_images,
842
+ do_not_track=do_not_track,
843
+ chromium_arg=chromium_arg,
844
+ firefox_arg=firefox_arg,
845
+ firefox_pref=firefox_pref,
846
+ user_data_dir=user_data_dir,
847
+ extension_zip=extension_zip,
848
+ extension_dir=extension_dir,
849
+ disable_features=disable_features,
850
+ binary_location=binary_location,
851
+ driver_version=driver_version,
852
+ page_load_strategy=page_load_strategy,
853
+ use_wire=use_wire,
854
+ external_pdf=external_pdf,
855
+ test_id=test_id,
856
+ mobile_emulator=is_mobile,
857
+ device_width=d_width,
858
+ device_height=d_height,
859
+ device_pixel_ratio=d_p_r,
860
+ browser=browser_name,
861
+ )
862
+ time.sleep(0.555)
863
+ except Exception:
864
+ pass
865
+ finally:
866
+ try:
867
+ decoy_driver.quit()
868
+ except Exception:
869
+ pass
870
+
782
871
  driver = browser_launcher.get_driver(
783
872
  browser_name=browser_name,
784
873
  headless=headless,
@@ -104,10 +104,13 @@ def SB(
104
104
  disable_ws=None, # Reverse of "enable_ws". (None and False are different)
105
105
  disable_beforeunload=None, # Disable the "beforeunload" event on Chromium.
106
106
  settings_file=None, # A file for overriding default SeleniumBase settings.
107
+ position=None, # Shortcut / Duplicate of "window_position".
108
+ size=None, # Shortcut / Duplicate of "window_size".
107
109
  uc=None, # Shortcut / Duplicate of "undetectable".
108
110
  undetected=None, # Shortcut / Duplicate of "undetectable".
109
111
  uc_cdp=None, # Shortcut / Duplicate of "uc_cdp_events".
110
112
  uc_sub=None, # Shortcut / Duplicate of "uc_subprocess".
113
+ locale=None, # Shortcut / Duplicate of "locale_code".
111
114
  log_cdp=None, # Shortcut / Duplicate of "log_cdp_events".
112
115
  ad_block=None, # Shortcut / Duplicate of "ad_block_on".
113
116
  server=None, # Shortcut / Duplicate of "servername".
@@ -224,10 +227,13 @@ def SB(
224
227
  disable_ws (bool): Reverse of "enable_ws". (None and False are different)
225
228
  disable_beforeunload (bool): Disable the "beforeunload" event on Chromium.
226
229
  settings_file (str): A file for overriding default SeleniumBase settings.
230
+ position (x,y): Shortcut / Duplicate of "window_position".
231
+ size (w,h): Shortcut / Duplicate of "window_size".
227
232
  uc (bool): Shortcut / Duplicate of "undetectable".
228
233
  undetected (bool): Shortcut / Duplicate of "undetectable".
229
234
  uc_cdp (bool): Shortcut / Duplicate of "uc_cdp_events".
230
235
  uc_sub (bool): Shortcut / Duplicate of "uc_subprocess".
236
+ locale (str): Shortcut / Duplicate of "locale_code".
231
237
  log_cdp (bool): Shortcut / Duplicate of "log_cdp_events".
232
238
  ad_block (bool): Shortcut / Duplicate of "ad_block_on".
233
239
  server (str): Shortcut / Duplicate of "servername".
@@ -497,8 +503,13 @@ def SB(
497
503
  break
498
504
  count += 1
499
505
  disable_features = d_f
506
+ if window_position is None and position is not None:
507
+ window_position = position
500
508
  w_p = window_position
501
- if w_p is None and "--window-position" in arg_join:
509
+ if (
510
+ w_p is None
511
+ and ("--window-position" in arg_join or "--position" in arg_join)
512
+ ):
502
513
  count = 0
503
514
  for arg in sys_argv:
504
515
  if arg.startswith("--window-position="):
@@ -511,6 +522,8 @@ def SB(
511
522
  break
512
523
  count += 1
513
524
  window_position = w_p
525
+ if window_size is None and size is not None:
526
+ window_size = size
514
527
  w_s = window_size
515
528
  if w_s is None and "--window-size" in arg_join:
516
529
  count = 0
@@ -890,6 +903,8 @@ def SB(
890
903
  swiftshader = True
891
904
  else:
892
905
  swiftshader = False
906
+ if locale is not None and locale_code is None:
907
+ locale_code = locale
893
908
  if ad_block is not None and ad_block_on is None:
894
909
  ad_block_on = ad_block
895
910
  if ad_block_on is None:
@@ -1197,6 +1212,30 @@ def SB(
1197
1212
  if not sb_config.multi_proxy:
1198
1213
  proxy_helper.remove_proxy_zip_if_present()
1199
1214
  start_time = time.time()
1215
+ saved_headless2 = headless2
1216
+
1217
+ # Fix Chrome-130 issues by creating a user-data-dir in advance
1218
+ if undetectable and not user_data_dir and browser == "chrome":
1219
+ import tempfile
1220
+ user_data_dir = (
1221
+ os.path.normpath(tempfile.mkdtemp())
1222
+ )
1223
+ sb.user_data_dir = user_data_dir
1224
+ sb_config.user_data_dir = user_data_dir
1225
+ try:
1226
+ decoy = sb
1227
+ decoy.headless2 = True
1228
+ decoy.setUp()
1229
+ decoy.sleep(0.555)
1230
+ except Exception:
1231
+ pass
1232
+ finally:
1233
+ try:
1234
+ decoy.tearDown()
1235
+ except Exception:
1236
+ pass
1237
+ sb.headless2 = saved_headless2
1238
+
1200
1239
  sb.setUp()
1201
1240
  test_passed = True # This can change later
1202
1241
  teardown_exception = None
@@ -133,8 +133,11 @@ class Chrome(selenium.webdriver.chrome.webdriver.WebDriver):
133
133
  options = ChromeOptions()
134
134
  try:
135
135
  if hasattr(options, "_session") and options._session is not None:
136
- # Prevent reuse of options
137
- raise RuntimeError("You cannot reuse the ChromeOptions object")
136
+ # Prevent reuse of options.
137
+ # (Probably a port overlap. Quit existing driver and continue.)
138
+ logger.debug("You cannot reuse the ChromeOptions object")
139
+ with suppress(Exception):
140
+ options._session.quit()
138
141
  except AttributeError:
139
142
  pass
140
143
  options._session = self
@@ -441,6 +444,7 @@ class Chrome(selenium.webdriver.chrome.webdriver.WebDriver):
441
444
  if hasattr(self, "service"):
442
445
  with suppress(Exception):
443
446
  self.service.stop()
447
+ self._is_connected = False
444
448
  time.sleep(0.012)
445
449
 
446
450
  def connect(self):
@@ -452,6 +456,7 @@ class Chrome(selenium.webdriver.chrome.webdriver.WebDriver):
452
456
  time.sleep(0.012)
453
457
  with suppress(Exception):
454
458
  self.start_session()
459
+ self._is_connected = True
455
460
  time.sleep(0.012)
456
461
 
457
462
  def start_session(self, capabilities=None):
@@ -165,9 +165,9 @@ class Patcher(object):
165
165
 
166
166
  @staticmethod
167
167
  def force_kill_instances(exe_name):
168
- """ Terminate instances of UC.
169
- :param: executable name to kill, may be a path as well
170
- :return: True on success else False """
168
+ """Terminate instances of UC.
169
+ :param: Executable name to kill. (Can be a path)
170
+ :return: True on success else False."""
171
171
  exe_name = os.path.basename(exe_name)
172
172
  if IS_POSIX:
173
173
  r = os.system("kill -f -9 $(pidof %s)" % exe_name)
@@ -274,8 +274,8 @@ class Patcher(object):
274
274
 
275
275
  def __del__(self):
276
276
  if self._custom_exe_path:
277
- # if the driver binary is specified by user
278
- # we assume it is important enough to not delete it
277
+ # If the driver binary is specified by the user,
278
+ # then assume it is important enough to keep it.
279
279
  return
280
280
  else:
281
281
  timeout = 3
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: seleniumbase
3
- Version: 4.31.6a4
3
+ Version: 4.32.1
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
@@ -59,14 +59,16 @@ Classifier: Topic :: Utilities
59
59
  Requires-Python: >=3.8
60
60
  Description-Content-Type: text/markdown
61
61
  License-File: LICENSE
62
- Requires-Dist: pip>=24.1.2
62
+ Requires-Dist: pip>=24.2
63
63
  Requires-Dist: packaging>=24.1
64
64
  Requires-Dist: wheel>=0.44.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
68
69
  Requires-Dist: filelock>=3.16.1
69
70
  Requires-Dist: fasteners>=0.19
71
+ Requires-Dist: mycdp>=1.0.1
70
72
  Requires-Dist: pynose>=1.5.3
71
73
  Requires-Dist: platformdirs>=4.3.6
72
74
  Requires-Dist: typing-extensions>=4.12.2
@@ -81,12 +83,12 @@ Requires-Dist: tabcompleter>=1.3.3
81
83
  Requires-Dist: pdbp>=1.5.4
82
84
  Requires-Dist: idna==3.10
83
85
  Requires-Dist: chardet==5.2.0
84
- Requires-Dist: charset-normalizer==3.3.2
85
- Requires-Dist: requests==2.31.0
86
+ Requires-Dist: charset-normalizer==3.4.0
87
+ Requires-Dist: requests==2.32.3
86
88
  Requires-Dist: sniffio==1.3.1
87
89
  Requires-Dist: h11==0.14.0
88
90
  Requires-Dist: outcome==1.3.0.post0
89
- Requires-Dist: trio==0.26.2
91
+ Requires-Dist: trio==0.27.0
90
92
  Requires-Dist: trio-websocket==0.11.1
91
93
  Requires-Dist: wsproto==1.2.0
92
94
  Requires-Dist: websocket-client==1.8.0
@@ -110,20 +112,21 @@ Requires-Dist: beautifulsoup4==4.12.3
110
112
  Requires-Dist: pyotp==2.9.0
111
113
  Requires-Dist: markdown-it-py==3.0.0
112
114
  Requires-Dist: mdurl==0.1.2
113
- Requires-Dist: rich==13.9.2
115
+ Requires-Dist: rich==13.9.3
114
116
  Requires-Dist: python-xlib==0.33; platform_system == "Linux"
115
117
  Requires-Dist: pyreadline3>=3.5.3; platform_system == "Windows"
116
118
  Requires-Dist: setuptools~=70.2; python_version < "3.10"
117
119
  Requires-Dist: urllib3<2,>=1.26.20; python_version < "3.10"
118
- Requires-Dist: setuptools>=70.2.0; python_version >= "3.10"
120
+ Requires-Dist: setuptools>=73.0.1; python_version >= "3.10"
119
121
  Requires-Dist: urllib3<2.3.0,>=1.26.20; python_version >= "3.10"
120
122
  Provides-Extra: allure
121
123
  Requires-Dist: allure-pytest>=2.13.5; extra == "allure"
122
124
  Requires-Dist: allure-python-commons>=2.13.5; extra == "allure"
123
125
  Requires-Dist: allure-behave>=2.13.5; extra == "allure"
124
126
  Provides-Extra: coverage
125
- Requires-Dist: coverage>=7.6.1; extra == "coverage"
126
127
  Requires-Dist: pytest-cov>=5.0.0; extra == "coverage"
128
+ Requires-Dist: coverage>=7.6.1; python_version < "3.9" and extra == "coverage"
129
+ Requires-Dist: coverage>=7.6.4; python_version >= "3.9" and extra == "coverage"
127
130
  Provides-Extra: flake8
128
131
  Requires-Dist: mccabe==0.7.0; extra == "flake8"
129
132
  Requires-Dist: flake8==5.0.4; python_version < "3.9" and extra == "flake8"
@@ -135,14 +138,17 @@ Requires-Dist: pycodestyle==2.12.1; python_version >= "3.9" and extra == "flake8
135
138
  Provides-Extra: ipdb
136
139
  Requires-Dist: ipdb==0.13.13; extra == "ipdb"
137
140
  Requires-Dist: ipython==7.34.0; extra == "ipdb"
141
+ Provides-Extra: mss
142
+ Requires-Dist: mss==9.0.2; extra == "mss"
138
143
  Provides-Extra: pdfminer
139
144
  Requires-Dist: pdfminer.six==20240706; extra == "pdfminer"
140
145
  Requires-Dist: cffi==1.17.1; extra == "pdfminer"
141
146
  Requires-Dist: pycparser==2.22; extra == "pdfminer"
142
147
  Requires-Dist: cryptography==39.0.2; python_version < "3.9" and extra == "pdfminer"
143
- Requires-Dist: cryptography==43.0.1; python_version >= "3.9" and extra == "pdfminer"
148
+ Requires-Dist: cryptography==43.0.3; python_version >= "3.9" and extra == "pdfminer"
144
149
  Provides-Extra: pillow
145
- Requires-Dist: Pillow>=10.4.0; extra == "pillow"
150
+ Requires-Dist: Pillow>=10.4.0; python_version < "3.9" and extra == "pillow"
151
+ Requires-Dist: Pillow>=11.0.0; python_version >= "3.9" and extra == "pillow"
146
152
  Provides-Extra: pip-system-certs
147
153
  Requires-Dist: pip-system-certs==4.0; platform_system == "Windows" and extra == "pip-system-certs"
148
154
  Provides-Extra: proxy
@@ -187,30 +193,30 @@ Requires-Dist: zstandard==0.23.0; extra == "selenium-wire"
187
193
  <p align="center">
188
194
  <a href="#python_installation">🚀 Start</a> |
189
195
  <a href="https://github.com/seleniumbase/SeleniumBase/blob/master/help_docs/features_list.md">🏰 Features</a> |
190
- <a href="https://github.com/seleniumbase/SeleniumBase/blob/master/examples/ReadMe.md">📚 Examples</a> |
191
196
  <a href="https://github.com/seleniumbase/SeleniumBase/blob/master/help_docs/customizing_test_runs.md">🎛️ Options</a> |
197
+ <a href="https://github.com/seleniumbase/SeleniumBase/blob/master/examples/ReadMe.md">📚 Examples</a> |
192
198
  <a href="https://github.com/seleniumbase/SeleniumBase/blob/master/seleniumbase/console_scripts/ReadMe.md">🌠 Scripts</a> |
193
199
  <a href="https://github.com/seleniumbase/SeleniumBase/blob/master/help_docs/mobile_testing.md">📱 Mobile</a>
194
200
  <br />
195
201
  <a href="https://github.com/seleniumbase/SeleniumBase/blob/master/help_docs/method_summary.md">📘 APIs</a> |
196
- <a href="https://github.com/seleniumbase/SeleniumBase/blob/master/help_docs/syntax_formats.md"> 🔡 Formats</a> |
197
- <a href="https://github.com/seleniumbase/SeleniumBase/blob/master/examples/example_logs/ReadMe.md">📊 Dashboard</a> |
202
+ <a href="https://github.com/seleniumbase/SeleniumBase/blob/master/help_docs/syntax_formats.md"> 🔠 Formats</a> |
198
203
  <a href="https://github.com/seleniumbase/SeleniumBase/blob/master/help_docs/recorder_mode.md">🔴 Recorder</a> |
204
+ <a href="https://github.com/seleniumbase/SeleniumBase/blob/master/examples/example_logs/ReadMe.md">📊 Dashboard</a> |
199
205
  <a href="https://github.com/seleniumbase/SeleniumBase/blob/master/help_docs/locale_codes.md">🗾 Locales</a> |
200
- <a href="https://github.com/seleniumbase/SeleniumBase/blob/master/seleniumbase/utilities/selenium_grid/ReadMe.md">🌐 Grid</a>
206
+ <a href="https://seleniumbase.io/devices/?url=seleniumbase.com">💻 Farm</a>
201
207
  <br />
202
208
  <a href="https://github.com/seleniumbase/SeleniumBase/blob/master/help_docs/commander.md">🎖️ GUI</a> |
203
209
  <a href="https://seleniumbase.io/demo_page">📰 TestPage</a> |
204
- <a href="https://github.com/seleniumbase/SeleniumBase/blob/master/help_docs/case_plans.md">🗂️ CasePlans</a> |
205
210
  <a href="https://github.com/seleniumbase/SeleniumBase/blob/master/help_docs/uc_mode.md">👤 UC Mode</a> |
206
- <a href="https://github.com/seleniumbase/SeleniumBase/blob/master/examples/master_qa/ReadMe.md">🧬 Hybrid</a> |
207
- <a href="https://seleniumbase.io/devices/?url=seleniumbase.com">💻 Farm</a>
211
+ <a href="https://github.com/seleniumbase/SeleniumBase/blob/master/examples/cdp_mode/ReadMe.md">🐙 CDP Mode</a> |
212
+ <a href="https://github.com/seleniumbase/SeleniumBase/blob/master/examples/chart_maker/ReadMe.md">📶 Charts</a> |
213
+ <a href="https://github.com/seleniumbase/SeleniumBase/blob/master/seleniumbase/utilities/selenium_grid/ReadMe.md">🌐 Grid</a>
208
214
  <br />
209
215
  <a href="https://github.com/seleniumbase/SeleniumBase/blob/master/help_docs/how_it_works.md">👁️ How</a> |
210
216
  <a href="https://github.com/seleniumbase/SeleniumBase/tree/master/examples/migration/raw_selenium">🚝 Migrate</a> |
211
- <a href="https://github.com/seleniumbase/SeleniumBase/tree/master/examples/boilerplates">♻️ Templates</a> |
212
- <a href="https://github.com/seleniumbase/SeleniumBase/tree/master/integrations/node_js">🚉 NodeGUI</a> |
213
- <a href="https://github.com/seleniumbase/SeleniumBase/blob/master/examples/chart_maker/ReadMe.md">📶 Charts</a> |
217
+ <a href="https://github.com/seleniumbase/SeleniumBase/blob/master/help_docs/case_plans.md">🗂️ CasePlans</a> |
218
+ <a href="https://github.com/seleniumbase/SeleniumBase/tree/master/examples/boilerplates">♻️ Template</a> |
219
+ <a href="https://github.com/seleniumbase/SeleniumBase/blob/master/examples/master_qa/ReadMe.md">🧬 Hybrid</a> |
214
220
  <a href="https://github.com/seleniumbase/SeleniumBase/blob/master/examples/tour_examples/ReadMe.md">🚎 Tours</a>
215
221
  <br />
216
222
  <a href="https://github.com/seleniumbase/SeleniumBase/blob/master/integrations/github/workflows/ReadMe.md">🤖 CI/CD</a> |
@@ -3,13 +3,13 @@ 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=iP6NEIVR1Xa1xKckgQqUAD0QbLQSu2Cg6Jc2vViMXNg,48
6
+ seleniumbase/__version__.py,sha256=cYzIAKFVeekXWj7QIqAAqtEF16D8XoXeHdN61rz3esM,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
10
10
  seleniumbase/behave/steps.py,sha256=8-N-NB2tnDsxaP4LSg-uSBgbwZYMS6ZEL1oggO1PCoU,390
11
11
  seleniumbase/common/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
12
- seleniumbase/common/decorators.py,sha256=LJnAgg0RG3kDOFb8tpyq1zjmpv9ks6Tjg8GwgIn1YuY,7633
12
+ seleniumbase/common/decorators.py,sha256=xDW2tlXKOV-3xN8h7hP6iRleenn17tAM1ToPZ-eGQ3Y,7653
13
13
  seleniumbase/common/encryption.py,sha256=IfAuE0hdrd3y-_qAQUWdSOKRGQ4QN24uTOBiQ9Eeq2s,5593
14
14
  seleniumbase/common/exceptions.py,sha256=SbdHOTbg7ycrioWleAVw9kG9vBtDfbYoj3e7ikkYYz0,3257
15
15
  seleniumbase/common/obfuscate.py,sha256=VrwPbVigPH_Jk6ADCk5_miMoq1VK4M9SKnYScDkk-DQ,1204
@@ -25,7 +25,7 @@ seleniumbase/console_scripts/run.py,sha256=t_mpBUIJLBrUtzJ5RQL5y8UVCTm7DhNyS94rH
25
25
  seleniumbase/console_scripts/sb_behave_gui.py,sha256=3Zl7_QQczvkkQW_UuaqYEUlEjiZ6AJzHR9GeNyVVXkc,15147
26
26
  seleniumbase/console_scripts/sb_caseplans.py,sha256=qlmvjQ49bOBE1Q29fVmabimkVibCVr25GNtJhFPTMrc,18145
27
27
  seleniumbase/console_scripts/sb_commander.py,sha256=yqoAK211OE6x5AWL2IAo8WojHtdkVj0AWqfoJ-ewmyo,13329
28
- seleniumbase/console_scripts/sb_install.py,sha256=sgiEWkJwmq0XUBl-Gd7YX3I1bHqyn5KgLWyaZimBkHw,45843
28
+ seleniumbase/console_scripts/sb_install.py,sha256=y84Zk-rcp554kcF_g97Xwl0Rn38pyH9wO5OKHX879RI,45831
29
29
  seleniumbase/console_scripts/sb_mkchart.py,sha256=ep9g-9CSIwaOJKVxhB3xjRQpfsuApyN8-Dr129cNXwQ,10941
30
30
  seleniumbase/console_scripts/sb_mkdir.py,sha256=csqyWGEUdT2slLnQU3p9gnu5qE26TSVi_ZE3wttH_SQ,29778
31
31
  seleniumbase/console_scripts/sb_mkfile.py,sha256=OWYd4yFccmjrd-gNn1t1una-HDRU2_N2-r4Tg3nHsj0,17744
@@ -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=WgZ71cY5gWUcejDClBBpWGgYbZdcLkGGGt0OGgKQLGk,205979
39
+ seleniumbase/core/browser_launcher.py,sha256=pZ1obi3Wiy41YIa8qqnld_UmlCP0rUfpuGf7CXySq_k,214484
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,8 @@ 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_driver.py,sha256=_oC9esOgxhKXssMEzS-3gfNuqevJSr8eZ39ClL4ZuSk,10037
53
+ seleniumbase/core/sb_cdp.py,sha256=QUGB_2IHtH_AbTUVzV0JgdCJindP_ENya-ziZ6uB0Do,32684
54
+ seleniumbase/core/sb_driver.py,sha256=-k4vHwMnuiBIkdVInTtJA-IDLrgQfyMhNxSHMIsjepw,11623
54
55
  seleniumbase/core/session_helper.py,sha256=s9zD3PVZEWVzG2h81cCUskbNWLfdjC_LwwQjKptHCak,558
55
56
  seleniumbase/core/settings_parser.py,sha256=KokVXpCiGZhJ-D4Bo-hizPz5r-iefzWoiTANu9zNaq4,7504
56
57
  seleniumbase/core/style_sheet.py,sha256=tPpJ1xl6Kuw425Z-3Y0OgVRLGXk_ciBDREZjXk_NuPE,11395
@@ -64,14 +65,14 @@ seleniumbase/extensions/disable_csp.zip,sha256=YMifIIgEBiLrEFrS1sfW4Exh4br1V4oK1
64
65
  seleniumbase/extensions/recorder.zip,sha256=OOyzF-Ize2cSRu1CqhzSAq5vusI9hqLLd2OIApUHesI,11918
65
66
  seleniumbase/extensions/sbase_ext.zip,sha256=3s1N8zrVaMz8RQEOIoBzC3KDjtmHwVZRvVsX25Odr_s,8175
66
67
  seleniumbase/fixtures/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
67
- seleniumbase/fixtures/base_case.py,sha256=flDAtIRqatGw-UgKgIj3Gpuow_JU3eqD1HjXkMajAi0,702501
68
- seleniumbase/fixtures/constants.py,sha256=TapuGLdERtvZPGMblVXkNGybr8tj8FMtN3sbJ3ygyoc,13569
68
+ seleniumbase/fixtures/base_case.py,sha256=99pypBh0cqUGjNpZuLoG4N6CsumJj1y_TElesv7Pb7Q,710297
69
+ seleniumbase/fixtures/constants.py,sha256=XYYMpB-ZDI756LvfhSK9RxdqQ_qO9fJVXgBqBYlQNkk,13609
69
70
  seleniumbase/fixtures/css_to_xpath.py,sha256=9ouDB1xl4MJ2os6JOgTIAyHKOQfuxtxvXC3O5hSnEKA,1954
70
71
  seleniumbase/fixtures/errors.py,sha256=KyxuEVx_e3MPhVrJfNIa_3ltMpbCFxfy_jxK8RFNTns,555
71
- seleniumbase/fixtures/js_utils.py,sha256=cYFRazc6iO2tTB5kf3_mW3czMQ8mJ5OSHldx7n31E8E,50940
72
- seleniumbase/fixtures/page_actions.py,sha256=5xYWeTDLs9i1yOs5iWDk17CLoiUU5kRLHlmKRUJ7TcQ,63030
72
+ seleniumbase/fixtures/js_utils.py,sha256=5o4CTLcCyd717lJ_atOYcC6kPRiZFx-LJIlixRrP_cE,51061
73
+ seleniumbase/fixtures/page_actions.py,sha256=fOCb2NB2PpEaE8gpAVu-73VjwLzfwP1R9HsRkix_z6s,66634
73
74
  seleniumbase/fixtures/page_utils.py,sha256=5m7iXpikLs80TJoRO6_gEfXE1AKeQgcH1aFbR8o1C9A,12034
74
- seleniumbase/fixtures/shared_utils.py,sha256=G-M3mTCFsPscR65HTHIiRPBYFlRmBto6ZnV5VKxPk9A,5862
75
+ seleniumbase/fixtures/shared_utils.py,sha256=-EgvsCjZlJtFj_Qdc6r1JfsWwZYfOdWhdVrYKnbjz4c,6625
75
76
  seleniumbase/fixtures/unittest_helper.py,sha256=sfZ92rZeBAn_sF_yQ3I6_I7h3lyU5-cV_UMegBNoEm8,1294
76
77
  seleniumbase/fixtures/words.py,sha256=FOA4mAYvl3EPVpBTvgvK6YwCL8BdlRCmed685kEe7Vg,7827
77
78
  seleniumbase/fixtures/xpath_to_css.py,sha256=lML56k656fElXJ4NJF07r35FjctrbgQkXUotNk7A-as,8876
@@ -85,11 +86,11 @@ seleniumbase/plugins/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hS
85
86
  seleniumbase/plugins/base_plugin.py,sha256=FemdftNhOaTfQIw5bWcJQPPPGQ3P0_sMEI_YYDuzZgU,14972
86
87
  seleniumbase/plugins/basic_test_info.py,sha256=8ov6n417gPbqqvrlT4zrch7l2XcRt-GF2ny6rR9AMWk,2108
87
88
  seleniumbase/plugins/db_reporting_plugin.py,sha256=En09qUCoojrk9-vbcnsoHdSELoGmag2GDIyu3jTiJas,7331
88
- seleniumbase/plugins/driver_manager.py,sha256=uwJ10gcBxvIh9r01dHekYzyxc3nrlI9SGTAftyouPsI,34157
89
+ seleniumbase/plugins/driver_manager.py,sha256=8I2g4oxX63qQi9DQaek2RSrlcQbKcPu2wmTPeLTVk2Q,37521
89
90
  seleniumbase/plugins/page_source.py,sha256=loTnXxOj4kxEukuTZEiGyvKBhY3KDVDMnNlHHheTBDE,1889
90
91
  seleniumbase/plugins/pytest_plugin.py,sha256=Up96HY6q3hcPo4LQoEcKqt1hm2OmY5GZz_nMXTqDSXQ,97185
91
92
  seleniumbase/plugins/s3_logging_plugin.py,sha256=WDfertQgGOW_SRJpFMaekYD6vBVW9VO62POtXXy2HCM,2319
92
- seleniumbase/plugins/sb_manager.py,sha256=RbodMQtH2JACFpTYL5tayCRMRrpUDIL04b0Y5GdLBKI,53672
93
+ seleniumbase/plugins/sb_manager.py,sha256=sqLsIqYjelQoYk2ziHcycuTmZq1dwiv8G4gLNEx_fIo,55031
93
94
  seleniumbase/plugins/screen_shots.py,sha256=1hrXw-hzuZ1BR6Yh7AyWX2ABnvnP73-RCbwdz958gj4,1127
94
95
  seleniumbase/plugins/selenium_plugin.py,sha256=GhGW2ATy2kM7UH7NrZ2je402nN2LMlVHpM-yxlU3I9E,59069
95
96
  seleniumbase/resources/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -105,11 +106,11 @@ seleniumbase/translate/portuguese.py,sha256=x3P4qxp56UiI41GoaL7JbUvFRYsgXU1EKjTg
105
106
  seleniumbase/translate/russian.py,sha256=TyN9n0b4GRWDEYnHRGw1rfNAscdDmP3F3Y3aySM3C7s,27978
106
107
  seleniumbase/translate/spanish.py,sha256=hh3xgW1Pq122SHYVvJAxFaXhFrjniOVncVbJbfWqOUM,25528
107
108
  seleniumbase/translate/translator.py,sha256=wPhZH6e5NhmebYL1kP2eGxUcVy1gfTb6XCH8ATEPpxE,49238
108
- seleniumbase/undetected/__init__.py,sha256=82W0QApYJ66iwUNLVBK4ixpPa2ri88CuxE3X7fO0284,21896
109
+ seleniumbase/undetected/__init__.py,sha256=CkVcuzZwwGU6YqEwlsV5yLIr2CWjQo9f_AOHBIfJ6Rs,22135
109
110
  seleniumbase/undetected/cdp.py,sha256=EralLQm8diG5i6EoHFXHIQEc7Uf7PWtzyPH_upS5RIs,4047
110
111
  seleniumbase/undetected/dprocess.py,sha256=VLwyLWXSg-6GkeKpAQcTXLRmuBb0oEdku3_qgMifuwY,1705
111
112
  seleniumbase/undetected/options.py,sha256=jc6Km-gZePOemnolD7UF7dDXpxmRtAE2XDraLUdaIFE,2968
112
- seleniumbase/undetected/patcher.py,sha256=v_Oz5yOuwav2lofJbhvtZ1vKIMvNa4hnHaLLSrEDX0c,10854
113
+ seleniumbase/undetected/patcher.py,sha256=GqNqUwqDDFZg-Y3O6JOyFoOGhHN0r5PV46Mc9b9_BP0,10849
113
114
  seleniumbase/undetected/reactor.py,sha256=UT1pEnGaTPZT7-0-xKROk9_eWDZueGzSUrCksc22nyA,2883
114
115
  seleniumbase/undetected/webelement.py,sha256=_s6evgUkdWJpwOnzX4qR9i796PoVbz3txlzHlOBJ4BE,1370
115
116
  seleniumbase/utilities/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -126,9 +127,9 @@ seleniumbase/utilities/selenium_grid/start-grid-hub.bat,sha256=Ftq-GrAKRYH2ssDPr
126
127
  seleniumbase/utilities/selenium_grid/start-grid-hub.sh,sha256=KADv0RUHONLL2_I443QFK8PryBpDmKn5Gy0s4o0vDSM,106
127
128
  seleniumbase/utilities/selenium_ide/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
128
129
  seleniumbase/utilities/selenium_ide/convert_ide.py,sha256=pZFnqEJQEKZPyNFjkLD29s2HPQgCrWW9XJWpCPhWOoM,31691
129
- seleniumbase-4.31.6a4.dist-info/LICENSE,sha256=odSYtWibXBnQ1gBg6CnDZ82n8kLF_if5-2nbqnEyD8k,1085
130
- seleniumbase-4.31.6a4.dist-info/METADATA,sha256=yOkhKdH0cUVe7Ce-oIgvTDv6MaZGKymFsIcaVDFhcns,85317
131
- seleniumbase-4.31.6a4.dist-info/WHEEL,sha256=GV9aMThwP_4oNCtvEC2ec3qUYutgWeAzklro_0m4WJQ,91
132
- seleniumbase-4.31.6a4.dist-info/entry_points.txt,sha256=CNrh2EKNaHYEhO6pP1RJyVLB99LkDDYX7TnUK8xfjqk,623
133
- seleniumbase-4.31.6a4.dist-info/top_level.txt,sha256=4N97aBOQ8ETCnDnokBsWb07lJfTaq3C1ZzYRxvLMxqU,19
134
- seleniumbase-4.31.6a4.dist-info/RECORD,,
130
+ seleniumbase-4.32.1.dist-info/LICENSE,sha256=odSYtWibXBnQ1gBg6CnDZ82n8kLF_if5-2nbqnEyD8k,1085
131
+ seleniumbase-4.32.1.dist-info/METADATA,sha256=SUrZ0kIbJdzcvxRPEXDPW9QxjLEXF8w3A4G3vz8oDiw,85653
132
+ seleniumbase-4.32.1.dist-info/WHEEL,sha256=OVMc5UfuAQiSplgO0_WdW7vXVGAt9Hdd6qtN4HotdyA,91
133
+ seleniumbase-4.32.1.dist-info/entry_points.txt,sha256=CNrh2EKNaHYEhO6pP1RJyVLB99LkDDYX7TnUK8xfjqk,623
134
+ seleniumbase-4.32.1.dist-info/top_level.txt,sha256=4N97aBOQ8ETCnDnokBsWb07lJfTaq3C1ZzYRxvLMxqU,19
135
+ seleniumbase-4.32.1.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: setuptools (75.1.0)
2
+ Generator: setuptools (75.2.0)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
5