seleniumbase 4.44.2__py3-none-any.whl → 4.44.3__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.44.2"
2
+ __version__ = "4.44.3"
@@ -293,7 +293,17 @@ def extend_driver(
293
293
  )
294
294
  if hasattr(driver, "proxy"):
295
295
  driver.set_wire_proxy = DM.set_wire_proxy
296
+ completed_loads = []
297
+ for ext_dir in sb_config._ext_dirs:
298
+ with suppress(Exception):
299
+ if ext_dir not in completed_loads:
300
+ completed_loads.append(ext_dir)
301
+ if not use_uc and os.path.exists(os.path.abspath(ext_dir)):
302
+ driver.webextension.install(os.path.abspath(ext_dir))
296
303
  if proxy_auth:
304
+ with suppress(Exception):
305
+ if not use_uc and os.path.exists(proxy_helper.PROXY_DIR_PATH):
306
+ driver.webextension.install(proxy_helper.PROXY_DIR_PATH)
297
307
  # Proxy needs a moment to load in Manifest V3
298
308
  if use_uc:
299
309
  time.sleep(0.14)
@@ -2087,6 +2097,7 @@ def _add_chrome_proxy_extension(
2087
2097
  """Implementation of https://stackoverflow.com/a/35293284/7058266
2088
2098
  for https://stackoverflow.com/q/12848327/7058266
2089
2099
  (Run Selenium on a proxy server that requires authentication.)"""
2100
+ zip_it = False
2090
2101
  args = " ".join(sys.argv)
2091
2102
  bypass_list = proxy_bypass_list
2092
2103
  if (
@@ -2467,13 +2478,27 @@ def _set_chrome_options(
2467
2478
  extension_zip_list = extension_zip.split(",")
2468
2479
  for extension_zip_item in extension_zip_list:
2469
2480
  abs_path = os.path.abspath(extension_zip_item)
2470
- chrome_options.add_extension(abs_path)
2481
+ if os.path.exists(abs_path):
2482
+ try:
2483
+ abs_path_dir = os.path.join(
2484
+ DOWNLOADS_FOLDER, abs_path.split(".")[0]
2485
+ )
2486
+ _unzip_to_new_folder(abs_path, abs_path_dir)
2487
+ chrome_options = add_chrome_ext_dir(
2488
+ chrome_options, abs_path_dir
2489
+ )
2490
+ sb_config._ext_dirs.append(abs_path_dir)
2491
+ except Exception:
2492
+ with suppress(Exception):
2493
+ chrome_options.add_extension(abs_path)
2471
2494
  if extension_dir:
2472
2495
  # load-extension input can be a comma-separated list
2473
2496
  abs_path = (
2474
2497
  ",".join(os.path.abspath(p) for p in extension_dir.split(","))
2475
2498
  )
2476
2499
  chrome_options = add_chrome_ext_dir(chrome_options, abs_path)
2500
+ for p in extension_dir.split(","):
2501
+ sb_config._ext_dirs.append(os.path.abspath(p))
2477
2502
  if (
2478
2503
  page_load_strategy
2479
2504
  and page_load_strategy.lower() in ["eager", "none"]
@@ -2508,37 +2533,32 @@ def _set_chrome_options(
2508
2533
  if (settings.DISABLE_CSP_ON_CHROME or disable_csp) and not headless:
2509
2534
  # Headless Chrome does not support extensions, which are required
2510
2535
  # for disabling the Content Security Policy on Chrome.
2511
- if is_using_uc(undetectable, browser_name):
2512
- disable_csp_zip = DISABLE_CSP_ZIP_PATH
2513
- disable_csp_dir = os.path.join(DOWNLOADS_FOLDER, "disable_csp")
2514
- _unzip_to_new_folder(disable_csp_zip, disable_csp_dir)
2515
- chrome_options = add_chrome_ext_dir(
2516
- chrome_options, disable_csp_dir
2517
- )
2518
- else:
2519
- chrome_options = _add_chrome_disable_csp_extension(chrome_options)
2536
+ disable_csp_zip = DISABLE_CSP_ZIP_PATH
2537
+ disable_csp_dir = os.path.join(DOWNLOADS_FOLDER, "disable_csp")
2538
+ _unzip_to_new_folder(disable_csp_zip, disable_csp_dir)
2539
+ chrome_options = add_chrome_ext_dir(
2540
+ chrome_options, disable_csp_dir
2541
+ )
2542
+ sb_config._ext_dirs.append(disable_csp_dir)
2520
2543
  if ad_block_on and not headless:
2521
2544
  # Headless Chrome does not support extensions.
2522
- if is_using_uc(undetectable, browser_name):
2523
- ad_block_zip = AD_BLOCK_ZIP_PATH
2524
- ad_block_dir = os.path.join(DOWNLOADS_FOLDER, "ad_block")
2525
- _unzip_to_new_folder(ad_block_zip, ad_block_dir)
2526
- chrome_options = add_chrome_ext_dir(chrome_options, ad_block_dir)
2527
- else:
2528
- chrome_options = _add_chrome_ad_block_extension(chrome_options)
2545
+ ad_block_zip = AD_BLOCK_ZIP_PATH
2546
+ ad_block_dir = os.path.join(DOWNLOADS_FOLDER, "ad_block")
2547
+ _unzip_to_new_folder(ad_block_zip, ad_block_dir)
2548
+ chrome_options = add_chrome_ext_dir(chrome_options, ad_block_dir)
2549
+ sb_config._ext_dirs.append(ad_block_dir)
2529
2550
  if recorder_ext and not headless:
2530
- if is_using_uc(undetectable, browser_name):
2531
- recorder_zip = RECORDER_ZIP_PATH
2532
- recorder_dir = os.path.join(DOWNLOADS_FOLDER, "recorder")
2533
- _unzip_to_new_folder(recorder_zip, recorder_dir)
2534
- chrome_options = add_chrome_ext_dir(chrome_options, recorder_dir)
2535
- else:
2536
- chrome_options = _add_chrome_recorder_extension(chrome_options)
2551
+ recorder_zip = RECORDER_ZIP_PATH
2552
+ recorder_dir = os.path.join(DOWNLOADS_FOLDER, "recorder")
2553
+ _unzip_to_new_folder(recorder_zip, recorder_dir)
2554
+ chrome_options = add_chrome_ext_dir(chrome_options, recorder_dir)
2555
+ sb_config._ext_dirs.append(recorder_dir)
2537
2556
  if chromium_arg and "sbase" in chromium_arg:
2538
2557
  sbase_ext_zip = SBASE_EXT_ZIP_PATH
2539
2558
  sbase_ext_dir = os.path.join(DOWNLOADS_FOLDER, "sbase_ext")
2540
2559
  _unzip_to_new_folder(sbase_ext_zip, sbase_ext_dir)
2541
2560
  chrome_options = add_chrome_ext_dir(chrome_options, sbase_ext_dir)
2561
+ sb_config._ext_dirs.append(sbase_ext_dir)
2542
2562
  if proxy_string:
2543
2563
  if proxy_auth:
2544
2564
  zip_it = True
@@ -2724,6 +2744,10 @@ def _set_chrome_options(
2724
2744
  chrome_options.add_argument("--disable-features=%s" % d_f_string)
2725
2745
  if proxy_auth:
2726
2746
  chrome_options.add_argument("--test-type")
2747
+ if proxy_auth or sb_config._ext_dirs:
2748
+ if not is_using_uc(undetectable, browser_name):
2749
+ chrome_options.enable_webextensions = True
2750
+ chrome_options.enable_bidi = True
2727
2751
  if (
2728
2752
  is_using_uc(undetectable, browser_name)
2729
2753
  and (
@@ -2988,6 +3012,7 @@ def get_driver(
2988
3012
  device_pixel_ratio=None,
2989
3013
  browser=None, # A duplicate of browser_name to avoid confusion
2990
3014
  ):
3015
+ sb_config._ext_dirs = []
2991
3016
  driver_dir = DRIVER_DIR
2992
3017
  if (
2993
3018
  hasattr(sb_config, "binary_location")
@@ -4694,7 +4694,7 @@ class BaseCase(unittest.TestCase):
4694
4694
  if not os.path.exists(file_path):
4695
4695
  os.makedirs(file_path)
4696
4696
  cookies_file_path = os.path.join(file_path, name)
4697
- cookies_file = open(cookies_file_path, "w+", encoding="utf-8")
4697
+ cookies_file = open(cookies_file_path, mode="w+", encoding="utf-8")
4698
4698
  cookies_file.writelines(json_cookies)
4699
4699
  cookies_file.close()
4700
4700
 
@@ -5751,7 +5751,7 @@ class BaseCase(unittest.TestCase):
5751
5751
  extra_file_name = "__init__.py"
5752
5752
  extra_file_path = os.path.join(recordings_folder, extra_file_name)
5753
5753
  if not os.path.exists(extra_file_path):
5754
- out_file = open(extra_file_path, "w+", "utf-8")
5754
+ out_file = open(extra_file_path, mode="w+", encoding="utf-8")
5755
5755
  out_file.writelines("\r\n".join(data))
5756
5756
  out_file.close()
5757
5757
  sys.stdout.write("\nCreated recordings%s__init__.py" % os.sep)
@@ -5799,7 +5799,7 @@ class BaseCase(unittest.TestCase):
5799
5799
  extra_file_name = "pytest.ini"
5800
5800
  extra_file_path = os.path.join(recordings_folder, extra_file_name)
5801
5801
  if not os.path.exists(extra_file_path):
5802
- out_file = open(extra_file_path, "w+", "utf-8")
5802
+ out_file = open(extra_file_path, mode="w+", encoding="utf-8")
5803
5803
  out_file.writelines("\r\n".join(data))
5804
5804
  out_file.close()
5805
5805
  sys.stdout.write("\nCreated recordings%spytest.ini" % os.sep)
@@ -5820,7 +5820,7 @@ class BaseCase(unittest.TestCase):
5820
5820
  extra_file_name = "setup.cfg"
5821
5821
  extra_file_path = os.path.join(recordings_folder, extra_file_name)
5822
5822
  if not os.path.exists(extra_file_path):
5823
- out_file = open(extra_file_path, "w+", "utf-8")
5823
+ out_file = open(extra_file_path, mode="w+", encoding="utf-8")
5824
5824
  out_file.writelines("\r\n".join(data))
5825
5825
  out_file.close()
5826
5826
  sys.stdout.write("\nCreated recordings%ssetup.cfg" % os.sep)
@@ -5838,7 +5838,7 @@ class BaseCase(unittest.TestCase):
5838
5838
  elif context_filename:
5839
5839
  file_name = context_filename
5840
5840
  file_path = os.path.join(recordings_folder, file_name)
5841
- out_file = open(file_path, "w+", "utf-8")
5841
+ out_file = open(file_path, mode="w+", encoding="utf-8")
5842
5842
  out_file.writelines("\r\n".join(data))
5843
5843
  out_file.close()
5844
5844
  rec_message = ">>> RECORDING SAVED as: "
@@ -5940,7 +5940,7 @@ class BaseCase(unittest.TestCase):
5940
5940
  file_name = sb_config.behave_scenario.filename.replace(".", "_")
5941
5941
  file_name = file_name.split("/")[-1].split("\\")[-1] + "_rec.feature"
5942
5942
  file_path = os.path.join(features_folder, file_name)
5943
- out_file = open(file_path, "w+", "utf-8")
5943
+ out_file = open(file_path, mode="w+", encoding="utf-8")
5944
5944
  out_file.writelines("\r\n".join(data))
5945
5945
  out_file.close()
5946
5946
 
@@ -5978,7 +5978,7 @@ class BaseCase(unittest.TestCase):
5978
5978
  file_name = "__init__.py"
5979
5979
  file_path = os.path.join(features_folder, file_name)
5980
5980
  if not os.path.exists(file_path):
5981
- out_file = open(file_path, "w+", "utf-8")
5981
+ out_file = open(file_path, mode="w+", encoding="utf-8")
5982
5982
  out_file.writelines("\r\n".join(data))
5983
5983
  out_file.close()
5984
5984
  print("Created recordings/features/__init__.py")
@@ -5991,7 +5991,7 @@ class BaseCase(unittest.TestCase):
5991
5991
  file_name = "behave.ini"
5992
5992
  file_path = os.path.join(features_folder, file_name)
5993
5993
  if not os.path.exists(file_path):
5994
- out_file = open(file_path, "w+", "utf-8")
5994
+ out_file = open(file_path, mode="w+", encoding="utf-8")
5995
5995
  out_file.writelines("\r\n".join(data))
5996
5996
  out_file.close()
5997
5997
  print("Created recordings/features/behave.ini")
@@ -6030,7 +6030,7 @@ class BaseCase(unittest.TestCase):
6030
6030
  file_name = "environment.py"
6031
6031
  file_path = os.path.join(features_folder, file_name)
6032
6032
  if not os.path.exists(file_path):
6033
- out_file = open(file_path, "w+", "utf-8")
6033
+ out_file = open(file_path, mode="w+", encoding="utf-8")
6034
6034
  out_file.writelines("\r\n".join(data))
6035
6035
  out_file.close()
6036
6036
  print("Created recordings/features/environment.py")
@@ -6040,7 +6040,7 @@ class BaseCase(unittest.TestCase):
6040
6040
  file_name = "__init__.py"
6041
6041
  file_path = os.path.join(steps_folder, file_name)
6042
6042
  if not os.path.exists(file_path):
6043
- out_file = open(file_path, "w+", "utf-8")
6043
+ out_file = open(file_path, mode="w+", encoding="utf-8")
6044
6044
  out_file.writelines("\r\n".join(data))
6045
6045
  out_file.close()
6046
6046
  print("Created recordings/features/steps/__init__.py")
@@ -6051,7 +6051,7 @@ class BaseCase(unittest.TestCase):
6051
6051
  file_name = "imported.py"
6052
6052
  file_path = os.path.join(steps_folder, file_name)
6053
6053
  if not os.path.exists(file_path):
6054
- out_file = open(file_path, "w+", "utf-8")
6054
+ out_file = open(file_path, mode="w+", encoding="utf-8")
6055
6055
  out_file.writelines("\r\n".join(data))
6056
6056
  out_file.close()
6057
6057
  print("Created recordings/features/steps/imported.py")
@@ -11120,7 +11120,7 @@ class BaseCase(unittest.TestCase):
11120
11120
  return # Skip the rest when deferred visual asserts are used
11121
11121
  the_html = visual_helper.get_sbs_html()
11122
11122
  file_path = os.path.join(test_logpath, constants.SideBySide.HTML_FILE)
11123
- out_file = open(file_path, "w+", encoding="utf-8")
11123
+ out_file = open(file_path, mode="w+", encoding="utf-8")
11124
11124
  out_file.writelines(the_html)
11125
11125
  out_file.close()
11126
11126
 
@@ -11280,16 +11280,16 @@ class BaseCase(unittest.TestCase):
11280
11280
  self.save_screenshot(
11281
11281
  baseline_png, visual_baseline_path, selector="body"
11282
11282
  )
11283
- out_file = open(page_url_file, "w+", encoding="utf-8")
11283
+ out_file = open(page_url_file, mode="w+", encoding="utf-8")
11284
11284
  out_file.writelines(page_url)
11285
11285
  out_file.close()
11286
- out_file = open(level_1_file, "w+", encoding="utf-8")
11286
+ out_file = open(level_1_file, mode="w+", encoding="utf-8")
11287
11287
  out_file.writelines(json.dumps(level_1))
11288
11288
  out_file.close()
11289
- out_file = open(level_2_file, "w+", encoding="utf-8")
11289
+ out_file = open(level_2_file, mode="w+", encoding="utf-8")
11290
11290
  out_file.writelines(json.dumps(level_2))
11291
11291
  out_file.close()
11292
- out_file = open(level_3_file, "w+", encoding="utf-8")
11292
+ out_file = open(level_3_file, mode="w+", encoding="utf-8")
11293
11293
  out_file.writelines(json.dumps(level_3))
11294
11294
  out_file.close()
11295
11295
 
@@ -11428,7 +11428,7 @@ class BaseCase(unittest.TestCase):
11428
11428
  alpha_n_d_name = "".join([x if x.isalnum() else "_" for x in name])
11429
11429
  side_by_side_name = "side_by_side_%s.html" % alpha_n_d_name
11430
11430
  file_path = os.path.join(test_logpath, side_by_side_name)
11431
- out_file = open(file_path, "w+", encoding="utf-8")
11431
+ out_file = open(file_path, mode="w+", encoding="utf-8")
11432
11432
  out_file.writelines(the_html)
11433
11433
  out_file.close()
11434
11434
 
@@ -12120,7 +12120,7 @@ class BaseCase(unittest.TestCase):
12120
12120
  with suppress(Exception):
12121
12121
  os.makedirs(saved_presentations_folder)
12122
12122
  file_path = os.path.join(saved_presentations_folder, filename)
12123
- out_file = open(file_path, "w+", encoding="utf-8")
12123
+ out_file = open(file_path, mode="w+", encoding="utf-8")
12124
12124
  out_file.writelines(the_html)
12125
12125
  out_file.close()
12126
12126
  if self._output_file_saves:
@@ -12815,7 +12815,7 @@ class BaseCase(unittest.TestCase):
12815
12815
  with suppress(Exception):
12816
12816
  os.makedirs(saved_charts_folder)
12817
12817
  file_path = os.path.join(saved_charts_folder, filename)
12818
- out_file = open(file_path, "w+", encoding="utf-8")
12818
+ out_file = open(file_path, mode="w+", encoding="utf-8")
12819
12819
  out_file.writelines(the_html)
12820
12820
  out_file.close()
12821
12821
  if self._output_file_saves:
@@ -16378,7 +16378,7 @@ class BaseCase(unittest.TestCase):
16378
16378
  dash_pie = json.dumps(sb_config._saved_dashboard_pie)
16379
16379
  dash_pie_loc = constants.Dashboard.DASH_PIE
16380
16380
  pie_path = os.path.join(abs_path, dash_pie_loc)
16381
- pie_file = open(pie_path, "w+", encoding="utf-8")
16381
+ pie_file = open(pie_path, mode="w+", encoding="utf-8")
16382
16382
  pie_file.writelines(dash_pie)
16383
16383
  pie_file.close()
16384
16384
  DASH_PIE_PNG_1 = constants.Dashboard.get_dash_pie_1()
@@ -16538,7 +16538,7 @@ class BaseCase(unittest.TestCase):
16538
16538
  )
16539
16539
  abs_path = os.path.abspath(".")
16540
16540
  file_path = os.path.join(abs_path, "dashboard.html")
16541
- out_file = open(file_path, "w+", encoding="utf-8")
16541
+ out_file = open(file_path, mode="w+", encoding="utf-8")
16542
16542
  out_file.writelines(the_html)
16543
16543
  out_file.close()
16544
16544
  sb_config._dash_html = the_html
@@ -16551,7 +16551,7 @@ class BaseCase(unittest.TestCase):
16551
16551
  dash_json = json.dumps((_results, _display_id, _rt, _tlp, d_stats))
16552
16552
  dash_json_loc = constants.Dashboard.DASH_JSON
16553
16553
  dash_jsonpath = os.path.join(abs_path, dash_json_loc)
16554
- dash_json_file = open(dash_jsonpath, "w+", encoding="utf-8")
16554
+ dash_json_file = open(dash_jsonpath, mode="w+", encoding="utf-8")
16555
16555
  dash_json_file.writelines(dash_json)
16556
16556
  dash_json_file.close()
16557
16557
 
@@ -1,9 +1,7 @@
1
- import fasteners
2
1
  import json
3
2
  import logging
4
3
  import requests
5
- from seleniumbase.fixtures import constants
6
- from seleniumbase.fixtures import shared_utils
4
+ import websockets
7
5
 
8
6
  log = logging.getLogger(__name__)
9
7
 
@@ -107,15 +105,6 @@ class CDP:
107
105
  return resp.json()
108
106
 
109
107
  async def send(self, method, params):
110
- pip_find_lock = fasteners.InterProcessLock(
111
- constants.PipInstall.FINDLOCK
112
- )
113
- with pip_find_lock:
114
- try:
115
- import websockets
116
- except Exception:
117
- shared_utils.pip_install("websockets")
118
- import websockets
119
108
  self._reqid += 1
120
109
  async with websockets.connect(self.wsurl) as ws:
121
110
  await ws.send(
@@ -350,8 +350,7 @@ class Browser:
350
350
  if _cdp_geolocation:
351
351
  await connection.send(cdp.page.navigate("about:blank"))
352
352
  await connection.set_geolocation(_cdp_geolocation)
353
- # This part isn't needed now, but may be needed later
354
- """
353
+ # (The code below is for the Chrome 142 extension fix)
355
354
  if (
356
355
  hasattr(sb_config, "_cdp_proxy")
357
356
  and "@" in sb_config._cdp_proxy
@@ -363,7 +362,6 @@ class Browser:
363
362
  proxy_pass = username_and_password.split(":")[1]
364
363
  await connection.set_auth(proxy_user, proxy_pass, self.tabs[0])
365
364
  time.sleep(0.25)
366
- """
367
365
  if "auth" in kwargs and kwargs["auth"] and ":" in kwargs["auth"]:
368
366
  username_and_password = kwargs["auth"]
369
367
  proxy_user = username_and_password.split(":")[0]
@@ -375,12 +373,12 @@ class Browser:
375
373
  cdp.page.navigate(url)
376
374
  )
377
375
  if _cdp_recorder:
378
- pass # (The code below was for the Chrome 137 extension fix)
379
- '''from seleniumbase.js_code.recorder_js import recorder_js
376
+ # (The code below is for the Chrome 142 extension fix)
377
+ from seleniumbase.js_code.recorder_js import recorder_js
380
378
  recorder_code = (
381
379
  """window.onload = function() { %s };""" % recorder_js
382
380
  )
383
- await connection.send(cdp.runtime.evaluate(recorder_code))'''
381
+ await connection.send(cdp.runtime.evaluate(recorder_code))
384
382
  # Update the frame_id on the tab
385
383
  connection.frame_id = frame_id
386
384
  connection.browser = self
@@ -79,7 +79,8 @@ class Config:
79
79
  if not browser_args:
80
80
  browser_args = []
81
81
  if not user_data_dir:
82
- self._user_data_dir = temp_profile_dir()
82
+ self.user_data_dir = temp_profile_dir()
83
+ self._user_data_dir = self.user_data_dir
83
84
  self._custom_data_dir = False
84
85
  else:
85
86
  self.user_data_dir = user_data_dir
@@ -315,10 +316,13 @@ def find_chrome_executable(return_all=False):
315
316
  for item in os.environ.get("PATH").split(os.pathsep):
316
317
  for subitem in (
317
318
  "google-chrome",
319
+ "google-chrome-stable",
320
+ "google-chrome-beta",
321
+ "google-chrome-dev",
322
+ "google-chrome-unstable",
323
+ "chrome",
318
324
  "chromium",
319
325
  "chromium-browser",
320
- "chrome",
321
- "google-chrome-stable",
322
326
  ):
323
327
  candidates.append(os.sep.join((item, subitem)))
324
328
  if "darwin" in sys.platform:
@@ -347,7 +351,11 @@ def find_chrome_executable(return_all=False):
347
351
  )
348
352
  rv = []
349
353
  for candidate in candidates:
350
- if os.path.exists(candidate) and os.access(candidate, os.X_OK):
354
+ if (
355
+ os.path.exists(candidate)
356
+ and os.access(candidate, os.R_OK)
357
+ and os.access(candidate, os.X_OK)
358
+ ):
351
359
  logger.debug("%s is a valid candidate... " % candidate)
352
360
  rv.append(candidate)
353
361
  else:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: seleniumbase
3
- Version: 4.44.2
3
+ Version: 4.44.3
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
@@ -3,7 +3,7 @@ sbase/__main__.py,sha256=G0bVB1-DM4PGwQ1KyOupaWCs4ePbChZNNWuX2htim5U,647
3
3
  sbase/steps.py,sha256=wiPSWZhFpBlWvkqXRJ18btpBu3nQaw9K5AzIJNAX5RM,43521
4
4
  seleniumbase/__init__.py,sha256=JFEY9P5QJqsa1M6ghzLMH2eIPQyh85iglCaQwg8Y8z4,2498
5
5
  seleniumbase/__main__.py,sha256=dn1p6dgCchmcH1zzTzzQvFwwdQQqnTGH6ULV9m4hv24,654
6
- seleniumbase/__version__.py,sha256=ByHDZ9qnXQSW1qM2pWlZ6afSeHhBnAErQ2JNq0nl8es,46
6
+ seleniumbase/__version__.py,sha256=zSBgnD-F9rnTALAmYbr7raHyqdo2jfQ0LDqc0vGBjQQ,46
7
7
  seleniumbase/behave/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
8
8
  seleniumbase/behave/behave_helper.py,sha256=lJtagtivSbEpbRj0EKV4l4PuPU6NANONJJAnYwgVCe0,24379
9
9
  seleniumbase/behave/behave_sb.py,sha256=dEj9UUHVz3ejzEX25frViPQfp7acjI-UssWJO_wpugg,59875
@@ -36,7 +36,7 @@ seleniumbase/console_scripts/sb_print.py,sha256=iUKR71Y82NhuKBKw31PJilDw-pPUr-vq
36
36
  seleniumbase/console_scripts/sb_recorder.py,sha256=DH-n2fN7N9qyHMl7wjtn8MiliBgfw-1kwgmfg1GUuhk,10772
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=aGFqva1mPB-b8yaI12bfc36Z_733VwOqvvn_Po_mwP8,255639
39
+ seleniumbase/core/browser_launcher.py,sha256=CX9ZztrmXyTh_dzc_lbhDpCz6weKme_yOHYEVud6g6U,256777
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
@@ -71,7 +71,7 @@ seleniumbase/extensions/disable_csp.zip,sha256=5RvomXnm2PdivUVcxTV6jfvD8WhTEsQYH
71
71
  seleniumbase/extensions/recorder.zip,sha256=JEE_FVEvlS63cFQbVLEroIyPSS91nWCDL0MhjVrmIpk,11813
72
72
  seleniumbase/extensions/sbase_ext.zip,sha256=3s1N8zrVaMz8RQEOIoBzC3KDjtmHwVZRvVsX25Odr_s,8175
73
73
  seleniumbase/fixtures/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
74
- seleniumbase/fixtures/base_case.py,sha256=ZxADq-nyQov-UCkLsdUwA1FeZ0STWU5a6vBNoAN1sQ0,743152
74
+ seleniumbase/fixtures/base_case.py,sha256=3mno3JFUKZBMWgLfhBp1p51zZWwZq05UkeSX6Ynm8Fw,743352
75
75
  seleniumbase/fixtures/constants.py,sha256=xDcfW_O7TCfiojm_oxhNGY11mSEfR-ckvbppfARPWQU,14281
76
76
  seleniumbase/fixtures/css_to_xpath.py,sha256=9ouDB1xl4MJ2os6JOgTIAyHKOQfuxtxvXC3O5hSnEKA,1954
77
77
  seleniumbase/fixtures/errors.py,sha256=KyxuEVx_e3MPhVrJfNIa_3ltMpbCFxfy_jxK8RFNTns,555
@@ -113,7 +113,7 @@ seleniumbase/translate/russian.py,sha256=TyN9n0b4GRWDEYnHRGw1rfNAscdDmP3F3Y3aySM
113
113
  seleniumbase/translate/spanish.py,sha256=hh3xgW1Pq122SHYVvJAxFaXhFrjniOVncVbJbfWqOUM,25528
114
114
  seleniumbase/translate/translator.py,sha256=22rsYl50PE-wynMHegfhjhJ0SHvcxvfniwy2b2XeQx4,49227
115
115
  seleniumbase/undetected/__init__.py,sha256=x744Ug70_-rd31TT7SI49T6Af0C2Ne_SbzF8XKPB8zw,27065
116
- seleniumbase/undetected/cdp.py,sha256=G6nLStm1l8PmZlKIyMnFcYMV7HD5kiGb-9BaqPjVP3I,5497
116
+ seleniumbase/undetected/cdp.py,sha256=OJn4n672gi9cdeakZJmuCHFanJg-w6Gp3Ticv5HX_iY,5094
117
117
  seleniumbase/undetected/dprocess.py,sha256=83EV8ZHJWHG1TSUv9JNClBhdgiBXlkCc6mJ--HsoP3k,1681
118
118
  seleniumbase/undetected/options.py,sha256=BoNuwhrG7oOvuLvTwkvsWCF36pMkS1tHCG-XpP4_EkI,3001
119
119
  seleniumbase/undetected/patcher.py,sha256=fXh99P2D9XPdYTFtsDYXk1ZUSh8Elkg-dGeMhUihmu4,11445
@@ -121,9 +121,9 @@ seleniumbase/undetected/reactor.py,sha256=NropaXcO54pzmDq6quR27qPJxab6636H7LRAaq
121
121
  seleniumbase/undetected/webelement.py,sha256=OOpUYbEiOG52KsYYyuDW9tYLdA2SMnukvwQHUdPVn9E,1389
122
122
  seleniumbase/undetected/cdp_driver/__init__.py,sha256=Ga9alwuaZZy4_XOShc0HjgFnNqpPdrcbjAicz5gE7a4,215
123
123
  seleniumbase/undetected/cdp_driver/_contradict.py,sha256=lP4b0h5quAy573ETn_TBbYV889cL1AuPLVInpJ0ZkiU,3183
124
- seleniumbase/undetected/cdp_driver/browser.py,sha256=AQI6uWVyhv7VEnx0CE3V9MeoUa-VDilFPytnQile31Y,35651
124
+ seleniumbase/undetected/cdp_driver/browser.py,sha256=xTQL9IoPxoPbFWxSQ4EPXUFZQA1OiQ7x1zDP6yqyV0g,35605
125
125
  seleniumbase/undetected/cdp_driver/cdp_util.py,sha256=wSgXxukwP4_-kVai0z1s1uoXYDiDab0jdBLa1HyW0nQ,34939
126
- seleniumbase/undetected/cdp_driver/config.py,sha256=B5Wf0E5xvCmIuLO_Y06oyKYd04yM2auj--JyGKUKsls,13630
126
+ seleniumbase/undetected/cdp_driver/config.py,sha256=a8t9FHTTfSh-acghYYM9hua6C_nhmQbFMROm7kNkinY,13889
127
127
  seleniumbase/undetected/cdp_driver/connection.py,sha256=nz_xGctJe-VG5udn6tucWZMxAo6QtuYBfL3pVAt-7Ck,25680
128
128
  seleniumbase/undetected/cdp_driver/element.py,sha256=DdIcD13zjvM2bgDkYoKzDhWR91LoAiZ412q12x_AOZ4,42407
129
129
  seleniumbase/undetected/cdp_driver/tab.py,sha256=t7Ucn0pmm7imwdCM-5KmIJNU2MCeMuIl6G3T2VMrbxU,53170
@@ -141,9 +141,9 @@ seleniumbase/utilities/selenium_grid/start-grid-hub.bat,sha256=Ftq-GrAKRYH2ssDPr
141
141
  seleniumbase/utilities/selenium_grid/start-grid-hub.sh,sha256=KADv0RUHONLL2_I443QFK8PryBpDmKn5Gy0s4o0vDSM,106
142
142
  seleniumbase/utilities/selenium_ide/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
143
143
  seleniumbase/utilities/selenium_ide/convert_ide.py,sha256=2tayFP_R9HGH0Xx6qYlPmArN0THntO6R0Wjo0qqgCZY,31680
144
- seleniumbase-4.44.2.dist-info/licenses/LICENSE,sha256=BRblZsX7HyPUjQmYTiyWr_e9tzWvmR3R4SFclM2R3W0,1085
145
- seleniumbase-4.44.2.dist-info/METADATA,sha256=IgqjSErKemqWr4Z3ZqEjn4RxJwGDP6Fh_Kbo_MW4RRU,90492
146
- seleniumbase-4.44.2.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
147
- seleniumbase-4.44.2.dist-info/entry_points.txt,sha256=CNrh2EKNaHYEhO6pP1RJyVLB99LkDDYX7TnUK8xfjqk,623
148
- seleniumbase-4.44.2.dist-info/top_level.txt,sha256=4N97aBOQ8ETCnDnokBsWb07lJfTaq3C1ZzYRxvLMxqU,19
149
- seleniumbase-4.44.2.dist-info/RECORD,,
144
+ seleniumbase-4.44.3.dist-info/licenses/LICENSE,sha256=BRblZsX7HyPUjQmYTiyWr_e9tzWvmR3R4SFclM2R3W0,1085
145
+ seleniumbase-4.44.3.dist-info/METADATA,sha256=vI7yBxqypo6ZLfOv2f6IfmrudLXzmvXcChaL_0vaUKg,90492
146
+ seleniumbase-4.44.3.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
147
+ seleniumbase-4.44.3.dist-info/entry_points.txt,sha256=CNrh2EKNaHYEhO6pP1RJyVLB99LkDDYX7TnUK8xfjqk,623
148
+ seleniumbase-4.44.3.dist-info/top_level.txt,sha256=4N97aBOQ8ETCnDnokBsWb07lJfTaq3C1ZzYRxvLMxqU,19
149
+ seleniumbase-4.44.3.dist-info/RECORD,,