seleniumbase 4.31.6a4__py3-none-any.whl → 4.32.0__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.
@@ -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
@@ -441,6 +441,7 @@ class Chrome(selenium.webdriver.chrome.webdriver.WebDriver):
441
441
  if hasattr(self, "service"):
442
442
  with suppress(Exception):
443
443
  self.service.stop()
444
+ self._is_connected = False
444
445
  time.sleep(0.012)
445
446
 
446
447
  def connect(self):
@@ -452,6 +453,7 @@ class Chrome(selenium.webdriver.chrome.webdriver.WebDriver):
452
453
  time.sleep(0.012)
453
454
  with suppress(Exception):
454
455
  self.start_session()
456
+ self._is_connected = True
455
457
  time.sleep(0.012)
456
458
 
457
459
  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.0
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=2MOWGUj31Rmy7cgI4NkXO-1JQ8tVPWJuE5Uaox9UzEU,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=tP5p_EGqNcxa9icmEaGL90wkExhSBG5HffIrCmdEULM,214543
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=DM4qLtVTnWtyjQxzlHNQogrdFAQ0o6ezpc5cT8BrF5s,21971
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.0.dist-info/LICENSE,sha256=odSYtWibXBnQ1gBg6CnDZ82n8kLF_if5-2nbqnEyD8k,1085
131
+ seleniumbase-4.32.0.dist-info/METADATA,sha256=80Uen7n631jzckzndYAbj1wGISIBEVa14J8XhzB1css,85653
132
+ seleniumbase-4.32.0.dist-info/WHEEL,sha256=OVMc5UfuAQiSplgO0_WdW7vXVGAt9Hdd6qtN4HotdyA,91
133
+ seleniumbase-4.32.0.dist-info/entry_points.txt,sha256=CNrh2EKNaHYEhO6pP1RJyVLB99LkDDYX7TnUK8xfjqk,623
134
+ seleniumbase-4.32.0.dist-info/top_level.txt,sha256=4N97aBOQ8ETCnDnokBsWb07lJfTaq3C1ZzYRxvLMxqU,19
135
+ seleniumbase-4.32.0.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