seleniumbase 4.33.2__py3-none-any.whl → 4.33.4__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/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
|