seleniumbase 4.33.2__py3-none-any.whl → 4.33.4__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/console_scripts/sb_mkdir.py +1 -1
- seleniumbase/core/browser_launcher.py +19 -5
- seleniumbase/core/sb_cdp.py +9 -0
- seleniumbase/fixtures/base_case.py +20 -0
- seleniumbase/plugins/pytest_plugin.py +117 -8
- seleniumbase/undetected/cdp_driver/tab.py +4 -0
- {seleniumbase-4.33.2.dist-info → seleniumbase-4.33.4.dist-info}/METADATA +4 -5
- {seleniumbase-4.33.2.dist-info → seleniumbase-4.33.4.dist-info}/RECORD +13 -13
- {seleniumbase-4.33.2.dist-info → seleniumbase-4.33.4.dist-info}/LICENSE +0 -0
- {seleniumbase-4.33.2.dist-info → seleniumbase-4.33.4.dist-info}/WHEEL +0 -0
- {seleniumbase-4.33.2.dist-info → seleniumbase-4.33.4.dist-info}/entry_points.txt +0 -0
- {seleniumbase-4.33.2.dist-info → seleniumbase-4.33.4.dist-info}/top_level.txt +0 -0
seleniumbase/__version__.py
CHANGED
@@ -1,2 +1,2 @@
|
|
1
1
|
# seleniumbase package
|
2
|
-
__version__ = "4.33.
|
2
|
+
__version__ = "4.33.4"
|
@@ -120,7 +120,7 @@ def main():
|
|
120
120
|
|
121
121
|
data = []
|
122
122
|
data.append("[pytest]")
|
123
|
-
data.append("addopts = --capture=
|
123
|
+
data.append("addopts = --capture=tee-sys -p no:cacheprovider")
|
124
124
|
data.append("norecursedirs = .* build dist recordings temp assets")
|
125
125
|
data.append("filterwarnings =")
|
126
126
|
data.append(" ignore::pytest.PytestWarning")
|
@@ -97,6 +97,13 @@ def log_d(message):
|
|
97
97
|
print(message)
|
98
98
|
|
99
99
|
|
100
|
+
def make_writable(file_path):
|
101
|
+
# Set permissions to: "If you can read it, you can write it."
|
102
|
+
mode = os.stat(file_path).st_mode
|
103
|
+
mode |= (mode & 0o444) >> 1 # copy R bits to W
|
104
|
+
os.chmod(file_path, mode)
|
105
|
+
|
106
|
+
|
100
107
|
def make_executable(file_path):
|
101
108
|
# Set permissions to: "If you can read it, you can execute it."
|
102
109
|
mode = os.stat(file_path).st_mode
|
@@ -606,6 +613,9 @@ def uc_open_with_cdp_mode(driver, url=None):
|
|
606
613
|
cdp.click_nth_element = CDPM.click_nth_element
|
607
614
|
cdp.click_nth_visible_element = CDPM.click_nth_visible_element
|
608
615
|
cdp.click_link = CDPM.click_link
|
616
|
+
cdp.go_back = CDPM.go_back
|
617
|
+
cdp.go_forward = CDPM.go_forward
|
618
|
+
cdp.get_navigation_history = CDPM.get_navigation_history
|
609
619
|
cdp.tile_windows = CDPM.tile_windows
|
610
620
|
cdp.get_all_cookies = CDPM.get_all_cookies
|
611
621
|
cdp.set_all_cookies = CDPM.set_all_cookies
|
@@ -812,6 +822,13 @@ def install_pyautogui_if_missing(driver):
|
|
812
822
|
pip_find_lock = fasteners.InterProcessLock(
|
813
823
|
constants.PipInstall.FINDLOCK
|
814
824
|
)
|
825
|
+
try:
|
826
|
+
with pip_find_lock:
|
827
|
+
pass
|
828
|
+
except Exception:
|
829
|
+
# Need write permissions
|
830
|
+
with suppress(Exception):
|
831
|
+
make_writable(constants.PipInstall.FINDLOCK)
|
815
832
|
with pip_find_lock: # Prevent issues with multiple processes
|
816
833
|
try:
|
817
834
|
import pyautogui
|
@@ -1419,11 +1436,8 @@ def _uc_gui_handle_captcha_(driver, frame="iframe", ctype=None):
|
|
1419
1436
|
page_actions.switch_to_window(
|
1420
1437
|
driver, driver.current_window_handle, 2, uc_lock=False
|
1421
1438
|
)
|
1422
|
-
if (
|
1423
|
-
|
1424
|
-
and hasattr(pyautogui, "getActiveWindowTitle")
|
1425
|
-
):
|
1426
|
-
py_a_g_title = pyautogui.getActiveWindowTitle()
|
1439
|
+
if IS_WINDOWS and hasattr(pyautogui, "getActiveWindowTitle"):
|
1440
|
+
py_a_g_title = pyautogui.getActiveWindowTitle() or ""
|
1427
1441
|
window_title = driver.get_title()
|
1428
1442
|
if not py_a_g_title.startswith(window_title):
|
1429
1443
|
window_rect = driver.get_window_rect()
|
seleniumbase/core/sb_cdp.py
CHANGED
@@ -289,6 +289,15 @@ class CDPMethods():
|
|
289
289
|
def click_link(self, link_text):
|
290
290
|
self.find_elements_by_text(link_text, "a")[0].click()
|
291
291
|
|
292
|
+
def go_back(self):
|
293
|
+
self.loop.run_until_complete(self.page.back())
|
294
|
+
|
295
|
+
def go_forward(self):
|
296
|
+
self.loop.run_until_complete(self.page.forward())
|
297
|
+
|
298
|
+
def get_navigation_history(self):
|
299
|
+
return self.loop.run_until_complete(self.page.get_navigation_history())
|
300
|
+
|
292
301
|
def __clear_input(self, element):
|
293
302
|
return (
|
294
303
|
self.loop.run_until_complete(element.clear_input_async())
|
@@ -1323,6 +1323,9 @@ class BaseCase(unittest.TestCase):
|
|
1323
1323
|
|
1324
1324
|
def go_back(self):
|
1325
1325
|
self.__check_scope()
|
1326
|
+
if self.__is_cdp_swap_needed():
|
1327
|
+
self.cdp.go_back()
|
1328
|
+
return
|
1326
1329
|
if hasattr(self, "recorder_mode") and self.recorder_mode:
|
1327
1330
|
self.save_recorded_actions()
|
1328
1331
|
pre_action_url = None
|
@@ -1348,6 +1351,9 @@ class BaseCase(unittest.TestCase):
|
|
1348
1351
|
|
1349
1352
|
def go_forward(self):
|
1350
1353
|
self.__check_scope()
|
1354
|
+
if self.__is_cdp_swap_needed():
|
1355
|
+
self.cdp.go_forward()
|
1356
|
+
return
|
1351
1357
|
if hasattr(self, "recorder_mode") and self.recorder_mode:
|
1352
1358
|
self.save_recorded_actions()
|
1353
1359
|
self.__last_page_load_url = None
|
@@ -1732,6 +1738,9 @@ class BaseCase(unittest.TestCase):
|
|
1732
1738
|
if self.timeout_multiplier and timeout == settings.SMALL_TIMEOUT:
|
1733
1739
|
timeout = self.__get_new_timeout(timeout)
|
1734
1740
|
partial_link_text = self.__get_type_checked_text(partial_link_text)
|
1741
|
+
if self.__is_cdp_swap_needed():
|
1742
|
+
self.cdp.find_element(partial_link_text, timeout=timeout).click()
|
1743
|
+
return
|
1735
1744
|
if not self.is_partial_link_text_present(partial_link_text):
|
1736
1745
|
self.wait_for_partial_link_text_present(
|
1737
1746
|
partial_link_text, timeout=timeout
|
@@ -8133,6 +8142,8 @@ class BaseCase(unittest.TestCase):
|
|
8133
8142
|
def is_chromium(self):
|
8134
8143
|
"""Return True if the browser is Chrome or Edge."""
|
8135
8144
|
self.__check_scope()
|
8145
|
+
if self.__is_cdp_swap_needed():
|
8146
|
+
return True
|
8136
8147
|
chromium = False
|
8137
8148
|
if (
|
8138
8149
|
"chrome" in self.driver.capabilities
|
@@ -13972,6 +13983,15 @@ class BaseCase(unittest.TestCase):
|
|
13972
13983
|
pip_find_lock = fasteners.InterProcessLock(
|
13973
13984
|
constants.PipInstall.FINDLOCK
|
13974
13985
|
)
|
13986
|
+
try:
|
13987
|
+
with pip_find_lock:
|
13988
|
+
pass
|
13989
|
+
except Exception:
|
13990
|
+
# Need write permissions
|
13991
|
+
with suppress(Exception):
|
13992
|
+
mode = os.stat(constants.PipInstall.FINDLOCK).st_mode
|
13993
|
+
mode |= (mode & 0o444) >> 1 # copy R bits to W
|
13994
|
+
os.chmod(constants.PipInstall.FINDLOCK, mode)
|
13975
13995
|
with pip_find_lock: # Prevent issues with multiple processes
|
13976
13996
|
if self.undetectable and not (self.headless or self.headless2):
|
13977
13997
|
import Xlib.display
|
@@ -17,6 +17,7 @@ if sys.version_info >= (3, 11):
|
|
17
17
|
python3_11_or_newer = True
|
18
18
|
py311_patch2 = constants.PatchPy311.PATCH
|
19
19
|
sys_argv = sys.argv
|
20
|
+
full_time = None
|
20
21
|
pytest_plugins = ["pytester"] # Adds the "testdir" fixture
|
21
22
|
|
22
23
|
|
@@ -2038,6 +2039,7 @@ def pytest_runtest_teardown(item):
|
|
2038
2039
|
if (
|
2039
2040
|
"-s" in sys_argv
|
2040
2041
|
or "--capture=no" in sys_argv
|
2042
|
+
or "--capture=tee-sys" in sys_argv
|
2041
2043
|
or (
|
2042
2044
|
hasattr(sb_config.pytest_config, "invocation_params")
|
2043
2045
|
and (
|
@@ -2045,6 +2047,9 @@ def pytest_runtest_teardown(item):
|
|
2045
2047
|
or "--capture=no" in (
|
2046
2048
|
sb_config.pytest_config.invocation_params.args
|
2047
2049
|
)
|
2050
|
+
or "--capture=tee-sys" in (
|
2051
|
+
sb_config.pytest_config.invocation_params.args
|
2052
|
+
)
|
2048
2053
|
)
|
2049
2054
|
)
|
2050
2055
|
):
|
@@ -2053,6 +2058,10 @@ def pytest_runtest_teardown(item):
|
|
2053
2058
|
sys.stdout.write("\n=> Fail Page: %s\n" % sb_config._fail_page)
|
2054
2059
|
|
2055
2060
|
|
2061
|
+
def pytest_html_duration_format(duration):
|
2062
|
+
return "%.2f" % duration
|
2063
|
+
|
2064
|
+
|
2056
2065
|
def pytest_sessionfinish(session):
|
2057
2066
|
pass
|
2058
2067
|
|
@@ -2103,9 +2112,11 @@ def pytest_terminal_summary(terminalreporter):
|
|
2103
2112
|
)
|
2104
2113
|
|
2105
2114
|
|
2106
|
-
def _perform_pytest_unconfigure_():
|
2115
|
+
def _perform_pytest_unconfigure_(config):
|
2107
2116
|
from seleniumbase.core import proxy_helper
|
2108
2117
|
|
2118
|
+
reporter = config.pluginmanager.get_plugin("terminalreporter")
|
2119
|
+
duration = time.time() - reporter._sessionstarttime
|
2109
2120
|
if (
|
2110
2121
|
(hasattr(sb_config, "multi_proxy") and not sb_config.multi_proxy)
|
2111
2122
|
or not hasattr(sb_config, "multi_proxy")
|
@@ -2133,6 +2144,63 @@ def _perform_pytest_unconfigure_():
|
|
2133
2144
|
log_helper.clear_empty_logs()
|
2134
2145
|
# Dashboard post-processing: Disable time-based refresh and stamp complete
|
2135
2146
|
if not hasattr(sb_config, "dashboard") or not sb_config.dashboard:
|
2147
|
+
html_report_path = None
|
2148
|
+
the_html_r = None
|
2149
|
+
abs_path = os.path.abspath(".")
|
2150
|
+
if sb_config._html_report_name:
|
2151
|
+
html_report_path = os.path.join(
|
2152
|
+
abs_path, sb_config._html_report_name
|
2153
|
+
)
|
2154
|
+
if (
|
2155
|
+
sb_config._using_html_report
|
2156
|
+
and html_report_path
|
2157
|
+
and os.path.exists(html_report_path)
|
2158
|
+
):
|
2159
|
+
with open(html_report_path, "r", encoding="utf-8") as f:
|
2160
|
+
the_html_r = f.read()
|
2161
|
+
assets_chunk = "if (assets.length === 1) {"
|
2162
|
+
remove_media = "container.classList.remove('media-container')"
|
2163
|
+
rm_n_left = '<div class="media-container__nav--left"><</div>'
|
2164
|
+
rm_n_right = '<div class="media-container__nav--right">></div>'
|
2165
|
+
the_html_r = the_html_r.replace(
|
2166
|
+
assets_chunk,
|
2167
|
+
"%s %s" % (assets_chunk, remove_media),
|
2168
|
+
)
|
2169
|
+
the_html_r = the_html_r.replace(rm_n_left, "")
|
2170
|
+
the_html_r = the_html_r.replace(rm_n_right, "")
|
2171
|
+
the_html_r = the_html_r.replace("<ul>$", "$")
|
2172
|
+
the_html_r = the_html_r.replace("}<ul>", "}")
|
2173
|
+
the_html_r = the_html_r.replace(
|
2174
|
+
"<li>${val}</li>", "${val}, "
|
2175
|
+
)
|
2176
|
+
the_html_r = the_html_r.replace(
|
2177
|
+
"<div>${value}</div>", "<span>${value}</span"
|
2178
|
+
)
|
2179
|
+
ph_link = '<a href="https://pypi.python.org/pypi/pytest-html">'
|
2180
|
+
sb_link = (
|
2181
|
+
'<a href="https://github.com/seleniumbase/SeleniumBase">'
|
2182
|
+
'SeleniumBase</a>'
|
2183
|
+
)
|
2184
|
+
the_html_r = the_html_r.replace(
|
2185
|
+
ph_link, "%s and %s" % (sb_link, ph_link)
|
2186
|
+
)
|
2187
|
+
the_html_r = the_html_r.replace(
|
2188
|
+
"mediaName.innerText", "//mediaName.innerText"
|
2189
|
+
)
|
2190
|
+
the_html_r = the_html_r.replace(
|
2191
|
+
"counter.innerText", "//counter.innerText"
|
2192
|
+
)
|
2193
|
+
run_count = '<p class="run-count">'
|
2194
|
+
run_c_loc = the_html_r.find(run_count)
|
2195
|
+
rc_loc = the_html_r.find(" took ", run_c_loc)
|
2196
|
+
end_rc_loc = the_html_r.find(".</p>", rc_loc)
|
2197
|
+
run_time = "%.2f" % duration
|
2198
|
+
new_time = " ran in %s seconds" % run_time
|
2199
|
+
the_html_r = (
|
2200
|
+
the_html_r[:rc_loc] + new_time + the_html_r[end_rc_loc:]
|
2201
|
+
)
|
2202
|
+
with open(html_report_path, "w", encoding="utf-8") as f:
|
2203
|
+
f.write(the_html_r) # Finalize the HTML report
|
2136
2204
|
# Done with "pytest_unconfigure" unless using the Dashboard
|
2137
2205
|
return
|
2138
2206
|
stamp = ""
|
@@ -2237,7 +2305,7 @@ def _perform_pytest_unconfigure_():
|
|
2237
2305
|
elif "\\" in h_r_name and h_r_name.endswith(".html"):
|
2238
2306
|
h_r_name = h_r_name.split("\\")[-1]
|
2239
2307
|
the_html_r = the_html_r.replace(
|
2240
|
-
|
2308
|
+
'<h1 id="title">%s</h1>' % h_r_name,
|
2241
2309
|
sb_config._saved_dashboard_pie,
|
2242
2310
|
)
|
2243
2311
|
the_html_r = the_html_r.replace(
|
@@ -2247,6 +2315,47 @@ def _perform_pytest_unconfigure_():
|
|
2247
2315
|
)
|
2248
2316
|
if sb_config._dash_final_summary:
|
2249
2317
|
the_html_r += sb_config._dash_final_summary
|
2318
|
+
assets_chunk = "if (assets.length === 1) {"
|
2319
|
+
remove_media = "container.classList.remove('media-container')"
|
2320
|
+
rm_n_left = '<div class="media-container__nav--left"><</div>'
|
2321
|
+
rm_n_right = '<div class="media-container__nav--right">></div>'
|
2322
|
+
the_html_r = the_html_r.replace(
|
2323
|
+
assets_chunk,
|
2324
|
+
"%s %s" % (assets_chunk, remove_media),
|
2325
|
+
)
|
2326
|
+
the_html_r = the_html_r.replace(rm_n_left, "")
|
2327
|
+
the_html_r = the_html_r.replace(rm_n_right, "")
|
2328
|
+
the_html_r = the_html_r.replace("<ul>$", "$")
|
2329
|
+
the_html_r = the_html_r.replace("}<ul>", "}")
|
2330
|
+
the_html_r = the_html_r.replace(
|
2331
|
+
"<li>${val}</li>", "${val}, "
|
2332
|
+
)
|
2333
|
+
the_html_r = the_html_r.replace(
|
2334
|
+
"<div>${value}</div>", "<span>${value}</span"
|
2335
|
+
)
|
2336
|
+
ph_link = '<a href="https://pypi.python.org/pypi/pytest-html">'
|
2337
|
+
sb_link = (
|
2338
|
+
'<a href="https://github.com/seleniumbase/SeleniumBase">'
|
2339
|
+
'SeleniumBase</a>'
|
2340
|
+
)
|
2341
|
+
the_html_r = the_html_r.replace(
|
2342
|
+
ph_link, "%s and %s" % (sb_link, ph_link)
|
2343
|
+
)
|
2344
|
+
the_html_r = the_html_r.replace(
|
2345
|
+
"mediaName.innerText", "//mediaName.innerText"
|
2346
|
+
)
|
2347
|
+
the_html_r = the_html_r.replace(
|
2348
|
+
"counter.innerText", "//counter.innerText"
|
2349
|
+
)
|
2350
|
+
run_count = '<p class="run-count">'
|
2351
|
+
run_c_loc = the_html_r.find(run_count)
|
2352
|
+
rc_loc = the_html_r.find(" took ", run_c_loc)
|
2353
|
+
end_rc_loc = the_html_r.find(".</p>", rc_loc)
|
2354
|
+
run_time = "%.2f" % duration
|
2355
|
+
new_time = " ran in %s seconds" % run_time
|
2356
|
+
the_html_r = (
|
2357
|
+
the_html_r[:rc_loc] + new_time + the_html_r[end_rc_loc:]
|
2358
|
+
)
|
2250
2359
|
with open(html_report_path, "w", encoding="utf-8") as f:
|
2251
2360
|
f.write(the_html_r) # Finalize the HTML report
|
2252
2361
|
except KeyboardInterrupt:
|
@@ -2281,19 +2390,19 @@ def pytest_unconfigure(config):
|
|
2281
2390
|
with open(dashboard_path, "w", encoding="utf-8") as f:
|
2282
2391
|
f.write(sb_config._dash_html)
|
2283
2392
|
# Dashboard Multithreaded
|
2284
|
-
_perform_pytest_unconfigure_()
|
2393
|
+
_perform_pytest_unconfigure_(config)
|
2285
2394
|
return
|
2286
2395
|
else:
|
2287
2396
|
# Dash Lock is missing
|
2288
|
-
_perform_pytest_unconfigure_()
|
2397
|
+
_perform_pytest_unconfigure_(config)
|
2289
2398
|
return
|
2290
2399
|
with dash_lock:
|
2291
2400
|
# Multi-threaded tests
|
2292
|
-
_perform_pytest_unconfigure_()
|
2401
|
+
_perform_pytest_unconfigure_(config)
|
2293
2402
|
return
|
2294
2403
|
else:
|
2295
2404
|
# Single-threaded tests
|
2296
|
-
_perform_pytest_unconfigure_()
|
2405
|
+
_perform_pytest_unconfigure_(config)
|
2297
2406
|
return
|
2298
2407
|
|
2299
2408
|
|
@@ -2442,7 +2551,7 @@ def pytest_runtest_makereport(item, call):
|
|
2442
2551
|
return
|
2443
2552
|
extra = getattr(report, "extra", [])
|
2444
2553
|
if len(extra_report) > 1 and extra_report[1]["content"]:
|
2445
|
-
report.
|
2554
|
+
report.extras = extra + extra_report
|
2446
2555
|
if sb_config._dash_is_html_report:
|
2447
2556
|
# If the Dashboard URL is the same as the HTML Report URL,
|
2448
2557
|
# have the html report refresh back to a dashboard on update.
|
@@ -2450,4 +2559,4 @@ def pytest_runtest_makereport(item, call):
|
|
2450
2559
|
'<script type="text/javascript" src="%s">'
|
2451
2560
|
"</script>" % constants.Dashboard.LIVE_JS
|
2452
2561
|
)
|
2453
|
-
report.
|
2562
|
+
report.extras.append(pytest_html.extras.html(refresh_updates))
|
@@ -636,6 +636,10 @@ class Tab(Connection):
|
|
636
636
|
"""History forward"""
|
637
637
|
await self.send(cdp.runtime.evaluate("window.history.forward()"))
|
638
638
|
|
639
|
+
async def get_navigation_history(self):
|
640
|
+
"""Get Navigation History"""
|
641
|
+
return await self.send(cdp.page.get_navigation_history())
|
642
|
+
|
639
643
|
async def reload(
|
640
644
|
self,
|
641
645
|
ignore_cache: Optional[bool] = True,
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: seleniumbase
|
3
|
-
Version: 4.33.
|
3
|
+
Version: 4.33.4
|
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
|
@@ -76,7 +76,7 @@ Requires-Dist: pynose>=1.5.3
|
|
76
76
|
Requires-Dist: platformdirs>=4.3.6
|
77
77
|
Requires-Dist: typing-extensions>=4.12.2
|
78
78
|
Requires-Dist: sbvirtualdisplay>=1.3.0
|
79
|
-
Requires-Dist: six>=1.
|
79
|
+
Requires-Dist: six>=1.17.0
|
80
80
|
Requires-Dist: parse>=1.20.2
|
81
81
|
Requires-Dist: parse-type>=0.6.4
|
82
82
|
Requires-Dist: colorama>=0.4.6
|
@@ -104,9 +104,8 @@ Requires-Dist: sortedcontainers==2.4.0
|
|
104
104
|
Requires-Dist: execnet==2.1.1
|
105
105
|
Requires-Dist: iniconfig==2.0.0
|
106
106
|
Requires-Dist: pluggy==1.5.0
|
107
|
-
Requires-Dist:
|
108
|
-
Requires-Dist: pytest==
|
109
|
-
Requires-Dist: pytest-html==2.0.1
|
107
|
+
Requires-Dist: pytest==8.3.4
|
108
|
+
Requires-Dist: pytest-html==4.1.1
|
110
109
|
Requires-Dist: pytest-metadata==3.1.1
|
111
110
|
Requires-Dist: pytest-ordering==0.6
|
112
111
|
Requires-Dist: pytest-rerunfailures==14.0; 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=OtJh8nGKL4xtZpw8KPqmn7Q6R-86t4cWUDyVF5MbMTo,2398
|
5
5
|
seleniumbase/__main__.py,sha256=dn1p6dgCchmcH1zzTzzQvFwwdQQqnTGH6ULV9m4hv24,654
|
6
|
-
seleniumbase/__version__.py,sha256=
|
6
|
+
seleniumbase/__version__.py,sha256=3t809dk9kzj5i3a3T_akotf68UIRPSs5JEuU9DUeAJs,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
|
@@ -27,7 +27,7 @@ seleniumbase/console_scripts/sb_caseplans.py,sha256=qlmvjQ49bOBE1Q29fVmabimkVibC
|
|
27
27
|
seleniumbase/console_scripts/sb_commander.py,sha256=yqoAK211OE6x5AWL2IAo8WojHtdkVj0AWqfoJ-ewmyo,13329
|
28
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
|
-
seleniumbase/console_scripts/sb_mkdir.py,sha256=
|
30
|
+
seleniumbase/console_scripts/sb_mkdir.py,sha256=8BFbKc9ES35ruI2PlNnxADa8Ur3SMkvKu_tr85T0gyA,29783
|
31
31
|
seleniumbase/console_scripts/sb_mkfile.py,sha256=OWYd4yFccmjrd-gNn1t1una-HDRU2_N2-r4Tg3nHsj0,17744
|
32
32
|
seleniumbase/console_scripts/sb_mkpres.py,sha256=EWFRVacjYTX49y-fEiYTZacM9_01IxuuaO4nMjHrIGo,11015
|
33
33
|
seleniumbase/console_scripts/sb_mkrec.py,sha256=PrizjTmyrROYPO0yDm-zQS3QSfsZNeAmcJKKUvfgLhc,11966
|
@@ -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=1JmvPcIHSgpvI74_E9xoAEjZe79OIOWKhot6DUTfkn0,221519
|
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,7 @@ 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_cdp.py,sha256=
|
53
|
+
seleniumbase/core/sb_cdp.py,sha256=NyiooRREzeRQYITMiE9b0WwcH3-u8tMsy-cLJSnxerc,67644
|
54
54
|
seleniumbase/core/sb_driver.py,sha256=NGa4adi8OAi2WFtFkEguXg3JCd1p-JuZweIpGNifEfU,13488
|
55
55
|
seleniumbase/core/session_helper.py,sha256=s9zD3PVZEWVzG2h81cCUskbNWLfdjC_LwwQjKptHCak,558
|
56
56
|
seleniumbase/core/settings_parser.py,sha256=KokVXpCiGZhJ-D4Bo-hizPz5r-iefzWoiTANu9zNaq4,7504
|
@@ -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=v6DxzikLVRBdTlw3diVOKAQX1bFEwCJ0sRE2MZwwao8,717844
|
69
69
|
seleniumbase/fixtures/constants.py,sha256=e1LppavlrAcI4XBJMq7u5j8SffaQ7SPQps1y0YvZYfY,13649
|
70
70
|
seleniumbase/fixtures/css_to_xpath.py,sha256=9ouDB1xl4MJ2os6JOgTIAyHKOQfuxtxvXC3O5hSnEKA,1954
|
71
71
|
seleniumbase/fixtures/errors.py,sha256=KyxuEVx_e3MPhVrJfNIa_3ltMpbCFxfy_jxK8RFNTns,555
|
@@ -88,7 +88,7 @@ seleniumbase/plugins/basic_test_info.py,sha256=8ov6n417gPbqqvrlT4zrch7l2XcRt-GF2
|
|
88
88
|
seleniumbase/plugins/db_reporting_plugin.py,sha256=En09qUCoojrk9-vbcnsoHdSELoGmag2GDIyu3jTiJas,7331
|
89
89
|
seleniumbase/plugins/driver_manager.py,sha256=s20s0pJYaNrG0WNwyIC04oUMRVFjtm6V_nS1-EvFm7g,34492
|
90
90
|
seleniumbase/plugins/page_source.py,sha256=loTnXxOj4kxEukuTZEiGyvKBhY3KDVDMnNlHHheTBDE,1889
|
91
|
-
seleniumbase/plugins/pytest_plugin.py,sha256=
|
91
|
+
seleniumbase/plugins/pytest_plugin.py,sha256=8vOTHVdX0WxfULcjPpbfwke8PR41U_RgsEslwtEyUBI,102238
|
92
92
|
seleniumbase/plugins/s3_logging_plugin.py,sha256=WDfertQgGOW_SRJpFMaekYD6vBVW9VO62POtXXy2HCM,2319
|
93
93
|
seleniumbase/plugins/sb_manager.py,sha256=qCf6RAkAfziLTGgiJvB3V416RxWoTbRLm9wc-KsB8g8,54419
|
94
94
|
seleniumbase/plugins/screen_shots.py,sha256=1hrXw-hzuZ1BR6Yh7AyWX2ABnvnP73-RCbwdz958gj4,1127
|
@@ -120,7 +120,7 @@ seleniumbase/undetected/cdp_driver/cdp_util.py,sha256=YhtD2Tm6PLIy9VKbgk8lHdGniS
|
|
120
120
|
seleniumbase/undetected/cdp_driver/config.py,sha256=Rjvde7V-XJ0ihZdTmOmHEVWSuDWm3SprQ3njg8SN3Go,12087
|
121
121
|
seleniumbase/undetected/cdp_driver/connection.py,sha256=sOTUGjbUqKA2hPvDcRCdqw1VQjVGJs7mbgVvzS7ldtE,23360
|
122
122
|
seleniumbase/undetected/cdp_driver/element.py,sha256=wEHtuF9oiny7cb4QMMjdtD5Yf1z3WOs2_NHEWcscusM,40289
|
123
|
-
seleniumbase/undetected/cdp_driver/tab.py,sha256=
|
123
|
+
seleniumbase/undetected/cdp_driver/tab.py,sha256=cmSUg9fRnIVYgeqs-t8Tcg1FrSVIrM5IBQmCMzvl4OQ,50678
|
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.33.
|
139
|
-
seleniumbase-4.33.
|
140
|
-
seleniumbase-4.33.
|
141
|
-
seleniumbase-4.33.
|
142
|
-
seleniumbase-4.33.
|
143
|
-
seleniumbase-4.33.
|
138
|
+
seleniumbase-4.33.4.dist-info/LICENSE,sha256=odSYtWibXBnQ1gBg6CnDZ82n8kLF_if5-2nbqnEyD8k,1085
|
139
|
+
seleniumbase-4.33.4.dist-info/METADATA,sha256=3WfFr62LrmiR3YrgRwprGZ_dM9zYVM04ak2N1NXOdzY,86528
|
140
|
+
seleniumbase-4.33.4.dist-info/WHEEL,sha256=PZUExdf71Ui_so67QXpySuHtCi3-J3wvF4ORK6k_S8U,91
|
141
|
+
seleniumbase-4.33.4.dist-info/entry_points.txt,sha256=CNrh2EKNaHYEhO6pP1RJyVLB99LkDDYX7TnUK8xfjqk,623
|
142
|
+
seleniumbase-4.33.4.dist-info/top_level.txt,sha256=4N97aBOQ8ETCnDnokBsWb07lJfTaq3C1ZzYRxvLMxqU,19
|
143
|
+
seleniumbase-4.33.4.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|