seleniumbase 4.44.2__py3-none-any.whl → 4.44.4__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- seleniumbase/__version__.py +1 -1
 - seleniumbase/core/browser_launcher.py +57 -28
 - seleniumbase/core/sb_cdp.py +8 -1
 - seleniumbase/fixtures/base_case.py +27 -24
 - seleniumbase/undetected/cdp.py +1 -12
 - seleniumbase/undetected/cdp_driver/browser.py +4 -6
 - seleniumbase/undetected/cdp_driver/config.py +13 -4
 - seleniumbase/undetected/cdp_driver/element.py +4 -1
 - seleniumbase/undetected/cdp_driver/tab.py +4 -1
 - {seleniumbase-4.44.2.dist-info → seleniumbase-4.44.4.dist-info}/METADATA +4 -3
 - {seleniumbase-4.44.2.dist-info → seleniumbase-4.44.4.dist-info}/RECORD +15 -15
 - {seleniumbase-4.44.2.dist-info → seleniumbase-4.44.4.dist-info}/WHEEL +0 -0
 - {seleniumbase-4.44.2.dist-info → seleniumbase-4.44.4.dist-info}/entry_points.txt +0 -0
 - {seleniumbase-4.44.2.dist-info → seleniumbase-4.44.4.dist-info}/licenses/LICENSE +0 -0
 - {seleniumbase-4.44.2.dist-info → seleniumbase-4.44.4.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.4"
         
     | 
| 
         @@ -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 
     | 
    
         
            +
                    if ext_dir not in completed_loads:
         
     | 
| 
      
 299 
     | 
    
         
            +
                        completed_loads.append(ext_dir)
         
     | 
| 
      
 300 
     | 
    
         
            +
                        if not use_uc and os.path.exists(os.path.realpath(ext_dir)):
         
     | 
| 
      
 301 
     | 
    
         
            +
                            with suppress(Exception):
         
     | 
| 
      
 302 
     | 
    
         
            +
                                driver.webextension.install(os.path.realpath(ext_dir))
         
     | 
| 
       296 
303 
     | 
    
         
             
                if proxy_auth:
         
     | 
| 
      
 304 
     | 
    
         
            +
                    if not use_uc and os.path.exists(proxy_helper.PROXY_DIR_PATH):
         
     | 
| 
      
 305 
     | 
    
         
            +
                        with suppress(Exception):
         
     | 
| 
      
 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)
         
     | 
| 
         @@ -828,6 +838,7 @@ def uc_open_with_cdp_mode(driver, url=None, **kwargs): 
     | 
|
| 
       828 
838 
     | 
    
         
             
                cdp.get_element_position = CDPM.get_element_position
         
     | 
| 
       829 
839 
     | 
    
         
             
                cdp.get_gui_element_rect = CDPM.get_gui_element_rect
         
     | 
| 
       830 
840 
     | 
    
         
             
                cdp.get_gui_element_center = CDPM.get_gui_element_center
         
     | 
| 
      
 841 
     | 
    
         
            +
                cdp.get_html = CDPM.get_html
         
     | 
| 
       831 
842 
     | 
    
         
             
                cdp.get_page_source = CDPM.get_page_source
         
     | 
| 
       832 
843 
     | 
    
         
             
                cdp.get_user_agent = CDPM.get_user_agent
         
     | 
| 
       833 
844 
     | 
    
         
             
                cdp.get_cookie_string = CDPM.get_cookie_string
         
     | 
| 
         @@ -924,6 +935,7 @@ def uc_open_with_cdp_mode(driver, url=None, **kwargs): 
     | 
|
| 
       924 
935 
     | 
    
         
             
                cdp.core = core_items
         
     | 
| 
       925 
936 
     | 
    
         
             
                cdp.loop = cdp.get_event_loop()
         
     | 
| 
       926 
937 
     | 
    
         
             
                driver.cdp = cdp
         
     | 
| 
      
 938 
     | 
    
         
            +
                driver.solve_captcha = CDPM.solve_captcha
         
     | 
| 
       927 
939 
     | 
    
         
             
                driver._is_using_cdp = True
         
     | 
| 
       928 
940 
     | 
    
         | 
| 
       929 
941 
     | 
    
         | 
