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.
- seleniumbase/__version__.py +1 -1
- seleniumbase/common/decorators.py +8 -7
- seleniumbase/console_scripts/sb_install.py +4 -4
- seleniumbase/core/browser_launcher.py +252 -44
- seleniumbase/core/sb_cdp.py +898 -0
- seleniumbase/core/sb_driver.py +44 -0
- seleniumbase/fixtures/base_case.py +208 -6
- seleniumbase/fixtures/constants.py +1 -0
- seleniumbase/fixtures/js_utils.py +4 -0
- seleniumbase/fixtures/page_actions.py +106 -0
- seleniumbase/fixtures/shared_utils.py +26 -0
- seleniumbase/plugins/driver_manager.py +136 -47
- seleniumbase/plugins/sb_manager.py +40 -1
- seleniumbase/undetected/__init__.py +2 -0
- seleniumbase/undetected/patcher.py +5 -5
- {seleniumbase-4.31.6a4.dist-info → seleniumbase-4.32.0.dist-info}/METADATA +26 -20
- {seleniumbase-4.31.6a4.dist-info → seleniumbase-4.32.0.dist-info}/RECORD +21 -20
- {seleniumbase-4.31.6a4.dist-info → seleniumbase-4.32.0.dist-info}/WHEEL +1 -1
- {seleniumbase-4.31.6a4.dist-info → seleniumbase-4.32.0.dist-info}/LICENSE +0 -0
- {seleniumbase-4.31.6a4.dist-info → seleniumbase-4.32.0.dist-info}/entry_points.txt +0 -0
- {seleniumbase-4.31.6a4.dist-info → seleniumbase-4.32.0.dist-info}/top_level.txt +0 -0
@@ -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
|
-
|
450
|
-
|
451
|
-
|
452
|
-
|
453
|
-
|
454
|
-
|
455
|
-
|
456
|
-
|
457
|
-
|
458
|
-
|
459
|
-
|
460
|
-
|
461
|
-
|
462
|
-
|
463
|
-
|
464
|
-
|
465
|
-
|
466
|
-
|
467
|
-
|
468
|
-
|
469
|
-
|
470
|
-
|
471
|
-
|
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
|
-
|
486
|
-
|
487
|
-
|
488
|
-
|
489
|
-
|
490
|
-
|
491
|
-
|
492
|
-
|
493
|
-
|
494
|
-
|
495
|
-
|
496
|
-
|
497
|
-
|
498
|
-
|
499
|
-
|
500
|
-
|
501
|
-
|
502
|
-
|
503
|
-
|
504
|
-
|
505
|
-
|
506
|
-
|
507
|
-
|
508
|
-
|
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
|
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
|
-
"""
|
169
|
-
:param:
|
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
|
-
#
|
278
|
-
#
|
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.
|
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.
|
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.
|
85
|
-
Requires-Dist: requests==2.
|
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.
|
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.
|
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>=
|
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.
|
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">
|
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://
|
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/
|
207
|
-
<a href="https://
|
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/
|
212
|
-
<a href="https://github.com/seleniumbase/SeleniumBase/tree/master/
|
213
|
-
<a href="https://github.com/seleniumbase/SeleniumBase/blob/master/examples/
|
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=
|
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=
|
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=
|
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=
|
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/
|
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=
|
68
|
-
seleniumbase/fixtures/constants.py,sha256=
|
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=
|
72
|
-
seleniumbase/fixtures/page_actions.py,sha256=
|
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
|
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=
|
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=
|
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=
|
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=
|
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.
|
130
|
-
seleniumbase-4.
|
131
|
-
seleniumbase-4.
|
132
|
-
seleniumbase-4.
|
133
|
-
seleniumbase-4.
|
134
|
-
seleniumbase-4.
|
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,,
|
File without changes
|
File without changes
|
File without changes
|