seleniumbase 4.34.8__py3-none-any.whl → 4.34.9__py3-none-any.whl
Sign up to get free protection for your applications and to get access to all the features.
- seleniumbase/__version__.py +1 -1
- seleniumbase/core/browser_launcher.py +21 -0
- seleniumbase/fixtures/base_case.py +3 -3
- seleniumbase/undetected/__init__.py +24 -14
- seleniumbase/undetected/cdp_driver/cdp_util.py +10 -2
- {seleniumbase-4.34.8.dist-info → seleniumbase-4.34.9.dist-info}/METADATA +1 -1
- {seleniumbase-4.34.8.dist-info → seleniumbase-4.34.9.dist-info}/RECORD +11 -11
- {seleniumbase-4.34.8.dist-info → seleniumbase-4.34.9.dist-info}/LICENSE +0 -0
- {seleniumbase-4.34.8.dist-info → seleniumbase-4.34.9.dist-info}/WHEEL +0 -0
- {seleniumbase-4.34.8.dist-info → seleniumbase-4.34.9.dist-info}/entry_points.txt +0 -0
- {seleniumbase-4.34.8.dist-info → seleniumbase-4.34.9.dist-info}/top_level.txt +0 -0
seleniumbase/__version__.py
CHANGED
@@ -1,2 +1,2 @@
|
|
1
1
|
# seleniumbase package
|
2
|
-
__version__ = "4.34.
|
2
|
+
__version__ = "4.34.9"
|
@@ -1251,6 +1251,10 @@ def _uc_gui_click_captcha(
|
|
1251
1251
|
)
|
1252
1252
|
):
|
1253
1253
|
frame = '[data-testid*="challenge-"] div'
|
1254
|
+
elif driver.is_element_present(
|
1255
|
+
"form.turnstile div#turnstile-widget div:not([class])"
|
1256
|
+
):
|
1257
|
+
frame = "form.turnstile #turnstile-widget div:not([class])"
|
1254
1258
|
elif driver.is_element_present(
|
1255
1259
|
'form div:not([class]):has(input[name*="cf-turn"])'
|
1256
1260
|
):
|
@@ -1291,6 +1295,23 @@ def _uc_gui_click_captcha(
|
|
1291
1295
|
driver.cdp.evaluate(script)
|
1292
1296
|
else:
|
1293
1297
|
driver.execute_script(script)
|
1298
|
+
elif (
|
1299
|
+
driver.is_element_present("form")
|
1300
|
+
and driver.is_element_present(
|
1301
|
+
"form.turnstile #turnstile-widget > div:not([class])"
|
1302
|
+
)
|
1303
|
+
):
|
1304
|
+
script = (
|
1305
|
+
"""var $elements = document.querySelectorAll(
|
1306
|
+
'form.turnstile #turnstile-widget');
|
1307
|
+
var index = 0, length = $elements.length;
|
1308
|
+
for(; index < length; index++){
|
1309
|
+
$elements[index].setAttribute('align', 'left');}"""
|
1310
|
+
)
|
1311
|
+
if __is_cdp_swap_needed(driver):
|
1312
|
+
driver.cdp.evaluate(script)
|
1313
|
+
else:
|
1314
|
+
driver.execute_script(script)
|
1294
1315
|
if not is_in_frame or needs_switch:
|
1295
1316
|
# Currently not in frame (or nested frame outside CF one)
|
1296
1317
|
try:
|
@@ -3256,7 +3256,7 @@ class BaseCase(unittest.TestCase):
|
|
3256
3256
|
html_string = "\n".join(new_lines)
|
3257
3257
|
soup = self.get_beautiful_soup(html_string)
|
3258
3258
|
found_base = False
|
3259
|
-
links = soup.
|
3259
|
+
links = soup.find_all("link")
|
3260
3260
|
href = None
|
3261
3261
|
for link in links:
|
3262
3262
|
if link.get("rel") == ["canonical"] and link.get("href"):
|
@@ -3272,7 +3272,7 @@ class BaseCase(unittest.TestCase):
|
|
3272
3272
|
"<head>", '<head><base href="%s">' % href
|
3273
3273
|
)
|
3274
3274
|
elif not found_base:
|
3275
|
-
bases = soup.
|
3275
|
+
bases = soup.find_all("base")
|
3276
3276
|
for base in bases:
|
3277
3277
|
if base.get("href"):
|
3278
3278
|
href = base.get("href")
|
@@ -3280,7 +3280,7 @@ class BaseCase(unittest.TestCase):
|
|
3280
3280
|
html_string = html_string.replace('base: "."', 'base: "%s"' % href)
|
3281
3281
|
|
3282
3282
|
soup = self.get_beautiful_soup(html_string)
|
3283
|
-
scripts = soup.
|
3283
|
+
scripts = soup.find_all("script")
|
3284
3284
|
for script in scripts:
|
3285
3285
|
if script.get("type") != "application/json":
|
3286
3286
|
html_string = html_string.replace(str(script), "")
|
@@ -452,14 +452,19 @@ class Chrome(selenium.webdriver.chrome.webdriver.WebDriver):
|
|
452
452
|
self.service.start()
|
453
453
|
with suppress(Exception):
|
454
454
|
self.start_session()
|
455
|
+
time.sleep(0.0075)
|
455
456
|
with suppress(Exception):
|
456
|
-
|
457
|
-
self.
|
458
|
-
|
459
|
-
self.
|
460
|
-
|
461
|
-
|
462
|
-
|
457
|
+
for i in range(5):
|
458
|
+
if self.current_url.startswith("chrome-extension://"):
|
459
|
+
self.close()
|
460
|
+
if self.service.is_connectable():
|
461
|
+
self.stop_client()
|
462
|
+
self.service.stop()
|
463
|
+
self.service.start()
|
464
|
+
self.start_session()
|
465
|
+
time.sleep(0.0075)
|
466
|
+
else:
|
467
|
+
break
|
463
468
|
self._is_connected = True
|
464
469
|
|
465
470
|
def disconnect(self):
|
@@ -480,14 +485,19 @@ class Chrome(selenium.webdriver.chrome.webdriver.WebDriver):
|
|
480
485
|
self.service.start()
|
481
486
|
with suppress(Exception):
|
482
487
|
self.start_session()
|
488
|
+
time.sleep(0.0075)
|
483
489
|
with suppress(Exception):
|
484
|
-
|
485
|
-
self.
|
486
|
-
|
487
|
-
self.
|
488
|
-
|
489
|
-
|
490
|
-
|
490
|
+
for i in range(5):
|
491
|
+
if self.current_url.startswith("chrome-extension://"):
|
492
|
+
self.close()
|
493
|
+
if self.service.is_connectable():
|
494
|
+
self.stop_client()
|
495
|
+
self.service.stop()
|
496
|
+
self.service.start()
|
497
|
+
self.start_session()
|
498
|
+
time.sleep(0.0075)
|
499
|
+
else:
|
500
|
+
break
|
491
501
|
self._is_connected = True
|
492
502
|
|
493
503
|
def start_session(self, capabilities=None):
|
@@ -226,7 +226,11 @@ async def start_async(*args, **kwargs) -> Browser:
|
|
226
226
|
binary_location = None
|
227
227
|
if "browser_executable_path" in kwargs:
|
228
228
|
binary_location = kwargs["browser_executable_path"]
|
229
|
-
if
|
229
|
+
if (
|
230
|
+
shared_utils.is_chrome_130_or_newer(binary_location)
|
231
|
+
and "user_data_dir" in kwargs
|
232
|
+
and kwargs["user_data_dir"]
|
233
|
+
):
|
230
234
|
if "headless" in kwargs:
|
231
235
|
headless = kwargs["headless"]
|
232
236
|
decoy_args = kwargs
|
@@ -257,7 +261,11 @@ def start_sync(*args, **kwargs) -> Browser:
|
|
257
261
|
binary_location = None
|
258
262
|
if "browser_executable_path" in kwargs:
|
259
263
|
binary_location = kwargs["browser_executable_path"]
|
260
|
-
if
|
264
|
+
if (
|
265
|
+
shared_utils.is_chrome_130_or_newer(binary_location)
|
266
|
+
and "user_data_dir" in kwargs
|
267
|
+
and kwargs["user_data_dir"]
|
268
|
+
):
|
261
269
|
if "headless" in kwargs:
|
262
270
|
headless = kwargs["headless"]
|
263
271
|
decoy_args = kwargs
|
@@ -3,7 +3,7 @@ sbase/__main__.py,sha256=G0bVB1-DM4PGwQ1KyOupaWCs4ePbChZNNWuX2htim5U,647
|
|
3
3
|
sbase/steps.py,sha256=_WvAjydKqZfTdnZW9LPKkRty-g-lfdUPmLqnZj6ulcs,43013
|
4
4
|
seleniumbase/__init__.py,sha256=OtJh8nGKL4xtZpw8KPqmn7Q6R-86t4cWUDyVF5MbMTo,2398
|
5
5
|
seleniumbase/__main__.py,sha256=dn1p6dgCchmcH1zzTzzQvFwwdQQqnTGH6ULV9m4hv24,654
|
6
|
-
seleniumbase/__version__.py,sha256=
|
6
|
+
seleniumbase/__version__.py,sha256=lYiyjOWgbGT6PKF2swCq_LRy9Qn2s4pgHJi1iNo8Ot4,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=qQF85LoohJBfrPK5ZcPi50v-pWtOrC9qcN1B3Ki_3tY,59401
|
@@ -36,7 +36,7 @@ seleniumbase/console_scripts/sb_print.py,sha256=tNy-bMDgwHJO3bZxMpmo9weSE8uhbH0C
|
|
36
36
|
seleniumbase/console_scripts/sb_recorder.py,sha256=fnHb5-kh11Hit-E9Ha-e4QXzqLcZvtij6mb5qNd4B1Q,11032
|
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=L7pvPQDMoQ8Mh0rrv3xvVxqsaeavdNp9IShfHpn6DP0,234824
|
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
|
@@ -65,7 +65,7 @@ seleniumbase/extensions/disable_csp.zip,sha256=YMifIIgEBiLrEFrS1sfW4Exh4br1V4oK1
|
|
65
65
|
seleniumbase/extensions/recorder.zip,sha256=OOyzF-Ize2cSRu1CqhzSAq5vusI9hqLLd2OIApUHesI,11918
|
66
66
|
seleniumbase/extensions/sbase_ext.zip,sha256=3s1N8zrVaMz8RQEOIoBzC3KDjtmHwVZRvVsX25Odr_s,8175
|
67
67
|
seleniumbase/fixtures/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
68
|
-
seleniumbase/fixtures/base_case.py,sha256=
|
68
|
+
seleniumbase/fixtures/base_case.py,sha256=7fRj9u0zlOwsHpvyG5Oob7yXXWu8kt3sPAAAk4ZBfi8,721002
|
69
69
|
seleniumbase/fixtures/constants.py,sha256=WMrItuNyKq3XVJ64NluLIRc4gJCxDw8K8qXED0b9S2w,13752
|
70
70
|
seleniumbase/fixtures/css_to_xpath.py,sha256=9ouDB1xl4MJ2os6JOgTIAyHKOQfuxtxvXC3O5hSnEKA,1954
|
71
71
|
seleniumbase/fixtures/errors.py,sha256=KyxuEVx_e3MPhVrJfNIa_3ltMpbCFxfy_jxK8RFNTns,555
|
@@ -106,7 +106,7 @@ seleniumbase/translate/portuguese.py,sha256=x3P4qxp56UiI41GoaL7JbUvFRYsgXU1EKjTg
|
|
106
106
|
seleniumbase/translate/russian.py,sha256=TyN9n0b4GRWDEYnHRGw1rfNAscdDmP3F3Y3aySM3C7s,27978
|
107
107
|
seleniumbase/translate/spanish.py,sha256=hh3xgW1Pq122SHYVvJAxFaXhFrjniOVncVbJbfWqOUM,25528
|
108
108
|
seleniumbase/translate/translator.py,sha256=wPhZH6e5NhmebYL1kP2eGxUcVy1gfTb6XCH8ATEPpxE,49238
|
109
|
-
seleniumbase/undetected/__init__.py,sha256=
|
109
|
+
seleniumbase/undetected/__init__.py,sha256=j_5aK0cQrOiPAa8zKKB6bRnOHWb8HD1r-YcVsoGgPYA,24016
|
110
110
|
seleniumbase/undetected/cdp.py,sha256=RLpwZnhUvmK9tgXcZIBBQedwk2q7Jj_EXZkmzI8WUqk,4023
|
111
111
|
seleniumbase/undetected/dprocess.py,sha256=83EV8ZHJWHG1TSUv9JNClBhdgiBXlkCc6mJ--HsoP3k,1681
|
112
112
|
seleniumbase/undetected/options.py,sha256=BoNuwhrG7oOvuLvTwkvsWCF36pMkS1tHCG-XpP4_EkI,3001
|
@@ -116,7 +116,7 @@ seleniumbase/undetected/webelement.py,sha256=_s6evgUkdWJpwOnzX4qR9i796PoVbz3txlz
|
|
116
116
|
seleniumbase/undetected/cdp_driver/__init__.py,sha256=c0TjMwPfVFyoqYOJ7PQ-Jln_L_dpN3ebHyaD-juQoM0,64
|
117
117
|
seleniumbase/undetected/cdp_driver/_contradict.py,sha256=lP4b0h5quAy573ETn_TBbYV889cL1AuPLVInpJ0ZkiU,3183
|
118
118
|
seleniumbase/undetected/cdp_driver/browser.py,sha256=quD0e2aoehXQrs9zxGsobF0kZY11gmJ58Q_JQhheQYg,30144
|
119
|
-
seleniumbase/undetected/cdp_driver/cdp_util.py,sha256=
|
119
|
+
seleniumbase/undetected/cdp_driver/cdp_util.py,sha256=XXpl1tGtbtR5U60Gzq8Lv7pcgpV3un-FLsmGw9lhSnU,17354
|
120
120
|
seleniumbase/undetected/cdp_driver/config.py,sha256=oHFJ3UH0OmLmEGgG5S6SZwbyBs9ZYMsbUJ02QCA7iZc,12044
|
121
121
|
seleniumbase/undetected/cdp_driver/connection.py,sha256=sOTUGjbUqKA2hPvDcRCdqw1VQjVGJs7mbgVvzS7ldtE,23360
|
122
122
|
seleniumbase/undetected/cdp_driver/element.py,sha256=FIC6v7OmumLCT-_vIc3H4oju_oBbaLpWJUJIKm2c_q4,40467
|
@@ -135,9 +135,9 @@ seleniumbase/utilities/selenium_grid/start-grid-hub.bat,sha256=Ftq-GrAKRYH2ssDPr
|
|
135
135
|
seleniumbase/utilities/selenium_grid/start-grid-hub.sh,sha256=KADv0RUHONLL2_I443QFK8PryBpDmKn5Gy0s4o0vDSM,106
|
136
136
|
seleniumbase/utilities/selenium_ide/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
137
137
|
seleniumbase/utilities/selenium_ide/convert_ide.py,sha256=pZFnqEJQEKZPyNFjkLD29s2HPQgCrWW9XJWpCPhWOoM,31691
|
138
|
-
seleniumbase-4.34.
|
139
|
-
seleniumbase-4.34.
|
140
|
-
seleniumbase-4.34.
|
141
|
-
seleniumbase-4.34.
|
142
|
-
seleniumbase-4.34.
|
143
|
-
seleniumbase-4.34.
|
138
|
+
seleniumbase-4.34.9.dist-info/LICENSE,sha256=BRblZsX7HyPUjQmYTiyWr_e9tzWvmR3R4SFclM2R3W0,1085
|
139
|
+
seleniumbase-4.34.9.dist-info/METADATA,sha256=clXFKbRCvsQnCh9H60fDWCbyhuR8oTt1VmdGlaoysAE,86519
|
140
|
+
seleniumbase-4.34.9.dist-info/WHEEL,sha256=In9FTNxeP60KnTkGw7wk6mJPYd_dQSjEZmXdBdMCI-8,91
|
141
|
+
seleniumbase-4.34.9.dist-info/entry_points.txt,sha256=CNrh2EKNaHYEhO6pP1RJyVLB99LkDDYX7TnUK8xfjqk,623
|
142
|
+
seleniumbase-4.34.9.dist-info/top_level.txt,sha256=4N97aBOQ8ETCnDnokBsWb07lJfTaq3C1ZzYRxvLMxqU,19
|
143
|
+
seleniumbase-4.34.9.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|