| 
         @@ -2087,6 +2099,7 @@ def _add_chrome_proxy_extension( 
     | 
|
| 
       2087 
2099 
     | 
    
         
             
                """Implementation of https://stackoverflow.com/a/35293284/7058266
         
     | 
| 
       2088 
2100 
     | 
    
         
             
                for https://stackoverflow.com/q/12848327/7058266
         
     | 
| 
       2089 
2101 
     | 
    
         
             
                (Run Selenium on a proxy server that requires authentication.)"""
         
     | 
| 
      
 2102 
     | 
    
         
            +
                zip_it = False
         
     | 
| 
       2090 
2103 
     | 
    
         
             
                args = " ".join(sys.argv)
         
     | 
| 
       2091 
2104 
     | 
    
         
             
                bypass_list = proxy_bypass_list
         
     | 
| 
       2092 
2105 
     | 
    
         
             
                if (
         
     | 
| 
         @@ -2466,14 +2479,28 @@ def _set_chrome_options( 
     | 
|
| 
       2466 
2479 
     | 
    
         
             
                    # Can be a comma-separated list of .ZIP or .CRX files
         
     | 
| 
       2467 
2480 
     | 
    
         
             
                    extension_zip_list = extension_zip.split(",")
         
     | 
| 
       2468 
2481 
     | 
    
         
             
                    for extension_zip_item in extension_zip_list:
         
     | 
| 
       2469 
     | 
    
         
            -
                        abs_path = os.path. 
     | 
| 
       2470 
     | 
    
         
            -
                         
     | 
| 
      
 2482 
     | 
    
         
            +
                        abs_path = os.path.realpath(extension_zip_item)
         
     | 
| 
      
 2483 
     | 
    
         
            +
                        if os.path.exists(abs_path):
         
     | 
| 
      
 2484 
     | 
    
         
            +
                            try:
         
     | 
| 
      
 2485 
     | 
    
         
            +
                                abs_path_dir = os.path.join(
         
     | 
| 
      
 2486 
     | 
    
         
            +
                                    DOWNLOADS_FOLDER, abs_path.split(".")[0]
         
     | 
| 
      
 2487 
     | 
    
         
            +
                                )
         
     | 
| 
      
 2488 
     | 
    
         
            +
                                _unzip_to_new_folder(abs_path, abs_path_dir)
         
     | 
| 
      
 2489 
     | 
    
         
            +
                                chrome_options = add_chrome_ext_dir(
         
     | 
| 
      
 2490 
     | 
    
         
            +
                                    chrome_options, abs_path_dir
         
     | 
| 
      
 2491 
     | 
    
         
            +
                                )
         
     | 
| 
      
 2492 
     | 
    
         
            +
                                sb_config._ext_dirs.append(abs_path_dir)
         
     | 
| 
      
 2493 
     | 
    
         
            +
                            except Exception:
         
     | 
| 
      
 2494 
     | 
    
         
            +
                                with suppress(Exception):
         
     | 
| 
      
 2495 
     | 
    
         
            +
                                    chrome_options.add_extension(abs_path)
         
     | 
| 
       2471 
2496 
     | 
    
         
             
                if extension_dir:
         
     | 
| 
       2472 
2497 
     | 
    
         
             
                    # load-extension input can be a comma-separated list
         
     | 
| 
       2473 
2498 
     | 
    
         
             
                    abs_path = (
         
     | 
| 
       2474 
     | 
    
         
            -
                        ",".join(os.path. 
     | 
| 
      
 2499 
     | 
    
         
            +
                        ",".join(os.path.realpath(p) for p in extension_dir.split(","))
         
     | 
| 
       2475 
2500 
     | 
    
         
             
                    )
         
     | 
| 
       2476 
2501 
     | 
    
         
             
                    chrome_options = add_chrome_ext_dir(chrome_options, abs_path)
         
     | 
| 
      
 2502 
     | 
    
         
            +
                    for p in extension_dir.split(","):
         
     | 
| 
      
 2503 
     | 
    
         
            +
                        sb_config._ext_dirs.append(os.path.realpath(p))
         
     | 
| 
       2477 
2504 
     | 
    
         
             
                if (
         
     | 
| 
       2478 
2505 
     | 
    
         
             
                    page_load_strategy
         
     | 
| 
       2479 
2506 
     | 
    
         
             
                    and page_load_strategy.lower() in ["eager", "none"]
         
     | 
| 
         @@ -2508,37 +2535,32 @@ def _set_chrome_options( 
     | 
|
| 
       2508 
2535 
     | 
    
         
             
                if (settings.DISABLE_CSP_ON_CHROME or disable_csp) and not headless:
         
     | 
| 
       2509 
2536 
     | 
    
         
             
                    # Headless Chrome does not support extensions, which are required
         
     | 
| 
       2510 
2537 
     | 
    
         
             
                    # 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)
         
     | 
| 
      
 2538 
     | 
    
         
            +
                    disable_csp_zip = DISABLE_CSP_ZIP_PATH
         
     | 
| 
      
 2539 
     | 
    
         
            +
                    disable_csp_dir = os.path.join(DOWNLOADS_FOLDER, "disable_csp")
         
     | 
| 
      
 2540 
     | 
    
         
            +
                    _unzip_to_new_folder(disable_csp_zip, disable_csp_dir)
         
     | 
| 
      
 2541 
     | 
    
         
            +
                    chrome_options = add_chrome_ext_dir(
         
     | 
| 
      
 2542 
     | 
    
         
            +
                        chrome_options, disable_csp_dir
         
     | 
| 
      
 2543 
     | 
    
         
            +
                    )
         
     | 
| 
      
 2544 
     | 
    
         
            +
                    sb_config._ext_dirs.append(disable_csp_dir)
         
     | 
| 
       2520 
2545 
     | 
    
         
             
                if ad_block_on and not headless:
         
     | 
| 
       2521 
2546 
     | 
    
         
             
                    # Headless Chrome does not support extensions.
         
     | 
| 
       2522 
     | 
    
         
            -
                     
     | 
| 
       2523 
     | 
    
         
            -
             
     | 
| 
       2524 
     | 
    
         
            -
             
     | 
| 
       2525 
     | 
    
         
            -
             
     | 
| 
       2526 
     | 
    
         
            -
             
     | 
| 
       2527 
     | 
    
         
            -
                    else:
         
     | 
| 
       2528 
     | 
    
         
            -
                        chrome_options = _add_chrome_ad_block_extension(chrome_options)
         
     | 
| 
      
 2547 
     | 
    
         
            +
                    ad_block_zip = AD_BLOCK_ZIP_PATH
         
     | 
| 
      
 2548 
     | 
    
         
            +
                    ad_block_dir = os.path.join(DOWNLOADS_FOLDER, "ad_block")
         
     | 
| 
      
 2549 
     | 
    
         
            +
                    _unzip_to_new_folder(ad_block_zip, ad_block_dir)
         
     | 
| 
      
 2550 
     | 
    
         
            +
                    chrome_options = add_chrome_ext_dir(chrome_options, ad_block_dir)
         
     | 
| 
      
 2551 
     | 
    
         
            +
                    sb_config._ext_dirs.append(ad_block_dir)
         
     | 
| 
       2529 
2552 
     | 
    
         
             
                if recorder_ext and not headless:
         
     | 
| 
       2530 
     | 
    
         
            -
                     
     | 
| 
       2531 
     | 
    
         
            -
             
     | 
| 
       2532 
     | 
    
         
            -
             
     | 
| 
       2533 
     | 
    
         
            -
             
     | 
| 
       2534 
     | 
    
         
            -
             
     | 
| 
       2535 
     | 
    
         
            -
                    else:
         
     | 
| 
       2536 
     | 
    
         
            -
                        chrome_options = _add_chrome_recorder_extension(chrome_options)
         
     | 
| 
      
 2553 
     | 
    
         
            +
                    recorder_zip = RECORDER_ZIP_PATH
         
     | 
| 
      
 2554 
     | 
    
         
            +
                    recorder_dir = os.path.join(DOWNLOADS_FOLDER, "recorder")
         
     | 
| 
      
 2555 
     | 
    
         
            +
                    _unzip_to_new_folder(recorder_zip, recorder_dir)
         
     | 
| 
      
 2556 
     | 
    
         
            +
                    chrome_options = add_chrome_ext_dir(chrome_options, recorder_dir)
         
     | 
| 
      
 2557 
     | 
    
         
            +
                    sb_config._ext_dirs.append(recorder_dir)
         
     | 
| 
       2537 
2558 
     | 
    
         
             
                if chromium_arg and "sbase" in chromium_arg:
         
     | 
| 
       2538 
2559 
     | 
    
         
             
                    sbase_ext_zip = SBASE_EXT_ZIP_PATH
         
     | 
| 
       2539 
2560 
     | 
    
         
             
                    sbase_ext_dir = os.path.join(DOWNLOADS_FOLDER, "sbase_ext")
         
     | 
| 
       2540 
2561 
     | 
    
         
             
                    _unzip_to_new_folder(sbase_ext_zip, sbase_ext_dir)
         
     | 
| 
       2541 
2562 
     | 
    
         
             
                    chrome_options = add_chrome_ext_dir(chrome_options, sbase_ext_dir)
         
     | 
| 
      
 2563 
     | 
    
         
            +
                    sb_config._ext_dirs.append(sbase_ext_dir)
         
     | 
| 
       2542 
2564 
     | 
    
         
             
                if proxy_string:
         
     | 
| 
       2543 
2565 
     | 
    
         
             
                    if proxy_auth:
         
     | 
| 
       2544 
2566 
     | 
    
         
             
                        zip_it = True
         
     | 
| 
         @@ -2722,8 +2744,14 @@ def _set_chrome_options( 
     | 
|
| 
       2722 
2744 
     | 
    
         
             
                        included_disabled_features.append(item)
         
     | 
| 
       2723 
2745 
     | 
    
         
             
                d_f_string = ",".join(included_disabled_features)
         
     | 
| 
       2724 
2746 
     | 
    
         
             
                chrome_options.add_argument("--disable-features=%s" % d_f_string)
         
     | 
| 
      
 2747 
     | 
    
         
            +
                chrome_options.add_argument("--enable-unsafe-extension-debugging")
         
     | 
| 
       2725 
2748 
     | 
    
         
             
                if proxy_auth:
         
     | 
| 
       2726 
2749 
     | 
    
         
             
                    chrome_options.add_argument("--test-type")
         
     | 
| 
      
 2750 
     | 
    
         
            +
                if proxy_auth or sb_config._ext_dirs:
         
     | 
| 
      
 2751 
     | 
    
         
            +
                    if not is_using_uc(undetectable, browser_name):
         
     | 
| 
      
 2752 
     | 
    
         
            +
                        chrome_options.add_argument("--remote-debugging-pipe")
         
     | 
| 
      
 2753 
     | 
    
         
            +
                        chrome_options.enable_webextensions = True
         
     | 
| 
      
 2754 
     | 
    
         
            +
                        chrome_options.enable_bidi = True
         
     | 
| 
       2727 
2755 
     | 
    
         
             
                if (
         
     | 
| 
       2728 
2756 
     | 
    
         
             
                    is_using_uc(undetectable, browser_name)
         
     | 
| 
       2729 
2757 
     | 
    
         
             
                    and (
         
     | 
| 
         @@ -2988,6 +3016,7 @@ def get_driver( 
     | 
|
| 
       2988 
3016 
     | 
    
         
             
                device_pixel_ratio=None,
         
     | 
| 
       2989 
3017 
     | 
    
         
             
                browser=None,  # A duplicate of browser_name to avoid confusion
         
     | 
| 
       2990 
3018 
     | 
    
         
             
            ):
         
     | 
| 
      
 3019 
     | 
    
         
            +
                sb_config._ext_dirs = []
         
     | 
| 
       2991 
3020 
     | 
    
         
             
                driver_dir = DRIVER_DIR
         
     | 
| 
       2992 
3021 
     | 
    
         
             
                if (
         
     | 
| 
       2993 
3022 
     | 
    
         
             
                    hasattr(sb_config, "binary_location")
         
     | 
| 
         @@ -4552,12 +4581,12 @@ def get_local_driver( 
     | 
|
| 
       4552 
4581 
     | 
    
         
             
                        # Can be a comma-separated list of .ZIP or .CRX files
         
     | 
| 
       4553 
4582 
     | 
    
         
             
                        extension_zip_list = extension_zip.split(",")
         
     | 
| 
       4554 
4583 
     | 
    
         
             
                        for extension_zip_item in extension_zip_list:
         
     | 
| 
       4555 
     | 
    
         
            -
                            abs_path = os.path. 
     | 
| 
      
 4584 
     | 
    
         
            +
                            abs_path = os.path.realpath(extension_zip_item)
         
     | 
| 
       4556 
4585 
     | 
    
         
             
                            edge_options.add_extension(abs_path)
         
     | 
| 
       4557 
4586 
     | 
    
         
             
                    if extension_dir:
         
     | 
| 
       4558 
4587 
     | 
    
         
             
                        # load-extension input can be a comma-separated list
         
     | 
| 
       4559 
4588 
     | 
    
         
             
                        abs_path = (
         
     | 
| 
       4560 
     | 
    
         
            -
                            ",".join(os.path. 
     | 
| 
      
 4589 
     | 
    
         
            +
                            ",".join(os.path.realpath(p) for p in extension_dir.split(","))
         
     | 
| 
       4561 
4590 
     | 
    
         
             
                        )
         
     | 
| 
       4562 
4591 
     | 
    
         
             
                        edge_options = add_chrome_ext_dir(edge_options, abs_path)
         
     | 
| 
       4563 
4592 
     | 
    
         
             
                    edge_options.add_argument("--disable-infobars")
         
     | 
    
        seleniumbase/core/sb_cdp.py
    CHANGED
    
    | 
         @@ -1185,7 +1185,14 @@ class CDPMethods(): 
     | 
|
| 
       1185 
1185 
     | 
    
         
             
                        self.page.evaluate("window.location.origin")
         
     | 
| 
       1186 
1186 
     | 
    
         
             
                    )
         
     | 
| 
       1187 
1187 
     | 
    
         | 
| 
       1188 
     | 
    
         
            -
                def  
     | 
| 
      
 1188 
     | 
    
         
            +
                def get_html(self, include_shadow_dom=True):
         
     | 
| 
      
 1189 
     | 
    
         
            +
                    return self.get_page_source(
         
     | 
| 
      
 1190 
     | 
    
         
            +
                        include_shadow_dom=include_shadow_dom
         
     | 
| 
      
 1191 
     | 
    
         
            +
                    )
         
     | 
| 
      
 1192 
     | 
    
         
            +
             
     | 
| 
      
 1193 
     | 
    
         
            +
                def get_page_source(self, include_shadow_dom=True):
         
     | 
| 
      
 1194 
     | 
    
         
            +
                    if include_shadow_dom:
         
     | 
| 
      
 1195 
     | 
    
         
            +
                        return self.find_element("html").get_html()
         
     | 
| 
       1189 
1196 
     | 
    
         
             
                    try:
         
     | 
| 
       1190 
1197 
     | 
    
         
             
                        source = self.loop.run_until_complete(
         
     | 
| 
       1191 
1198 
     | 
    
         
             
                            self.page.evaluate("document.documentElement.outerHTML")
         
     | 
| 
         @@ -1293,8 +1293,11 @@ class BaseCase(unittest.TestCase): 
     | 
|
| 
       1293 
1293 
     | 
    
         
             
                    self.__check_scope()
         
     | 
| 
       1294 
1294 
     | 
    
         
             
                    return self.execute_script("return window.location.origin;")
         
     | 
| 
       1295 
1295 
     | 
    
         | 
| 
       1296 
     | 
    
         
            -
                def  
     | 
| 
       1297 
     | 
    
         
            -
                     
     | 
| 
      
 1296 
     | 
    
         
            +
                def get_html(self, *args, **kwargs):
         
     | 
| 
      
 1297 
     | 
    
         
            +
                    return self.get_page_source(*args, **kwargs)
         
     | 
| 
      
 1298 
     | 
    
         
            +
             
     | 
| 
      
 1299 
     | 
    
         
            +
                def get_page_source(self, *args, **kwargs):
         
     | 
| 
      
 1300 
     | 
    
         
            +
                    if self.__is_cdp_swap_needed(*args, **kwargs):
         
     | 
| 
       1298 
1301 
     | 
    
         
             
                        return self.cdp.get_page_source()
         
     | 
| 
       1299 
1302 
     | 
    
         
             
                    self.wait_for_ready_state_complete()
         
     | 
| 
       1300 
1303 
     | 
    
         
             
                    if self.__needs_minimum_wait:
         
     | 
| 
         @@ -4694,7 +4697,7 @@ class BaseCase(unittest.TestCase): 
     | 
|
| 
       4694 
4697 
     | 
    
         
             
                    if not os.path.exists(file_path):
         
     | 
| 
       4695 
4698 
     | 
    
         
             
                        os.makedirs(file_path)
         
     | 
| 
       4696 
4699 
     | 
    
         
             
                    cookies_file_path = os.path.join(file_path, name)
         
     | 
| 
       4697 
     | 
    
         
            -
                    cookies_file = open(cookies_file_path, "w+", encoding="utf-8")
         
     | 
| 
      
 4700 
     | 
    
         
            +
                    cookies_file = open(cookies_file_path, mode="w+", encoding="utf-8")
         
     | 
| 
       4698 
4701 
     | 
    
         
             
                    cookies_file.writelines(json_cookies)
         
     | 
| 
       4699 
4702 
     | 
    
         
             
                    cookies_file.close()
         
     | 
| 
       4700 
4703 
     | 
    
         | 
| 
         @@ -5751,7 +5754,7 @@ class BaseCase(unittest.TestCase): 
     | 
|
| 
       5751 
5754 
     | 
    
         
             
                    extra_file_name = "__init__.py"
         
     | 
| 
       5752 
5755 
     | 
    
         
             
                    extra_file_path = os.path.join(recordings_folder, extra_file_name)
         
     | 
| 
       5753 
5756 
     | 
    
         
             
                    if not os.path.exists(extra_file_path):
         
     | 
| 
       5754 
     | 
    
         
            -
                        out_file = open(extra_file_path, "w+", "utf-8")
         
     | 
| 
      
 5757 
     | 
    
         
            +
                        out_file = open(extra_file_path, mode="w+", encoding="utf-8")
         
     | 
| 
       5755 
5758 
     | 
    
         
             
                        out_file.writelines("\r\n".join(data))
         
     | 
| 
       5756 
5759 
     | 
    
         
             
                        out_file.close()
         
     | 
| 
       5757 
5760 
     | 
    
         
             
                        sys.stdout.write("\nCreated recordings%s__init__.py" % os.sep)
         
     | 
| 
         @@ -5799,7 +5802,7 @@ class BaseCase(unittest.TestCase): 
     | 
|
| 
       5799 
5802 
     | 
    
         
             
                    extra_file_name = "pytest.ini"
         
     | 
| 
       5800 
5803 
     | 
    
         
             
                    extra_file_path = os.path.join(recordings_folder, extra_file_name)
         
     | 
| 
       5801 
5804 
     | 
    
         
             
                    if not os.path.exists(extra_file_path):
         
     | 
| 
       5802 
     | 
    
         
            -
                        out_file = open(extra_file_path, "w+", "utf-8")
         
     | 
| 
      
 5805 
     | 
    
         
            +
                        out_file = open(extra_file_path, mode="w+", encoding="utf-8")
         
     | 
| 
       5803 
5806 
     | 
    
         
             
                        out_file.writelines("\r\n".join(data))
         
     | 
| 
       5804 
5807 
     | 
    
         
             
                        out_file.close()
         
     | 
| 
       5805 
5808 
     | 
    
         
             
                        sys.stdout.write("\nCreated recordings%spytest.ini" % os.sep)
         
     | 
| 
         @@ -5820,7 +5823,7 @@ class BaseCase(unittest.TestCase): 
     | 
|
| 
       5820 
5823 
     | 
    
         
             
                    extra_file_name = "setup.cfg"
         
     | 
| 
       5821 
5824 
     | 
    
         
             
                    extra_file_path = os.path.join(recordings_folder, extra_file_name)
         
     | 
| 
       5822 
5825 
     | 
    
         
             
                    if not os.path.exists(extra_file_path):
         
     | 
| 
       5823 
     | 
    
         
            -
                        out_file = open(extra_file_path, "w+", "utf-8")
         
     | 
| 
      
 5826 
     | 
    
         
            +
                        out_file = open(extra_file_path, mode="w+", encoding="utf-8")
         
     | 
| 
       5824 
5827 
     | 
    
         
             
                        out_file.writelines("\r\n".join(data))
         
     | 
| 
       5825 
5828 
     | 
    
         
             
                        out_file.close()
         
     | 
| 
       5826 
5829 
     | 
    
         
             
                        sys.stdout.write("\nCreated recordings%ssetup.cfg" % os.sep)
         
     | 
| 
         @@ -5838,7 +5841,7 @@ class BaseCase(unittest.TestCase): 
     | 
|
| 
       5838 
5841 
     | 
    
         
             
                    elif context_filename:
         
     | 
| 
       5839 
5842 
     | 
    
         
             
                        file_name = context_filename
         
     | 
| 
       5840 
5843 
     | 
    
         
             
                    file_path = os.path.join(recordings_folder, file_name)
         
     | 
| 
       5841 
     | 
    
         
            -
                    out_file = open(file_path, "w+", "utf-8")
         
     | 
| 
      
 5844 
     | 
    
         
            +
                    out_file = open(file_path, mode="w+", encoding="utf-8")
         
     | 
| 
       5842 
5845 
     | 
    
         
             
                    out_file.writelines("\r\n".join(data))
         
     | 
| 
       5843 
5846 
     | 
    
         
             
                    out_file.close()
         
     | 
| 
       5844 
5847 
     | 
    
         
             
                    rec_message = ">>> RECORDING SAVED as: "
         
     | 
| 
         @@ -5940,7 +5943,7 @@ class BaseCase(unittest.TestCase): 
     | 
|
| 
       5940 
5943 
     | 
    
         
             
                        file_name = sb_config.behave_scenario.filename.replace(".", "_")
         
     | 
| 
       5941 
5944 
     | 
    
         
             
                    file_name = file_name.split("/")[-1].split("\\")[-1] + "_rec.feature"
         
     | 
| 
       5942 
5945 
     | 
    
         
             
                    file_path = os.path.join(features_folder, file_name)
         
     | 
| 
       5943 
     | 
    
         
            -
                    out_file = open(file_path, "w+", "utf-8")
         
     | 
| 
      
 5946 
     | 
    
         
            +
                    out_file = open(file_path, mode="w+", encoding="utf-8")
         
     | 
| 
       5944 
5947 
     | 
    
         
             
                    out_file.writelines("\r\n".join(data))
         
     | 
| 
       5945 
5948 
     | 
    
         
             
                    out_file.close()
         
     | 
| 
       5946 
5949 
     | 
    
         | 
| 
         @@ -5978,7 +5981,7 @@ class BaseCase(unittest.TestCase): 
     | 
|
| 
       5978 
5981 
     | 
    
         
             
                    file_name = "__init__.py"
         
     | 
| 
       5979 
5982 
     | 
    
         
             
                    file_path = os.path.join(features_folder, file_name)
         
     | 
| 
       5980 
5983 
     | 
    
         
             
                    if not os.path.exists(file_path):
         
     | 
| 
       5981 
     | 
    
         
            -
                        out_file = open(file_path, "w+", "utf-8")
         
     | 
| 
      
 5984 
     | 
    
         
            +
                        out_file = open(file_path, mode="w+", encoding="utf-8")
         
     | 
| 
       5982 
5985 
     | 
    
         
             
                        out_file.writelines("\r\n".join(data))
         
     | 
| 
       5983 
5986 
     | 
    
         
             
                        out_file.close()
         
     | 
| 
       5984 
5987 
     | 
    
         
             
                        print("Created recordings/features/__init__.py")
         
     | 
| 
         @@ -5991,7 +5994,7 @@ class BaseCase(unittest.TestCase): 
     | 
|
| 
       5991 
5994 
     | 
    
         
             
                    file_name = "behave.ini"
         
     | 
| 
       5992 
5995 
     | 
    
         
             
                    file_path = os.path.join(features_folder, file_name)
         
     | 
| 
       5993 
5996 
     | 
    
         
             
                    if not os.path.exists(file_path):
         
     | 
| 
       5994 
     | 
    
         
            -
                        out_file = open(file_path, "w+", "utf-8")
         
     | 
| 
      
 5997 
     | 
    
         
            +
                        out_file = open(file_path, mode="w+", encoding="utf-8")
         
     | 
| 
       5995 
5998 
     | 
    
         
             
                        out_file.writelines("\r\n".join(data))
         
     | 
| 
       5996 
5999 
     | 
    
         
             
                        out_file.close()
         
     | 
| 
       5997 
6000 
     | 
    
         
             
                        print("Created recordings/features/behave.ini")
         
     | 
| 
         @@ -6030,7 +6033,7 @@ class BaseCase(unittest.TestCase): 
     | 
|
| 
       6030 
6033 
     | 
    
         
             
                    file_name = "environment.py"
         
     | 
| 
       6031 
6034 
     | 
    
         
             
                    file_path = os.path.join(features_folder, file_name)
         
     | 
| 
       6032 
6035 
     | 
    
         
             
                    if not os.path.exists(file_path):
         
     | 
| 
       6033 
     | 
    
         
            -
                        out_file = open(file_path, "w+", "utf-8")
         
     | 
| 
      
 6036 
     | 
    
         
            +
                        out_file = open(file_path, mode="w+", encoding="utf-8")
         
     | 
| 
       6034 
6037 
     | 
    
         
             
                        out_file.writelines("\r\n".join(data))
         
     | 
| 
       6035 
6038 
     | 
    
         
             
                        out_file.close()
         
     | 
| 
       6036 
6039 
     | 
    
         
             
                        print("Created recordings/features/environment.py")
         
     | 
| 
         @@ -6040,7 +6043,7 @@ class BaseCase(unittest.TestCase): 
     | 
|
| 
       6040 
6043 
     | 
    
         
             
                    file_name = "__init__.py"
         
     | 
| 
       6041 
6044 
     | 
    
         
             
                    file_path = os.path.join(steps_folder, file_name)
         
     | 
| 
       6042 
6045 
     | 
    
         
             
                    if not os.path.exists(file_path):
         
     | 
| 
       6043 
     | 
    
         
            -
                        out_file = open(file_path, "w+", "utf-8")
         
     | 
| 
      
 6046 
     | 
    
         
            +
                        out_file = open(file_path, mode="w+", encoding="utf-8")
         
     | 
| 
       6044 
6047 
     | 
    
         
             
                        out_file.writelines("\r\n".join(data))
         
     | 
| 
       6045 
6048 
     | 
    
         
             
                        out_file.close()
         
     | 
| 
       6046 
6049 
     | 
    
         
             
                        print("Created recordings/features/steps/__init__.py")
         
     | 
| 
         @@ -6051,7 +6054,7 @@ class BaseCase(unittest.TestCase): 
     | 
|
| 
       6051 
6054 
     | 
    
         
             
                    file_name = "imported.py"
         
     | 
| 
       6052 
6055 
     | 
    
         
             
                    file_path = os.path.join(steps_folder, file_name)
         
     | 
| 
       6053 
6056 
     | 
    
         
             
                    if not os.path.exists(file_path):
         
     | 
| 
       6054 
     | 
    
         
            -
                        out_file = open(file_path, "w+", "utf-8")
         
     | 
| 
      
 6057 
     | 
    
         
            +
                        out_file = open(file_path, mode="w+", encoding="utf-8")
         
     | 
| 
       6055 
6058 
     | 
    
         
             
                        out_file.writelines("\r\n".join(data))
         
     | 
| 
       6056 
6059 
     | 
    
         
             
                        out_file.close()
         
     | 
| 
       6057 
6060 
     | 
    
         
             
                        print("Created recordings/features/steps/imported.py")
         
     | 
| 
         @@ -11120,7 +11123,7 @@ class BaseCase(unittest.TestCase): 
     | 
|
| 
       11120 
11123 
     | 
    
         
             
                        return  # Skip the rest when deferred visual asserts are used
         
     | 
| 
       11121 
11124 
     | 
    
         
             
                    the_html = visual_helper.get_sbs_html()
         
     | 
| 
       11122 
11125 
     | 
    
         
             
                    file_path = os.path.join(test_logpath, constants.SideBySide.HTML_FILE)
         
     | 
| 
       11123 
     | 
    
         
            -
                    out_file = open(file_path, "w+", encoding="utf-8")
         
     | 
| 
      
 11126 
     | 
    
         
            +
                    out_file = open(file_path, mode="w+", encoding="utf-8")
         
     | 
| 
       11124 
11127 
     | 
    
         
             
                    out_file.writelines(the_html)
         
     | 
| 
       11125 
11128 
     | 
    
         
             
                    out_file.close()
         
     | 
| 
       11126 
11129 
     | 
    
         | 
| 
         @@ -11280,16 +11283,16 @@ class BaseCase(unittest.TestCase): 
     | 
|
| 
       11280 
11283 
     | 
    
         
             
                        self.save_screenshot(
         
     | 
| 
       11281 
11284 
     | 
    
         
             
                            baseline_png, visual_baseline_path, selector="body"
         
     | 
| 
       11282 
11285 
     | 
    
         
             
                        )
         
     | 
| 
       11283 
     | 
    
         
            -
                        out_file = open(page_url_file, "w+", encoding="utf-8")
         
     | 
| 
      
 11286 
     | 
    
         
            +
                        out_file = open(page_url_file, mode="w+", encoding="utf-8")
         
     | 
| 
       11284 
11287 
     | 
    
         
             
                        out_file.writelines(page_url)
         
     | 
| 
       11285 
11288 
     | 
    
         
             
                        out_file.close()
         
     | 
| 
       11286 
     | 
    
         
            -
                        out_file = open(level_1_file, "w+", encoding="utf-8")
         
     | 
| 
      
 11289 
     | 
    
         
            +
                        out_file = open(level_1_file, mode="w+", encoding="utf-8")
         
     | 
| 
       11287 
11290 
     | 
    
         
             
                        out_file.writelines(json.dumps(level_1))
         
     | 
| 
       11288 
11291 
     | 
    
         
             
                        out_file.close()
         
     | 
| 
       11289 
     | 
    
         
            -
                        out_file = open(level_2_file, "w+", encoding="utf-8")
         
     | 
| 
      
 11292 
     | 
    
         
            +
                        out_file = open(level_2_file, mode="w+", encoding="utf-8")
         
     | 
| 
       11290 
11293 
     | 
    
         
             
                        out_file.writelines(json.dumps(level_2))
         
     | 
| 
       11291 
11294 
     | 
    
         
             
                        out_file.close()
         
     | 
| 
       11292 
     | 
    
         
            -
                        out_file = open(level_3_file, "w+", encoding="utf-8")
         
     | 
| 
      
 11295 
     | 
    
         
            +
                        out_file = open(level_3_file, mode="w+", encoding="utf-8")
         
     | 
| 
       11293 
11296 
     | 
    
         
             
                        out_file.writelines(json.dumps(level_3))
         
     | 
| 
       11294 
11297 
     | 
    
         
             
                        out_file.close()
         
     | 
| 
       11295 
11298 
     | 
    
         | 
| 
         @@ -11428,7 +11431,7 @@ class BaseCase(unittest.TestCase): 
     | 
|
| 
       11428 
11431 
     | 
    
         
             
                        alpha_n_d_name = "".join([x if x.isalnum() else "_" for x in name])
         
     | 
| 
       11429 
11432 
     | 
    
         
             
                        side_by_side_name = "side_by_side_%s.html" % alpha_n_d_name
         
     | 
| 
       11430 
11433 
     | 
    
         
             
                        file_path = os.path.join(test_logpath, side_by_side_name)
         
     | 
| 
       11431 
     | 
    
         
            -
                        out_file = open(file_path, "w+", encoding="utf-8")
         
     | 
| 
      
 11434 
     | 
    
         
            +
                        out_file = open(file_path, mode="w+", encoding="utf-8")
         
     | 
| 
       11432 
11435 
     | 
    
         
             
                        out_file.writelines(the_html)
         
     | 
| 
       11433 
11436 
     | 
    
         
             
                        out_file.close()
         
     | 
| 
       11434 
11437 
     | 
    
         | 
| 
         @@ -12120,7 +12123,7 @@ class BaseCase(unittest.TestCase): 
     | 
|
| 
       12120 
12123 
     | 
    
         
             
                        with suppress(Exception):
         
     | 
| 
       12121 
12124 
     | 
    
         
             
                            os.makedirs(saved_presentations_folder)
         
     | 
| 
       12122 
12125 
     | 
    
         
             
                    file_path = os.path.join(saved_presentations_folder, filename)
         
     | 
| 
       12123 
     | 
    
         
            -
                    out_file = open(file_path, "w+", encoding="utf-8")
         
     | 
| 
      
 12126 
     | 
    
         
            +
                    out_file = open(file_path, mode="w+", encoding="utf-8")
         
     | 
| 
       12124 
12127 
     | 
    
         
             
                    out_file.writelines(the_html)
         
     | 
| 
       12125 
12128 
     | 
    
         
             
                    out_file.close()
         
     | 
| 
       12126 
12129 
     | 
    
         
             
                    if self._output_file_saves:
         
     | 
| 
         @@ -12815,7 +12818,7 @@ class BaseCase(unittest.TestCase): 
     | 
|
| 
       12815 
12818 
     | 
    
         
             
                        with suppress(Exception):
         
     | 
| 
       12816 
12819 
     | 
    
         
             
                            os.makedirs(saved_charts_folder)
         
     | 
| 
       12817 
12820 
     | 
    
         
             
                    file_path = os.path.join(saved_charts_folder, filename)
         
     | 
| 
       12818 
     | 
    
         
            -
                    out_file = open(file_path, "w+", encoding="utf-8")
         
     | 
| 
      
 12821 
     | 
    
         
            +
                    out_file = open(file_path, mode="w+", encoding="utf-8")
         
     | 
| 
       12819 
12822 
     | 
    
         
             
                    out_file.writelines(the_html)
         
     | 
| 
       12820 
12823 
     | 
    
         
             
                    out_file.close()
         
     | 
| 
       12821 
12824 
     | 
    
         
             
                    if self._output_file_saves:
         
     | 
| 
         @@ -16378,7 +16381,7 @@ class BaseCase(unittest.TestCase): 
     | 
|
| 
       16378 
16381 
     | 
    
         
             
                                dash_pie = json.dumps(sb_config._saved_dashboard_pie)
         
     | 
| 
       16379 
16382 
     | 
    
         
             
                                dash_pie_loc = constants.Dashboard.DASH_PIE
         
     | 
| 
       16380 
16383 
     | 
    
         
             
                                pie_path = os.path.join(abs_path, dash_pie_loc)
         
     | 
| 
       16381 
     | 
    
         
            -
                                pie_file = open(pie_path, "w+", encoding="utf-8")
         
     | 
| 
      
 16384 
     | 
    
         
            +
                                pie_file = open(pie_path, mode="w+", encoding="utf-8")
         
     | 
| 
       16382 
16385 
     | 
    
         
             
                                pie_file.writelines(dash_pie)
         
     | 
| 
       16383 
16386 
     | 
    
         
             
                                pie_file.close()
         
     | 
| 
       16384 
16387 
     | 
    
         
             
                    DASH_PIE_PNG_1 = constants.Dashboard.get_dash_pie_1()
         
     | 
| 
         @@ -16538,7 +16541,7 @@ class BaseCase(unittest.TestCase): 
     | 
|
| 
       16538 
16541 
     | 
    
         
             
                    )
         
     | 
| 
       16539 
16542 
     | 
    
         
             
                    abs_path = os.path.abspath(".")
         
     | 
| 
       16540 
16543 
     | 
    
         
             
                    file_path = os.path.join(abs_path, "dashboard.html")
         
     | 
| 
       16541 
     | 
    
         
            -
                    out_file = open(file_path, "w+", encoding="utf-8")
         
     | 
| 
      
 16544 
     | 
    
         
            +
                    out_file = open(file_path, mode="w+", encoding="utf-8")
         
     | 
| 
       16542 
16545 
     | 
    
         
             
                    out_file.writelines(the_html)
         
     | 
| 
       16543 
16546 
     | 
    
         
             
                    out_file.close()
         
     | 
| 
       16544 
16547 
     | 
    
         
             
                    sb_config._dash_html = the_html
         
     | 
| 
         @@ -16551,7 +16554,7 @@ class BaseCase(unittest.TestCase): 
     | 
|
| 
       16551 
16554 
     | 
    
         
             
                        dash_json = json.dumps((_results, _display_id, _rt, _tlp, d_stats))
         
     | 
| 
       16552 
16555 
     | 
    
         
             
                        dash_json_loc = constants.Dashboard.DASH_JSON
         
     | 
| 
       16553 
16556 
     | 
    
         
             
                        dash_jsonpath = os.path.join(abs_path, dash_json_loc)
         
     | 
| 
       16554 
     | 
    
         
            -
                        dash_json_file = open(dash_jsonpath, "w+", encoding="utf-8")
         
     | 
| 
      
 16557 
     | 
    
         
            +
                        dash_json_file = open(dash_jsonpath, mode="w+", encoding="utf-8")
         
     | 
| 
       16555 
16558 
     | 
    
         
             
                        dash_json_file.writelines(dash_json)
         
     | 
| 
       16556 
16559 
     | 
    
         
             
                        dash_json_file.close()
         
     | 
| 
       16557 
16560 
     | 
    
         | 
    
        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
         
     | 
| 
         @@ -129,6 +130,7 @@ class Config: 
     | 
|
| 
       129 
130 
     | 
    
         
             
                        "--no-default-browser-check",
         
     | 
| 
       130 
131 
     | 
    
         
             
                        "--homepage=about:blank",
         
     | 
| 
       131 
132 
     | 
    
         
             
                        "--no-pings",
         
     | 
| 
      
 133 
     | 
    
         
            +
                        "--enable-unsafe-extension-debugging",
         
     | 
| 
       132 
134 
     | 
    
         
             
                        "--wm-window-animations-disabled",
         
     | 
| 
       133 
135 
     | 
    
         
             
                        "--animation-duration-scale=0",
         
     | 
| 
       134 
136 
     | 
    
         
             
                        "--enable-privacy-sandbox-ads-apis",
         
     | 
| 
         @@ -315,10 +317,13 @@ def find_chrome_executable(return_all=False): 
     | 
|
| 
       315 
317 
     | 
    
         
             
                    for item in os.environ.get("PATH").split(os.pathsep):
         
     | 
| 
       316 
318 
     | 
    
         
             
                        for subitem in (
         
     | 
| 
       317 
319 
     | 
    
         
             
                            "google-chrome",
         
     | 
| 
      
 320 
     | 
    
         
            +
                            "google-chrome-stable",
         
     | 
| 
      
 321 
     | 
    
         
            +
                            "google-chrome-beta",
         
     | 
| 
      
 322 
     | 
    
         
            +
                            "google-chrome-dev",
         
     | 
| 
      
 323 
     | 
    
         
            +
                            "google-chrome-unstable",
         
     | 
| 
      
 324 
     | 
    
         
            +
                            "chrome",
         
     | 
| 
       318 
325 
     | 
    
         
             
                            "chromium",
         
     | 
| 
       319 
326 
     | 
    
         
             
                            "chromium-browser",
         
     | 
| 
       320 
     | 
    
         
            -
                            "chrome",
         
     | 
| 
       321 
     | 
    
         
            -
                            "google-chrome-stable",
         
     | 
| 
       322 
327 
     | 
    
         
             
                        ):
         
     | 
| 
       323 
328 
     | 
    
         
             
                            candidates.append(os.sep.join((item, subitem)))
         
     | 
| 
       324 
329 
     | 
    
         
             
                    if "darwin" in sys.platform:
         
     | 
| 
         @@ -347,7 +352,11 @@ def find_chrome_executable(return_all=False): 
     | 
|
| 
       347 
352 
     | 
    
         
             
                                )
         
     | 
| 
       348 
353 
     | 
    
         
             
                rv = []
         
     | 
| 
       349 
354 
     | 
    
         
             
                for candidate in candidates:
         
     | 
| 
       350 
     | 
    
         
            -
                    if  
     | 
| 
      
 355 
     | 
    
         
            +
                    if (
         
     | 
| 
      
 356 
     | 
    
         
            +
                        os.path.exists(candidate)
         
     | 
| 
      
 357 
     | 
    
         
            +
                        and os.access(candidate, os.R_OK)
         
     | 
| 
      
 358 
     | 
    
         
            +
                        and os.access(candidate, os.X_OK)
         
     | 
| 
      
 359 
     | 
    
         
            +
                    ):
         
     | 
| 
       351 
360 
     | 
    
         
             
                        logger.debug("%s is a valid candidate... " % candidate)
         
     | 
| 
       352 
361 
     | 
    
         
             
                        rv.append(candidate)
         
     | 
| 
       353 
362 
     | 
    
         
             
                    else:
         
     | 
| 
         @@ -806,7 +806,10 @@ class Element: 
     | 
|
| 
       806 
806 
     | 
    
         | 
| 
       807 
807 
     | 
    
         
             
                async def get_html_async(self):
         
     | 
| 
       808 
808 
     | 
    
         
             
                    return await self._tab.send(
         
     | 
| 
       809 
     | 
    
         
            -
                        cdp.dom.get_outer_html( 
     | 
| 
      
 809 
     | 
    
         
            +
                        cdp.dom.get_outer_html(
         
     | 
| 
      
 810 
     | 
    
         
            +
                            backend_node_id=self.backend_node_id,
         
     | 
| 
      
 811 
     | 
    
         
            +
                            include_shadow_dom=True,
         
     | 
| 
      
 812 
     | 
    
         
            +
                        )
         
     | 
| 
       810 
813 
     | 
    
         
             
                    )
         
     | 
| 
       811 
814 
     | 
    
         | 
| 
       812 
815 
     | 
    
         
             
                @property
         
     | 
| 
         @@ -899,7 +899,10 @@ class Tab(Connection): 
     | 
|
| 
       899 
899 
     | 
    
         
             
                    """Gets the current page source content (html)"""
         
     | 
| 
       900 
900 
     | 
    
         
             
                    doc: cdp.dom.Node = await self.send(cdp.dom.get_document(-1, True))
         
     | 
| 
       901 
901 
     | 
    
         
             
                    return await self.send(
         
     | 
| 
       902 
     | 
    
         
            -
                        cdp.dom.get_outer_html( 
     | 
| 
      
 902 
     | 
    
         
            +
                        cdp.dom.get_outer_html(
         
     | 
| 
      
 903 
     | 
    
         
            +
                            backend_node_id=doc.backend_node_id,
         
     | 
| 
      
 904 
     | 
    
         
            +
                            include_shadow_dom=True,
         
     | 
| 
      
 905 
     | 
    
         
            +
                        )
         
     | 
| 
       903 
906 
     | 
    
         
             
                    )
         
     | 
| 
       904 
907 
     | 
    
         | 
| 
       905 
908 
     | 
    
         
             
                async def maximize(self):
         
     | 
| 
         @@ -1,6 +1,6 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            Metadata-Version: 2.4
         
     | 
| 
       2 
2 
     | 
    
         
             
            Name: seleniumbase
         
     | 
| 
       3 
     | 
    
         
            -
            Version: 4.44. 
     | 
| 
      
 3 
     | 
    
         
            +
            Version: 4.44.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
         
     | 
| 
         @@ -75,7 +75,7 @@ Requires-Dist: filelock~=3.16.1; python_version < "3.9" 
     | 
|
| 
       75 
75 
     | 
    
         
             
            Requires-Dist: filelock~=3.19.1; python_version >= "3.9" and python_version < "3.10"
         
     | 
| 
       76 
76 
     | 
    
         
             
            Requires-Dist: filelock>=3.20.0; python_version >= "3.10"
         
     | 
| 
       77 
77 
     | 
    
         
             
            Requires-Dist: fasteners>=0.20
         
     | 
| 
       78 
     | 
    
         
            -
            Requires-Dist: mycdp>=1. 
     | 
| 
      
 78 
     | 
    
         
            +
            Requires-Dist: mycdp>=1.3.0
         
     | 
| 
       79 
79 
     | 
    
         
             
            Requires-Dist: pynose>=1.5.5
         
     | 
| 
       80 
80 
     | 
    
         
             
            Requires-Dist: platformdirs~=4.3.6; python_version < "3.9"
         
     | 
| 
       81 
81 
     | 
    
         
             
            Requires-Dist: platformdirs~=4.4.0; python_version >= "3.9" and python_version < "3.10"
         
     | 
| 
         @@ -106,7 +106,8 @@ Requires-Dist: sniffio==1.3.1 
     | 
|
| 
       106 
106 
     | 
    
         
             
            Requires-Dist: h11==0.16.0
         
     | 
| 
       107 
107 
     | 
    
         
             
            Requires-Dist: outcome==1.3.0.post0
         
     | 
| 
       108 
108 
     | 
    
         
             
            Requires-Dist: trio==0.27.0; python_version < "3.9"
         
     | 
| 
       109 
     | 
    
         
            -
            Requires-Dist: trio<1,>=0.31.0; python_version >= "3.9"
         
     | 
| 
      
 109 
     | 
    
         
            +
            Requires-Dist: trio<1,>=0.31.0; python_version >= "3.9" and python_version < "3.10"
         
     | 
| 
      
 110 
     | 
    
         
            +
            Requires-Dist: trio<1,>=0.32.0; python_version >= "3.10"
         
     | 
| 
       110 
111 
     | 
    
         
             
            Requires-Dist: trio-websocket~=0.12.2
         
     | 
| 
       111 
112 
     | 
    
         
             
            Requires-Dist: wsproto==1.2.0
         
     | 
| 
       112 
113 
     | 
    
         
             
            Requires-Dist: websocket-client~=1.8.0; python_version < "3.9"
         
     | 
| 
         @@ -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=UIp0gYCeBm1CYce2imNjkVyZlocxEXIUpM91yU-ep6I,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=xY4CsDZP_Zdkzy6OfMVu_9blmRfw5uSYEQHzASC3qbo,256997
         
     | 
| 
       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=pZ1NboNfziHU3vWZLOZLX-qkfM3oKSnpc3omQf9 
     | 
|
| 
       50 
50 
     | 
    
         
             
            seleniumbase/core/recorder_helper.py,sha256=gDION28OK4NAYsE-7ohKZ9Z3sxQQ0FEjf859LDpqsg4,25320
         
     | 
| 
       51 
51 
     | 
    
         
             
            seleniumbase/core/report_helper.py,sha256=Obg5wHltEmM6uFCWFeR8_fjeT0GzHjGgoqQIr_HUxxk,12223
         
     | 
| 
       52 
52 
     | 
    
         
             
            seleniumbase/core/s3_manager.py,sha256=z_4qx2jI_gtK5r3niGXgEOBpfMUicUCOciowai50MP4,3529
         
     | 
| 
       53 
     | 
    
         
            -
            seleniumbase/core/sb_cdp.py,sha256= 
     | 
| 
      
 53 
     | 
    
         
            +
            seleniumbase/core/sb_cdp.py,sha256=EAr9WfkTD71EkGB9B-v8y_BdB6QwTubdGps54Qd-Rgo,113778
         
     | 
| 
       54 
54 
     | 
    
         
             
            seleniumbase/core/sb_driver.py,sha256=-IQsskc7HpXQbcBL04IPjmGpyYchyo7v9OPF2WcahDw,14159
         
     | 
| 
       55 
55 
     | 
    
         
             
            seleniumbase/core/session_helper.py,sha256=s9zD3PVZEWVzG2h81cCUskbNWLfdjC_LwwQjKptHCak,558
         
     | 
| 
       56 
56 
     | 
    
         
             
            seleniumbase/core/settings_parser.py,sha256=gqVohHVlE_5L5Cqe2L24uYrRzvoK-saX8E_Df7_-_3I,7609
         
     | 
| 
         @@ -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=3BP6TdZPvrXmfzDG1be3-THJuds78cPGqeghcLGnIK0,743479
         
     | 
| 
       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,12 +121,12 @@ 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=WSGeRKhUJw6toHEdcdakEq_QEGSL7dq-gjnD2lM1twk,13941
         
     | 
| 
       127 
127 
     | 
    
         
             
            seleniumbase/undetected/cdp_driver/connection.py,sha256=nz_xGctJe-VG5udn6tucWZMxAo6QtuYBfL3pVAt-7Ck,25680
         
     | 
| 
       128 
     | 
    
         
            -
            seleniumbase/undetected/cdp_driver/element.py,sha256= 
     | 
| 
       129 
     | 
    
         
            -
            seleniumbase/undetected/cdp_driver/tab.py,sha256= 
     | 
| 
      
 128 
     | 
    
         
            +
            seleniumbase/undetected/cdp_driver/element.py,sha256=LWEOFHpGPbaHhrEvXtwQI1IF_tU64Duk0HrYggiFaR8,42482
         
     | 
| 
      
 129 
     | 
    
         
            +
            seleniumbase/undetected/cdp_driver/tab.py,sha256=TiwGEfHT5k1yuzM4jZplQgDOe-YVB3lKX0fsYBppZ5E,53245
         
     | 
| 
       130 
130 
     | 
    
         
             
            seleniumbase/utilities/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
         
     | 
| 
       131 
131 
     | 
    
         
             
            seleniumbase/utilities/selenium_grid/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
         
     | 
| 
       132 
132 
     | 
    
         
             
            seleniumbase/utilities/selenium_grid/download_selenium_server.py,sha256=RO9Mcvcrw8dyytAc9A_BcEENbv1yoJlpsKLqUyB5iLw,1732
         
     | 
| 
         @@ -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.4.dist-info/licenses/LICENSE,sha256=BRblZsX7HyPUjQmYTiyWr_e9tzWvmR3R4SFclM2R3W0,1085
         
     | 
| 
      
 145 
     | 
    
         
            +
            seleniumbase-4.44.4.dist-info/METADATA,sha256=esY-JFejfR6anDOTitPx9CDMtSjBSQr5HlJY_nKNPok,90577
         
     | 
| 
      
 146 
     | 
    
         
            +
            seleniumbase-4.44.4.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
         
     | 
| 
      
 147 
     | 
    
         
            +
            seleniumbase-4.44.4.dist-info/entry_points.txt,sha256=CNrh2EKNaHYEhO6pP1RJyVLB99LkDDYX7TnUK8xfjqk,623
         
     | 
| 
      
 148 
     | 
    
         
            +
            seleniumbase-4.44.4.dist-info/top_level.txt,sha256=4N97aBOQ8ETCnDnokBsWb07lJfTaq3C1ZzYRxvLMxqU,19
         
     | 
| 
      
 149 
     | 
    
         
            +
            seleniumbase-4.44.4.dist-info/RECORD,,
         
     | 
| 
         
            File without changes
         
     | 
| 
         
            File without changes
         
     | 
| 
         
            File without changes
         
     | 
| 
         
            File without changes
         
     |