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.
- seleniumbase/__version__.py +1 -1
 - seleniumbase/core/browser_launcher.py +49 -24
 - seleniumbase/fixtures/base_case.py +22 -22
 - seleniumbase/undetected/cdp.py +1 -12
 - seleniumbase/undetected/cdp_driver/browser.py +4 -6
 - seleniumbase/undetected/cdp_driver/config.py +12 -4
 - {seleniumbase-4.44.2.dist-info → seleniumbase-4.44.3.dist-info}/METADATA +1 -1
 - {seleniumbase-4.44.2.dist-info → seleniumbase-4.44.3.dist-info}/RECORD +12 -12
 - {seleniumbase-4.44.2.dist-info → seleniumbase-4.44.3.dist-info}/WHEEL +0 -0
 - {seleniumbase-4.44.2.dist-info → seleniumbase-4.44.3.dist-info}/entry_points.txt +0 -0
 - {seleniumbase-4.44.2.dist-info → seleniumbase-4.44.3.dist-info}/licenses/LICENSE +0 -0
 - {seleniumbase-4.44.2.dist-info → seleniumbase-4.44.3.dist-info}/top_level.txt +0 -0
 
    
        seleniumbase/__version__.py
    CHANGED
    
    | 
         @@ -1,2 +1,2 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            # seleniumbase package
         
     | 
| 
       2 
     | 
    
         
            -
            __version__ = "4.44. 
     | 
| 
      
 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 
     | 
    
         
            -
                         
     | 
| 
      
 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 
     | 
    
         
            -
                     
     | 
| 
       2512 
     | 
    
         
            -
             
     | 
| 
       2513 
     | 
    
         
            -
             
     | 
| 
       2514 
     | 
    
         
            -
             
     | 
| 
       2515 
     | 
    
         
            -
                        chrome_options  
     | 
| 
       2516 
     | 
    
         
            -
             
     | 
| 
       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 
     | 
    
         
            -
                     
     | 
| 
       2523 
     | 
    
         
            -
             
     | 
| 
       2524 
     | 
    
         
            -
             
     | 
| 
       2525 
     | 
    
         
            -
             
     | 
| 
       2526 
     | 
    
         
            -
             
     | 
| 
       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 
     | 
    
         
            -
                     
     | 
| 
       2531 
     | 
    
         
            -
             
     | 
| 
       2532 
     | 
    
         
            -
             
     | 
| 
       2533 
     | 
    
         
            -
             
     | 
| 
       2534 
     | 
    
         
            -
             
     | 
| 
       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 
     | 
    
         | 
    
        seleniumbase/undetected/cdp.py
    CHANGED
    
    | 
         @@ -1,9 +1,7 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            import fasteners
         
     | 
| 
       2 
1 
     | 
    
         
             
            import json
         
     | 
| 
       3 
2 
     | 
    
         
             
            import logging
         
     | 
| 
       4 
3 
     | 
    
         
             
            import requests
         
     | 
| 
       5 
     | 
    
         
            -
             
     | 
| 
       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 
     | 
    
         
            -
                        #  
     | 
| 
       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 
     | 
    
         
            -
                             
     | 
| 
       379 
     | 
    
         
            -
                             
     | 
| 
      
 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. 
     | 
| 
      
 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  
     | 
| 
      
 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:
         
     | 
| 
         @@ -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= 
     | 
| 
      
 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= 
     | 
| 
      
 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= 
     | 
| 
      
 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= 
     | 
| 
      
 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= 
     | 
| 
      
 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= 
     | 
| 
      
 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. 
     | 
| 
       145 
     | 
    
         
            -
            seleniumbase-4.44. 
     | 
| 
       146 
     | 
    
         
            -
            seleniumbase-4.44. 
     | 
| 
       147 
     | 
    
         
            -
            seleniumbase-4.44. 
     | 
| 
       148 
     | 
    
         
            -
            seleniumbase-4.44. 
     | 
| 
       149 
     | 
    
         
            -
            seleniumbase-4.44. 
     | 
| 
      
 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,,
         
     | 
| 
         
            File without changes
         
     | 
| 
         
            File without changes
         
     | 
| 
         
            File without changes
         
     | 
| 
         
            File without changes
         
     |