seleniumbase 4.37.7__py3-none-any.whl → 4.37.8__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/core/browser_launcher.py +4 -0
- seleniumbase/plugins/sb_manager.py +4 -2
- seleniumbase/undetected/cdp_driver/browser.py +50 -75
- seleniumbase/undetected/cdp_driver/cdp_util.py +5 -0
- seleniumbase/undetected/cdp_driver/tab.py +15 -1
- {seleniumbase-4.37.7.dist-info → seleniumbase-4.37.8.dist-info}/METADATA +5 -4
- {seleniumbase-4.37.7.dist-info → seleniumbase-4.37.8.dist-info}/RECORD +12 -12
- {seleniumbase-4.37.7.dist-info → seleniumbase-4.37.8.dist-info}/WHEEL +1 -1
- {seleniumbase-4.37.7.dist-info → seleniumbase-4.37.8.dist-info}/entry_points.txt +0 -0
- {seleniumbase-4.37.7.dist-info → seleniumbase-4.37.8.dist-info}/licenses/LICENSE +0 -0
- {seleniumbase-4.37.7.dist-info → seleniumbase-4.37.8.dist-info}/top_level.txt +0 -0
seleniumbase/__version__.py
CHANGED
@@ -1,2 +1,2 @@
|
|
1
1
|
# seleniumbase package
|
2
|
-
__version__ = "4.37.
|
2
|
+
__version__ = "4.37.8"
|
@@ -546,12 +546,15 @@ def uc_open_with_cdp_mode(driver, url=None):
|
|
546
546
|
headless = False
|
547
547
|
headed = None
|
548
548
|
xvfb = None
|
549
|
+
binary_location = None
|
549
550
|
if hasattr(sb_config, "headless"):
|
550
551
|
headless = sb_config.headless
|
551
552
|
if hasattr(sb_config, "headed"):
|
552
553
|
headed = sb_config.headed
|
553
554
|
if hasattr(sb_config, "xvfb"):
|
554
555
|
xvfb = sb_config.xvfb
|
556
|
+
if hasattr(sb_config, "binary_location"):
|
557
|
+
binary_location = sb_config.binary_location
|
555
558
|
|
556
559
|
loop = asyncio.new_event_loop()
|
557
560
|
asyncio.set_event_loop(loop)
|
@@ -562,6 +565,7 @@ def uc_open_with_cdp_mode(driver, url=None):
|
|
562
565
|
headless=headless,
|
563
566
|
headed=headed,
|
564
567
|
xvfb=xvfb,
|
568
|
+
browser_executable_path=binary_location,
|
565
569
|
)
|
566
570
|
)
|
567
571
|
loop.run_until_complete(driver.cdp_base.wait(0))
|
@@ -1234,7 +1234,8 @@ def SB(
|
|
1234
1234
|
sb._has_failure = False # This may change
|
1235
1235
|
|
1236
1236
|
with suppress(Exception):
|
1237
|
-
stack_base = traceback.format_stack()[0].split(
|
1237
|
+
stack_base = traceback.format_stack()[0].split("with SB(")[0]
|
1238
|
+
stack_base = stack_base.split(os.sep)[-1]
|
1238
1239
|
test_base = stack_base.split(", in ")[0]
|
1239
1240
|
filename = test_base.split('"')[0]
|
1240
1241
|
methodname = ".line_" + test_base.split(", line ")[-1]
|
@@ -1251,7 +1252,8 @@ def SB(
|
|
1251
1252
|
c1 = colorama.Fore.GREEN
|
1252
1253
|
b1 = colorama.Style.BRIGHT
|
1253
1254
|
cr = colorama.Style.RESET_ALL
|
1254
|
-
stack_base = traceback.format_stack()[0].split(
|
1255
|
+
stack_base = traceback.format_stack()[0].split("with SB(")[0]
|
1256
|
+
stack_base = stack_base.split(os.sep)[-1]
|
1255
1257
|
test_name = stack_base.split(", in ")[0].replace('", line ', ":")
|
1256
1258
|
test_name += ":SB"
|
1257
1259
|
start_text = "=== {%s} starts ===" % test_name
|
@@ -46,9 +46,8 @@ def deconstruct_browser():
|
|
46
46
|
logger.debug(
|
47
47
|
"Problem removing data dir %s\n"
|
48
48
|
"Consider checking whether it's there "
|
49
|
-
"and remove it by hand\nerror: %s"
|
50
|
-
_.config.user_data_dir,
|
51
|
-
e,
|
49
|
+
"and remove it by hand\nerror: %s"
|
50
|
+
% (_.config.user_data_dir, e)
|
52
51
|
)
|
53
52
|
break
|
54
53
|
time.sleep(0.15)
|
@@ -190,7 +189,7 @@ class Browser:
|
|
190
189
|
|
191
190
|
sleep = wait
|
192
191
|
"""Alias for wait"""
|
193
|
-
def _handle_target_update(
|
192
|
+
async def _handle_target_update(
|
194
193
|
self,
|
195
194
|
event: Union[
|
196
195
|
cdp.target.TargetInfoChanged,
|
@@ -224,21 +223,21 @@ class Browser:
|
|
224
223
|
current_tab.target = target_info
|
225
224
|
elif isinstance(event, cdp.target.TargetCreated):
|
226
225
|
target_info: cdp.target.TargetInfo = event.target_info
|
227
|
-
|
228
|
-
|
229
|
-
|
230
|
-
|
231
|
-
f"ws://{self.config.host}:{self.config.port}"
|
232
|
-
f"/devtools/{target_info.type_ or 'page'}"
|
233
|
-
f"/{target_info.target_id}"
|
234
|
-
),
|
235
|
-
target=target_info,
|
236
|
-
browser=self,
|
237
|
-
)
|
238
|
-
self.targets.append(new_target)
|
239
|
-
logger.debug(
|
240
|
-
"Target #%d created => %s", len(self.targets), new_target
|
226
|
+
websocket_url = (
|
227
|
+
f"ws://{self.config.host}:{self.config.port}"
|
228
|
+
f"/devtools/{target_info.type_ or 'page'}"
|
229
|
+
f"/{target_info.target_id}"
|
241
230
|
)
|
231
|
+
async with tab.Tab(
|
232
|
+
websocket_url=websocket_url,
|
233
|
+
target=target_info,
|
234
|
+
browser=self
|
235
|
+
) as new_target:
|
236
|
+
self.targets.append(new_target)
|
237
|
+
logger.debug(
|
238
|
+
"Target #%d created => %s"
|
239
|
+
% (len(self.targets), new_target)
|
240
|
+
)
|
242
241
|
elif isinstance(event, cdp.target.TargetDestroyed):
|
243
242
|
current_tab = next(
|
244
243
|
filter(
|
@@ -287,62 +286,42 @@ class Browser:
|
|
287
286
|
connection: tab.Tab = next(
|
288
287
|
filter(lambda item: item.type_ == "page", self.targets)
|
289
288
|
)
|
290
|
-
|
291
|
-
|
292
|
-
|
293
|
-
|
294
|
-
|
295
|
-
|
296
|
-
|
297
|
-
|
298
|
-
|
299
|
-
and sb_config._cdp_platform
|
300
|
-
):
|
301
|
-
pass
|
302
|
-
else:
|
303
|
-
await connection.set_locale(sb_config._cdp_locale)
|
304
|
-
if hasattr(sb_config, "_cdp_timezone") and sb_config._cdp_timezone:
|
305
|
-
await connection.send(cdp.page.navigate("about:blank"))
|
306
|
-
await connection.set_timezone(sb_config._cdp_timezone)
|
289
|
+
_cdp_timezone = None
|
290
|
+
_cdp_user_agent = ""
|
291
|
+
_cdp_locale = None
|
292
|
+
_cdp_platform = None
|
293
|
+
_cdp_geolocation = None
|
294
|
+
if (
|
295
|
+
hasattr(sb_config, "_cdp_timezone") and sb_config._cdp_timezone
|
296
|
+
):
|
297
|
+
_cdp_timezone = sb_config._cdp_timezone
|
307
298
|
if (
|
308
299
|
hasattr(sb_config, "_cdp_user_agent")
|
309
300
|
and sb_config._cdp_user_agent
|
310
301
|
):
|
311
|
-
|
312
|
-
|
313
|
-
|
314
|
-
|
315
|
-
|
316
|
-
and sb_config._cdp_platform
|
317
|
-
):
|
318
|
-
_cdp_platform = sb_config._cdp_platform
|
319
|
-
await connection.set_user_agent(
|
320
|
-
sb_config._cdp_user_agent,
|
321
|
-
sb_config._cdp_locale,
|
322
|
-
_cdp_platform,
|
323
|
-
)
|
324
|
-
else:
|
325
|
-
await connection.set_user_agent(sb_config._cdp_user_agent)
|
326
|
-
elif (
|
327
|
-
hasattr(sb_config, "_cdp_platform") and sb_config._cdp_platform
|
328
|
-
):
|
329
|
-
await connection.send(cdp.page.navigate("about:blank"))
|
330
|
-
if hasattr(sb_config, "_cdp_locale") and sb_config._cdp_locale:
|
331
|
-
_cdp_platform = sb_config._cdp_platform
|
332
|
-
await connection.set_user_agent(
|
333
|
-
accept_language=sb_config._cdp_locale,
|
334
|
-
platform=_cdp_platform,
|
335
|
-
)
|
336
|
-
else:
|
337
|
-
await connection.set_user_agent(
|
338
|
-
platform=sb_config._cdp_platform
|
339
|
-
)
|
302
|
+
_cdp_user_agent = sb_config._cdp_user_agent
|
303
|
+
if hasattr(sb_config, "_cdp_locale") and sb_config._cdp_locale:
|
304
|
+
_cdp_locale = sb_config._cdp_locale
|
305
|
+
if hasattr(sb_config, "_cdp_platform") and sb_config._cdp_platform:
|
306
|
+
_cdp_platform = sb_config._cdp_platform
|
340
307
|
if (
|
341
308
|
hasattr(sb_config, "_cdp_geolocation")
|
342
309
|
and sb_config._cdp_geolocation
|
343
310
|
):
|
311
|
+
_cdp_geolocation = sb_config._cdp_geolocation
|
312
|
+
if _cdp_timezone:
|
313
|
+
await connection.send(cdp.page.navigate("about:blank"))
|
314
|
+
await connection.set_timezone(_cdp_timezone)
|
315
|
+
if _cdp_user_agent or _cdp_locale or _cdp_platform:
|
316
|
+
await connection.send(cdp.page.navigate("about:blank"))
|
317
|
+
await connection.set_user_agent(
|
318
|
+
user_agent=_cdp_user_agent,
|
319
|
+
accept_language=_cdp_locale,
|
320
|
+
platform=_cdp_platform,
|
321
|
+
)
|
322
|
+
if _cdp_geolocation:
|
344
323
|
await connection.send(cdp.page.navigate("about:blank"))
|
345
|
-
await connection.set_geolocation(
|
324
|
+
await connection.set_geolocation(_cdp_geolocation)
|
346
325
|
# Use the tab to navigate to new url
|
347
326
|
frame_id, loader_id, *_ = await connection.send(
|
348
327
|
cdp.page.navigate(url)
|
@@ -376,8 +355,8 @@ class Browser:
|
|
376
355
|
self.config.port = util.free_port()
|
377
356
|
if not connect_existing:
|
378
357
|
logger.debug(
|
379
|
-
"BROWSER EXECUTABLE PATH: %s"
|
380
|
-
self.config.browser_executable_path,
|
358
|
+
"BROWSER EXECUTABLE PATH: %s"
|
359
|
+
% self.config.browser_executable_path,
|
381
360
|
)
|
382
361
|
if not pathlib.Path(self.config.browser_executable_path).exists():
|
383
362
|
raise FileNotFoundError(
|
@@ -782,10 +761,8 @@ class CookieJar:
|
|
782
761
|
for cookie in cookies:
|
783
762
|
for match in pattern.finditer(str(cookie.__dict__)):
|
784
763
|
logger.debug(
|
785
|
-
"Saved cookie for matching pattern '%s' => (%s: %s)"
|
786
|
-
pattern.pattern,
|
787
|
-
cookie.name,
|
788
|
-
cookie.value,
|
764
|
+
"Saved cookie for matching pattern '%s' => (%s: %s)"
|
765
|
+
% (pattern.pattern, cookie.name, cookie.value)
|
789
766
|
)
|
790
767
|
included_cookies.append(cookie)
|
791
768
|
break
|
@@ -822,10 +799,8 @@ class CookieJar:
|
|
822
799
|
for match in pattern.finditer(str(cookie.__dict__)):
|
823
800
|
included_cookies.append(cookie)
|
824
801
|
logger.debug(
|
825
|
-
"Loaded cookie for matching pattern '%s' => (%s: %s)"
|
826
|
-
pattern.pattern,
|
827
|
-
cookie.name,
|
828
|
-
cookie.value,
|
802
|
+
"Loaded cookie for matching pattern '%s' => (%s: %s)"
|
803
|
+
% (pattern.pattern, cookie.name, cookie.value)
|
829
804
|
)
|
830
805
|
break
|
831
806
|
await connection.send(cdp.network.set_cookies(included_cookies))
|
@@ -325,6 +325,11 @@ async def start(
|
|
325
325
|
ad_block_dir = os.path.join(DOWNLOADS_FOLDER, "ad_block")
|
326
326
|
__unzip_to_new_folder(ad_block_zip, ad_block_dir)
|
327
327
|
extension_dir = __add_chrome_ext_dir(extension_dir, ad_block_dir)
|
328
|
+
if (
|
329
|
+
"binary_location" in kwargs
|
330
|
+
and not browser_executable_path
|
331
|
+
):
|
332
|
+
browser_executable_path = kwargs["binary_location"]
|
328
333
|
if not config:
|
329
334
|
config = Config(
|
330
335
|
user_data_dir,
|
@@ -6,6 +6,7 @@ import logging
|
|
6
6
|
import pathlib
|
7
7
|
import urllib.parse
|
8
8
|
import warnings
|
9
|
+
from seleniumbase import config as sb_config
|
9
10
|
from typing import Dict, List, Union, Optional, Tuple
|
10
11
|
from . import browser as cdp_browser
|
11
12
|
from . import element
|
@@ -137,6 +138,14 @@ class Tab(Connection):
|
|
137
138
|
self._dom = None
|
138
139
|
self._window_id = None
|
139
140
|
|
141
|
+
async def __aenter__(self):
|
142
|
+
return self
|
143
|
+
|
144
|
+
async def __aexit__(self, exc_type, exc_val, exc_tb):
|
145
|
+
await self.aclose()
|
146
|
+
if exc_type and exc_val:
|
147
|
+
raise exc_type(exc_val)
|
148
|
+
|
140
149
|
@property
|
141
150
|
def inspector_url(self):
|
142
151
|
"""
|
@@ -348,7 +357,12 @@ class Tab(Connection):
|
|
348
357
|
if new_window and not new_tab:
|
349
358
|
new_tab = True
|
350
359
|
if new_tab:
|
351
|
-
|
360
|
+
if hasattr(sb_config, "incognito") and sb_config.incognito:
|
361
|
+
return await self.browser.get(
|
362
|
+
url, new_tab=False, new_window=True
|
363
|
+
)
|
364
|
+
else:
|
365
|
+
return await self.browser.get(url, new_tab, new_window)
|
352
366
|
else:
|
353
367
|
frame_id, loader_id, *_ = await self.send(cdp.page.navigate(url))
|
354
368
|
await self
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.4
|
2
2
|
Name: seleniumbase
|
3
|
-
Version: 4.37.
|
3
|
+
Version: 4.37.8
|
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,13 +59,14 @@ 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>=25.0.1
|
62
|
+
Requires-Dist: pip>=25.0.1; python_version < "3.9"
|
63
|
+
Requires-Dist: pip>=25.1; python_version >= "3.9"
|
63
64
|
Requires-Dist: packaging>=25.0
|
64
65
|
Requires-Dist: setuptools~=70.2; python_version < "3.10"
|
65
|
-
Requires-Dist: setuptools>=
|
66
|
+
Requires-Dist: setuptools>=80.0.0; python_version >= "3.10"
|
66
67
|
Requires-Dist: wheel>=0.45.1
|
67
68
|
Requires-Dist: attrs>=25.3.0
|
68
|
-
Requires-Dist: certifi>=2025.
|
69
|
+
Requires-Dist: certifi>=2025.4.26
|
69
70
|
Requires-Dist: exceptiongroup>=1.2.2
|
70
71
|
Requires-Dist: websockets~=13.1; python_version < "3.9"
|
71
72
|
Requires-Dist: websockets>=15.0.1; python_version >= "3.9"
|
@@ -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=JFEY9P5QJqsa1M6ghzLMH2eIPQyh85iglCaQwg8Y8z4,2498
|
5
5
|
seleniumbase/__main__.py,sha256=dn1p6dgCchmcH1zzTzzQvFwwdQQqnTGH6ULV9m4hv24,654
|
6
|
-
seleniumbase/__version__.py,sha256=
|
6
|
+
seleniumbase/__version__.py,sha256=V58urCObAfon7OXV-6PlzXfY_nvnJAlueUECpoey6BA,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=Jy-F1k45yxSW4-Io403zEOgoGgZg2ZLsHLYSh7VTKgs,239965
|
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
|
@@ -90,7 +90,7 @@ seleniumbase/plugins/driver_manager.py,sha256=1l4fxISvGV62gfDxp3yfYE2zz4WKJFLE0t
|
|
90
90
|
seleniumbase/plugins/page_source.py,sha256=loTnXxOj4kxEukuTZEiGyvKBhY3KDVDMnNlHHheTBDE,1889
|
91
91
|
seleniumbase/plugins/pytest_plugin.py,sha256=952AIyaH-PdmNksoeXjzhXxoc8Z53yV-WPjlrHhp2OM,108382
|
92
92
|
seleniumbase/plugins/s3_logging_plugin.py,sha256=WDfertQgGOW_SRJpFMaekYD6vBVW9VO62POtXXy2HCM,2319
|
93
|
-
seleniumbase/plugins/sb_manager.py,sha256=
|
93
|
+
seleniumbase/plugins/sb_manager.py,sha256=LkqdnOUAVY0d6Pa2k0jRHGtLkMUTrM5-2FF5nqnORtY,57636
|
94
94
|
seleniumbase/plugins/screen_shots.py,sha256=1hrXw-hzuZ1BR6Yh7AyWX2ABnvnP73-RCbwdz958gj4,1127
|
95
95
|
seleniumbase/plugins/selenium_plugin.py,sha256=y0eNco8T4KgGLProLPHPLw479QH5lRms4wqwOnTgkSc,60081
|
96
96
|
seleniumbase/resources/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
@@ -115,12 +115,12 @@ seleniumbase/undetected/reactor.py,sha256=NropaXcO54pzmDq6quR27qPJxab6636H7LRAaq
|
|
115
115
|
seleniumbase/undetected/webelement.py,sha256=OOpUYbEiOG52KsYYyuDW9tYLdA2SMnukvwQHUdPVn9E,1389
|
116
116
|
seleniumbase/undetected/cdp_driver/__init__.py,sha256=Ga9alwuaZZy4_XOShc0HjgFnNqpPdrcbjAicz5gE7a4,215
|
117
117
|
seleniumbase/undetected/cdp_driver/_contradict.py,sha256=lP4b0h5quAy573ETn_TBbYV889cL1AuPLVInpJ0ZkiU,3183
|
118
|
-
seleniumbase/undetected/cdp_driver/browser.py,sha256=
|
119
|
-
seleniumbase/undetected/cdp_driver/cdp_util.py,sha256=
|
118
|
+
seleniumbase/undetected/cdp_driver/browser.py,sha256=zhdHeUDXsJpLzLS72SLT-cAdrU1Tf4TE4prQN-wpdC0,31905
|
119
|
+
seleniumbase/undetected/cdp_driver/cdp_util.py,sha256=3DhxoMwn0kXCz0QBYKEzLlyrztYeu-2HkyVCmg6sq64,23964
|
120
120
|
seleniumbase/undetected/cdp_driver/config.py,sha256=t8KV1Vqa5SQRBq3-gjkHHmj9h85AplAM01asO3AWufs,12507
|
121
121
|
seleniumbase/undetected/cdp_driver/connection.py,sha256=jccGcDt-TqgknvMNQYpRbhrSMC_74tYs-9YH1NK5UGU,24572
|
122
122
|
seleniumbase/undetected/cdp_driver/element.py,sha256=FIC6v7OmumLCT-_vIc3H4oju_oBbaLpWJUJIKm2c_q4,40467
|
123
|
-
seleniumbase/undetected/cdp_driver/tab.py,sha256=
|
123
|
+
seleniumbase/undetected/cdp_driver/tab.py,sha256=7zyOFczrRHY-kQhUSl8--luKr4ZMG7F7yzXzeC-WXqY,52743
|
124
124
|
seleniumbase/utilities/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
125
125
|
seleniumbase/utilities/selenium_grid/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
126
126
|
seleniumbase/utilities/selenium_grid/download_selenium_server.py,sha256=ZdoInIbhtmdKCIPxxtJHhd2sqotqcNXWMYbwWrkh9O0,1727
|
@@ -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.37.
|
139
|
-
seleniumbase-4.37.
|
140
|
-
seleniumbase-4.37.
|
141
|
-
seleniumbase-4.37.
|
142
|
-
seleniumbase-4.37.
|
143
|
-
seleniumbase-4.37.
|
138
|
+
seleniumbase-4.37.8.dist-info/licenses/LICENSE,sha256=BRblZsX7HyPUjQmYTiyWr_e9tzWvmR3R4SFclM2R3W0,1085
|
139
|
+
seleniumbase-4.37.8.dist-info/METADATA,sha256=fQ_267nDHyMhbJU6z1QsU6ZIpt0RLAnDkcS7CpRIJiw,86953
|
140
|
+
seleniumbase-4.37.8.dist-info/WHEEL,sha256=ck4Vq1_RXyvS4Jt6SI0Vz6fyVs4GWg7AINwpsaGEgPE,91
|
141
|
+
seleniumbase-4.37.8.dist-info/entry_points.txt,sha256=CNrh2EKNaHYEhO6pP1RJyVLB99LkDDYX7TnUK8xfjqk,623
|
142
|
+
seleniumbase-4.37.8.dist-info/top_level.txt,sha256=4N97aBOQ8ETCnDnokBsWb07lJfTaq3C1ZzYRxvLMxqU,19
|
143
|
+
seleniumbase-4.37.8.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|