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.
@@ -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,,