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.
@@ -1,2 +1,2 @@
1
1
  # seleniumbase package
2
- __version__ = "4.33.2"
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=no -p no:cacheprovider")
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
- IS_WINDOWS
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()
@@ -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},&nbsp;&nbsp;"
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
- "<h1>%s</h1>" % h_r_name,
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},&nbsp;&nbsp;"
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.extra = extra + extra_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.extra.append(pytest_html.extras.html(refresh_updates))
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.2
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.16.0
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: py==1.11.0
108
- Requires-Dist: pytest==8.3.3
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=DurPep4UOAZOSzAkCBAp_MZg2c7IdEU_tHzobaEV4lE,46
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=csqyWGEUdT2slLnQU3p9gnu5qE26TSVi_ZE3wttH_SQ,29778
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=9FDfk76brTw5nC9LNFfPn8JoYD0cY92omQJyo1FPiwg,221002
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=T5QkG7tiZs6XLra_vxUeIfsYhg1i7oxEkLDmpG6LLmE,67361
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=uxJcSytEc0dOxiSp03I58hcGmxGaFTSSBoro1-O-JLk,717061
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=Up96HY6q3hcPo4LQoEcKqt1hm2OmY5GZz_nMXTqDSXQ,97185
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=wUNF8GHrbhaUqg57A9ZTYHKhNPjZIcOHwrz3pj1SAg0,50526
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.2.dist-info/LICENSE,sha256=odSYtWibXBnQ1gBg6CnDZ82n8kLF_if5-2nbqnEyD8k,1085
139
- seleniumbase-4.33.2.dist-info/METADATA,sha256=nFoS4vqUdYDMBwy1VzYwDe8CFN_M5rqdzrM4nwgHo6Y,86554
140
- seleniumbase-4.33.2.dist-info/WHEEL,sha256=PZUExdf71Ui_so67QXpySuHtCi3-J3wvF4ORK6k_S8U,91
141
- seleniumbase-4.33.2.dist-info/entry_points.txt,sha256=CNrh2EKNaHYEhO6pP1RJyVLB99LkDDYX7TnUK8xfjqk,623
142
- seleniumbase-4.33.2.dist-info/top_level.txt,sha256=4N97aBOQ8ETCnDnokBsWb07lJfTaq3C1ZzYRxvLMxqU,19
143
- seleniumbase-4.33.2.dist-info/RECORD,,
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,,