seleniumbase 4.43.3__py3-none-any.whl → 4.44.1__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 +30 -5
 - seleniumbase/core/detect_b_ver.py +42 -8
 - seleniumbase/core/sb_cdp.py +49 -26
 - seleniumbase/fixtures/base_case.py +53 -7
 - seleniumbase/fixtures/constants.py +6 -9
 - seleniumbase/fixtures/page_actions.py +1 -1
 - seleniumbase/plugins/driver_manager.py +4 -2
 - seleniumbase/plugins/pytest_plugin.py +50 -2
 - seleniumbase/plugins/sb_manager.py +4 -2
 - seleniumbase/plugins/selenium_plugin.py +4 -2
 - {seleniumbase-4.43.3.dist-info → seleniumbase-4.44.1.dist-info}/METADATA +4 -4
 - {seleniumbase-4.43.3.dist-info → seleniumbase-4.44.1.dist-info}/RECORD +17 -17
 - {seleniumbase-4.43.3.dist-info → seleniumbase-4.44.1.dist-info}/WHEEL +0 -0
 - {seleniumbase-4.43.3.dist-info → seleniumbase-4.44.1.dist-info}/entry_points.txt +0 -0
 - {seleniumbase-4.43.3.dist-info → seleniumbase-4.44.1.dist-info}/licenses/LICENSE +0 -0
 - {seleniumbase-4.43.3.dist-info → seleniumbase-4.44.1.dist-info}/top_level.txt +0 -0
 
    
        seleniumbase/__version__.py
    CHANGED
    
    | 
         @@ -1,2 +1,2 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            # seleniumbase package
         
     | 
| 
       2 
     | 
    
         
            -
            __version__ = "4. 
     | 
| 
      
 2 
     | 
    
         
            +
            __version__ = "4.44.1"
         
     | 
| 
         @@ -551,6 +551,19 @@ def uc_open_with_tab(driver, url): 
     | 
|
| 
       551 
551 
     | 
    
         | 
| 
       552 
552 
     | 
    
         
             
            def uc_open_with_reconnect(driver, url, reconnect_time=None):
         
     | 
| 
       553 
553 
     | 
    
         
             
                """Open a url, disconnect chromedriver, wait, and reconnect."""
         
     | 
| 
      
 554 
     | 
    
         
            +
                if (
         
     | 
| 
      
 555 
     | 
    
         
            +
                    hasattr(sb_config, "_cdp_browser")
         
     | 
| 
      
 556 
     | 
    
         
            +
                    and sb_config._cdp_browser in ["comet", "opera", "atlas"]
         
     | 
| 
      
 557 
     | 
    
         
            +
                ):
         
     | 
| 
      
 558 
     | 
    
         
            +
                    if not __is_cdp_swap_needed(driver):
         
     | 
| 
      
 559 
     | 
    
         
            +
                        if not driver.current_url.startswith(
         
     | 
| 
      
 560 
     | 
    
         
            +
                            ("about", "data", "chrome")
         
     | 
| 
      
 561 
     | 
    
         
            +
                        ):
         
     | 
| 
      
 562 
     | 
    
         
            +
                            driver.get("about:blank")
         
     | 
| 
      
 563 
     | 
    
         
            +
                        uc_activate_cdp_mode(driver, url)
         
     | 
| 
      
 564 
     | 
    
         
            +
                    else:
         
     | 
| 
      
 565 
     | 
    
         
            +
                        driver.cdp.open(url)
         
     | 
| 
      
 566 
     | 
    
         
            +
                    return
         
     | 
| 
       554 
567 
     | 
    
         
             
                url = shared_utils.fix_url_as_needed(url)
         
     | 
| 
       555 
568 
     | 
    
         
             
                if __is_cdp_swap_needed(driver):
         
     | 
| 
       556 
569 
     | 
    
         
             
                    driver.cdp.get(url)
         
     | 
| 
         @@ -885,6 +898,7 @@ def uc_open_with_cdp_mode(driver, url=None, **kwargs): 
     | 
|
| 
       885 
898 
     | 
    
         
             
                cdp.assert_not_in = CDPM.assert_not_in
         
     | 
| 
       886 
899 
     | 
    
         
             
                cdp.scroll_into_view = CDPM.scroll_into_view
         
     | 
| 
       887 
900 
     | 
    
         
             
                cdp.scroll_to_y = CDPM.scroll_to_y
         
     | 
| 
      
 901 
     | 
    
         
            +
                cdp.scroll_by_y = CDPM.scroll_by_y
         
     | 
| 
       888 
902 
     | 
    
         
             
                cdp.scroll_to_top = CDPM.scroll_to_top
         
     | 
| 
       889 
903 
     | 
    
         
             
                cdp.scroll_to_bottom = CDPM.scroll_to_bottom
         
     | 
| 
       890 
904 
     | 
    
         
             
                cdp.scroll_up = CDPM.scroll_up
         
     | 
| 
         @@ -2604,15 +2618,20 @@ def _set_chrome_options( 
     | 
|
| 
       2604 
2618 
     | 
    
         
             
                    if is_using_uc(undetectable, browser_name):
         
     | 
| 
       2605 
2619 
     | 
    
         
             
                        chrome_options.add_argument("--disable-application-cache")
         
     | 
| 
       2606 
2620 
     | 
    
         
             
                        chrome_options.add_argument("--disable-setuid-sandbox")
         
     | 
| 
       2607 
     | 
    
         
            -
             
     | 
| 
      
 2621 
     | 
    
         
            +
                    if not binary_location:
         
     | 
| 
      
 2622 
     | 
    
         
            +
                        if os.path.exists("/bin/google-chrome"):
         
     | 
| 
      
 2623 
     | 
    
         
            +
                            binary_location = "/bin/google-chrome"
         
     | 
| 
      
 2624 
     | 
    
         
            +
                        elif os.path.exists("/usr/bin/google-chrome-stable"):
         
     | 
| 
      
 2625 
     | 
    
         
            +
                            binary_location = "/usr/bin/google-chrome-stable"
         
     | 
| 
      
 2626 
     | 
    
         
            +
                        elif os.path.exists("/usr/bin/google-chrome"):
         
     | 
| 
      
 2627 
     | 
    
         
            +
                            binary_location = "/usr/bin/google-chrome"
         
     | 
| 
      
 2628 
     | 
    
         
            +
                        elif os.path.exists("/usr/bin/google-chrome-stable"):
         
     | 
| 
      
 2629 
     | 
    
         
            +
                            binary_location = "/usr/bin/google-chrome-stable"
         
     | 
| 
      
 2630 
     | 
    
         
            +
                        else:
         
     | 
| 
       2608 
2631 
     | 
    
         
             
                            br_app = "google-chrome"
         
     | 
| 
       2609 
2632 
     | 
    
         
             
                            binary_loc = detect_b_ver.get_binary_location(br_app, True)
         
     | 
| 
       2610 
2633 
     | 
    
         
             
                            if os.path.exists(binary_loc):
         
     | 
| 
       2611 
2634 
     | 
    
         
             
                                binary_location = binary_loc
         
     | 
| 
       2612 
     | 
    
         
            -
                            elif os.path.exists("/usr/bin/google-chrome-stable"):
         
     | 
| 
       2613 
     | 
    
         
            -
                                binary_location = "/usr/bin/google-chrome-stable"
         
     | 
| 
       2614 
     | 
    
         
            -
                            elif os.path.exists("/usr/bin/google-chrome"):
         
     | 
| 
       2615 
     | 
    
         
            -
                                binary_location = "/usr/bin/google-chrome"
         
     | 
| 
       2616 
2635 
     | 
    
         
             
                extra_disabled_features = []
         
     | 
| 
       2617 
2636 
     | 
    
         
             
                if chromium_arg:
         
     | 
| 
       2618 
2637 
     | 
    
         
             
                    # Can be a comma-separated list of Chromium args or a list
         
     | 
| 
         @@ -2979,12 +2998,16 @@ def get_driver( 
     | 
|
| 
       2979 
2998 
     | 
    
         
             
                    driver_dir = DRIVER_DIR_CHS
         
     | 
| 
       2980 
2999 
     | 
    
         
             
                if _special_binary_exists(binary_location, "opera"):
         
     | 
| 
       2981 
3000 
     | 
    
         
             
                    driver_dir = DRIVER_DIR_OPERA
         
     | 
| 
      
 3001 
     | 
    
         
            +
                    sb_config._cdp_browser = "opera"
         
     | 
| 
       2982 
3002 
     | 
    
         
             
                if _special_binary_exists(binary_location, "brave"):
         
     | 
| 
       2983 
3003 
     | 
    
         
             
                    driver_dir = DRIVER_DIR_BRAVE
         
     | 
| 
      
 3004 
     | 
    
         
            +
                    sb_config._cdp_browser = "brave"
         
     | 
| 
       2984 
3005 
     | 
    
         
             
                if _special_binary_exists(binary_location, "comet"):
         
     | 
| 
       2985 
3006 
     | 
    
         
             
                    driver_dir = DRIVER_DIR_COMET
         
     | 
| 
      
 3007 
     | 
    
         
            +
                    sb_config._cdp_browser = "comet"
         
     | 
| 
       2986 
3008 
     | 
    
         
             
                if _special_binary_exists(binary_location, "atlas"):
         
     | 
| 
       2987 
3009 
     | 
    
         
             
                    driver_dir = DRIVER_DIR_ATLAS
         
     | 
| 
      
 3010 
     | 
    
         
            +
                    sb_config._cdp_browser = "atlas"
         
     | 
| 
       2988 
3011 
     | 
    
         
             
                if (
         
     | 
| 
       2989 
3012 
     | 
    
         
             
                    hasattr(sb_config, "settings")
         
     | 
| 
       2990 
3013 
     | 
    
         
             
                    and hasattr(sb_config.settings, "NEW_DRIVER_DIR")
         
     | 
| 
         @@ -2997,6 +3020,8 @@ def get_driver( 
     | 
|
| 
       2997 
3020 
     | 
    
         
             
                        browser_name = browser
         
     | 
| 
       2998 
3021 
     | 
    
         
             
                    else:
         
     | 
| 
       2999 
3022 
     | 
    
         
             
                        browser_name = "chrome"  # The default if not specified
         
     | 
| 
      
 3023 
     | 
    
         
            +
                if browser_name in constants.ChromiumSubs.chromium_subs:
         
     | 
| 
      
 3024 
     | 
    
         
            +
                    browser_name = "chrome"
         
     | 
| 
       3000 
3025 
     | 
    
         
             
                browser_name = browser_name.lower()
         
     | 
| 
       3001 
3026 
     | 
    
         
             
                if headless2 and browser_name == constants.Browser.FIREFOX:
         
     | 
| 
       3002 
3027 
     | 
    
         
             
                    headless2 = False  # Only for Chromium
         
     | 
| 
         @@ -105,10 +105,22 @@ def chrome_on_linux_path(chromium_ok=False, browser_type=None): 
     | 
|
| 
       105 
105 
     | 
    
         
             
                    return ""
         
     | 
| 
       106 
106 
     | 
    
         
             
                if os_name() != OSType.LINUX:
         
     | 
| 
       107 
107 
     | 
    
         
             
                    return ""
         
     | 
| 
       108 
     | 
    
         
            -
                paths = [ 
     | 
| 
      
 108 
     | 
    
         
            +
                paths = [
         
     | 
| 
      
 109 
     | 
    
         
            +
                    "/bin/google-chrome",
         
     | 
| 
      
 110 
     | 
    
         
            +
                    "/bin/google-chrome-stable",
         
     | 
| 
      
 111 
     | 
    
         
            +
                    "/usr/bin/google-chrome",
         
     | 
| 
      
 112 
     | 
    
         
            +
                    "/usr/bin/google-chrome-stable"
         
     | 
| 
      
 113 
     | 
    
         
            +
                ]
         
     | 
| 
       109 
114 
     | 
    
         
             
                for path in paths:
         
     | 
| 
       110 
     | 
    
         
            -
                     
     | 
| 
       111 
     | 
    
         
            -
                         
     | 
| 
      
 115 
     | 
    
         
            +
                    try:
         
     | 
| 
      
 116 
     | 
    
         
            +
                        if (
         
     | 
| 
      
 117 
     | 
    
         
            +
                            os.path.exists(path)
         
     | 
| 
      
 118 
     | 
    
         
            +
                            and os.access(path, os.R_OK)
         
     | 
| 
      
 119 
     | 
    
         
            +
                            and os.access(path, os.X_OK)
         
     | 
| 
      
 120 
     | 
    
         
            +
                        ):
         
     | 
| 
      
 121 
     | 
    
         
            +
                            return path
         
     | 
| 
      
 122 
     | 
    
         
            +
                    except Exception:
         
     | 
| 
      
 123 
     | 
    
         
            +
                        pass
         
     | 
| 
       112 
124 
     | 
    
         
             
                paths = os.environ["PATH"].split(os.pathsep)
         
     | 
| 
       113 
125 
     | 
    
         
             
                binaries = []
         
     | 
| 
       114 
126 
     | 
    
         
             
                binaries.append("google-chrome")
         
     | 
| 
         @@ -122,13 +134,32 @@ def chrome_on_linux_path(chromium_ok=False, browser_type=None): 
     | 
|
| 
       122 
134 
     | 
    
         
             
                for binary in binaries:
         
     | 
| 
       123 
135 
     | 
    
         
             
                    for path in paths:
         
     | 
| 
       124 
136 
     | 
    
         
             
                        full_path = os.path.join(path, binary)
         
     | 
| 
       125 
     | 
    
         
            -
                         
     | 
| 
       126 
     | 
    
         
            -
                             
     | 
| 
      
 137 
     | 
    
         
            +
                        try:
         
     | 
| 
      
 138 
     | 
    
         
            +
                            if (
         
     | 
| 
      
 139 
     | 
    
         
            +
                                os.path.exists(full_path)
         
     | 
| 
      
 140 
     | 
    
         
            +
                                and os.access(full_path, os.R_OK)
         
     | 
| 
      
 141 
     | 
    
         
            +
                                and os.access(full_path, os.X_OK)
         
     | 
| 
      
 142 
     | 
    
         
            +
                            ):
         
     | 
| 
      
 143 
     | 
    
         
            +
                                return full_path
         
     | 
| 
      
 144 
     | 
    
         
            +
                        except Exception:
         
     | 
| 
      
 145 
     | 
    
         
            +
                            pass
         
     | 
| 
       127 
146 
     | 
    
         
             
                if chromium_ok:
         
     | 
| 
       128 
     | 
    
         
            -
                    paths = [ 
     | 
| 
      
 147 
     | 
    
         
            +
                    paths = [
         
     | 
| 
      
 148 
     | 
    
         
            +
                        "/bin/chromium",
         
     | 
| 
      
 149 
     | 
    
         
            +
                        "/bin/chromium-browser",
         
     | 
| 
      
 150 
     | 
    
         
            +
                        "/usr/bin/chromium",
         
     | 
| 
      
 151 
     | 
    
         
            +
                        "/usr/bin/chromium-browser"
         
     | 
| 
      
 152 
     | 
    
         
            +
                    ]
         
     | 
| 
       129 
153 
     | 
    
         
             
                    for path in paths:
         
     | 
| 
       130 
     | 
    
         
            -
                         
     | 
| 
       131 
     | 
    
         
            -
                             
     | 
| 
      
 154 
     | 
    
         
            +
                        try:
         
     | 
| 
      
 155 
     | 
    
         
            +
                            if (
         
     | 
| 
      
 156 
     | 
    
         
            +
                                os.path.exists(path)
         
     | 
| 
      
 157 
     | 
    
         
            +
                                and os.access(path, os.R_OK)
         
     | 
| 
      
 158 
     | 
    
         
            +
                                and os.access(path, os.X_OK)
         
     | 
| 
      
 159 
     | 
    
         
            +
                            ):
         
     | 
| 
      
 160 
     | 
    
         
            +
                                return path
         
     | 
| 
      
 161 
     | 
    
         
            +
                        except Exception:
         
     | 
| 
      
 162 
     | 
    
         
            +
                            pass
         
     | 
| 
       132 
163 
     | 
    
         
             
                return "/usr/bin/google-chrome"
         
     | 
| 
       133 
164 
     | 
    
         | 
| 
       134 
165 
     | 
    
         | 
| 
         @@ -278,6 +309,7 @@ def opera_on_windows_path(browser_type=None): 
     | 
|
| 
       278 
309 
     | 
    
         
             
                    ),
         
     | 
| 
       279 
310 
     | 
    
         
             
                ):
         
     | 
| 
       280 
311 
     | 
    
         
             
                    for subitem in (
         
     | 
| 
      
 312 
     | 
    
         
            +
                        "Programs/Opera",
         
     | 
| 
       281 
313 
     | 
    
         
             
                        "Opera",
         
     | 
| 
       282 
314 
     | 
    
         
             
                        "Opera/Application",
         
     | 
| 
       283 
315 
     | 
    
         
             
                    ):
         
     | 
| 
         @@ -336,6 +368,7 @@ def comet_on_windows_path(browser_type=None): 
     | 
|
| 
       336 
368 
     | 
    
         
             
                ):
         
     | 
| 
       337 
369 
     | 
    
         
             
                    for subitem in (
         
     | 
| 
       338 
370 
     | 
    
         
             
                        "Comet/Application",
         
     | 
| 
      
 371 
     | 
    
         
            +
                        "Programs/Comet",
         
     | 
| 
       339 
372 
     | 
    
         
             
                    ):
         
     | 
| 
       340 
373 
     | 
    
         
             
                        try:
         
     | 
| 
       341 
374 
     | 
    
         
             
                            candidates.append(os.sep.join((item, subitem, "Comet.exe")))
         
     | 
| 
         @@ -364,6 +397,7 @@ def atlas_on_windows_path(browser_type=None): 
     | 
|
| 
       364 
397 
     | 
    
         
             
                ):
         
     | 
| 
       365 
398 
     | 
    
         
             
                    for subitem in (
         
     | 
| 
       366 
399 
     | 
    
         
             
                        "Atlas/Application",
         
     | 
| 
      
 400 
     | 
    
         
            +
                        "Programs/Atlas",
         
     | 
| 
       367 
401 
     | 
    
         
             
                    ):
         
     | 
| 
       368 
402 
     | 
    
         
             
                        try:
         
     | 
| 
       369 
403 
     | 
    
         
             
                            candidates.append(os.sep.join((item, subitem, "Atlas.exe")))
         
     | 
    
        seleniumbase/core/sb_cdp.py
    CHANGED
    
    | 
         @@ -1029,12 +1029,19 @@ class CDPMethods(): 
     | 
|
| 
       1029 
1029 
     | 
    
         
             
                    return self.loop.run_until_complete(self.page.js_dumps(obj_name))
         
     | 
| 
       1030 
1030 
     | 
    
         | 
| 
       1031 
1031 
     | 
    
         
             
                def maximize(self):
         
     | 
| 
       1032 
     | 
    
         
            -
                     
     | 
| 
       1033 
     | 
    
         
            -
                         
     | 
| 
       1034 
     | 
    
         
            -
             
     | 
| 
       1035 
     | 
    
         
            -
                        self. 
     | 
| 
       1036 
     | 
    
         
            -
             
     | 
| 
       1037 
     | 
    
         
            -
             
     | 
| 
      
 1032 
     | 
    
         
            +
                    try:
         
     | 
| 
      
 1033 
     | 
    
         
            +
                        if self.get_window()[1].window_state.value == "maximized":
         
     | 
| 
      
 1034 
     | 
    
         
            +
                            return
         
     | 
| 
      
 1035 
     | 
    
         
            +
                        elif self.get_window()[1].window_state.value == "minimized":
         
     | 
| 
      
 1036 
     | 
    
         
            +
                            self.loop.run_until_complete(self.page.maximize())
         
     | 
| 
      
 1037 
     | 
    
         
            +
                            time.sleep(0.044)
         
     | 
| 
      
 1038 
     | 
    
         
            +
                        return self.loop.run_until_complete(self.page.maximize())
         
     | 
| 
      
 1039 
     | 
    
         
            +
                    except Exception:
         
     | 
| 
      
 1040 
     | 
    
         
            +
                        with suppress(Exception):
         
     | 
| 
      
 1041 
     | 
    
         
            +
                            width = self.evaluate("screen.availWidth;")
         
     | 
| 
      
 1042 
     | 
    
         
            +
                            height = self.evaluate("screen.availHeight;")
         
     | 
| 
      
 1043 
     | 
    
         
            +
                            self.__set_window_rect(0, 0, width, height)
         
     | 
| 
      
 1044 
     | 
    
         
            +
                            return
         
     | 
| 
       1038 
1045 
     | 
    
         | 
| 
       1039 
1046 
     | 
    
         
             
                def minimize(self):
         
     | 
| 
       1040 
1047 
     | 
    
         
             
                    if self.get_window()[1].window_state.value != "minimized":
         
     | 
| 
         @@ -1725,18 +1732,18 @@ class CDPMethods(): 
     | 
|
| 
       1725 
1732 
     | 
    
         
             
                            win_x = window_rect["x"]
         
     | 
| 
       1726 
1733 
     | 
    
         
             
                            win_y = window_rect["y"]
         
     | 
| 
       1727 
1734 
     | 
    
         
             
                            scr_width = pyautogui.size().width
         
     | 
| 
       1728 
     | 
    
         
            -
                            self. 
     | 
| 
       1729 
     | 
    
         
            -
                            self.__add_light_pause()
         
     | 
| 
       1730 
     | 
    
         
            -
                            win_width = self.get_window_size()["width"]
         
     | 
| 
      
 1735 
     | 
    
         
            +
                            win_width = self.evaluate("screen.availWidth;")
         
     | 
| 
       1731 
1736 
     | 
    
         
             
                            width_ratio = round(float(scr_width) / float(win_width), 2)
         
     | 
| 
       1732 
1737 
     | 
    
         
             
                            width_ratio += 0.01
         
     | 
| 
       1733 
1738 
     | 
    
         
             
                            if width_ratio < 0.45 or width_ratio > 2.55:
         
     | 
| 
       1734 
1739 
     | 
    
         
             
                                width_ratio = 1.01
         
     | 
| 
       1735 
1740 
     | 
    
         
             
                            sb_config._saved_width_ratio = width_ratio
         
     | 
| 
       1736 
     | 
    
         
            -
                             
     | 
| 
       1737 
     | 
    
         
            -
             
     | 
| 
       1738 
     | 
    
         
            -
             
     | 
| 
       1739 
     | 
    
         
            -
             
     | 
| 
      
 1741 
     | 
    
         
            +
                            with suppress(Exception):
         
     | 
| 
      
 1742 
     | 
    
         
            +
                                self.get_window()  # If this fails, skip the rest
         
     | 
| 
      
 1743 
     | 
    
         
            +
                                self.minimize()
         
     | 
| 
      
 1744 
     | 
    
         
            +
                                self.__add_light_pause()
         
     | 
| 
      
 1745 
     | 
    
         
            +
                                self.__set_window_rect(win_x, win_y, width, height)
         
     | 
| 
      
 1746 
     | 
    
         
            +
                                self.__add_light_pause()
         
     | 
| 
       1740 
1747 
     | 
    
         
             
                            x = x * (width_ratio + 0.03)
         
     | 
| 
       1741 
1748 
     | 
    
         
             
                            y = y * (width_ratio - 0.03)
         
     | 
| 
       1742 
1749 
     | 
    
         
             
                        self.bring_active_window_to_front()
         
     | 
| 
         @@ -2021,18 +2028,18 @@ class CDPMethods(): 
     | 
|
| 
       2021 
2028 
     | 
    
         
             
                            win_x = window_rect["x"]
         
     | 
| 
       2022 
2029 
     | 
    
         
             
                            win_y = window_rect["y"]
         
     | 
| 
       2023 
2030 
     | 
    
         
             
                            scr_width = pyautogui.size().width
         
     | 
| 
       2024 
     | 
    
         
            -
                            self. 
     | 
| 
       2025 
     | 
    
         
            -
                            self.__add_light_pause()
         
     | 
| 
       2026 
     | 
    
         
            -
                            win_width = self.get_window_size()["width"]
         
     | 
| 
      
 2031 
     | 
    
         
            +
                            win_width = self.evaluate("screen.availWidth;")
         
     | 
| 
       2027 
2032 
     | 
    
         
             
                            width_ratio = round(float(scr_width) / float(win_width), 2)
         
     | 
| 
       2028 
2033 
     | 
    
         
             
                            width_ratio += 0.01
         
     | 
| 
       2029 
2034 
     | 
    
         
             
                            if width_ratio < 0.45 or width_ratio > 2.55:
         
     | 
| 
       2030 
2035 
     | 
    
         
             
                                width_ratio = 1.01
         
     | 
| 
       2031 
2036 
     | 
    
         
             
                            sb_config._saved_width_ratio = width_ratio
         
     | 
| 
       2032 
     | 
    
         
            -
                             
     | 
| 
       2033 
     | 
    
         
            -
             
     | 
| 
       2034 
     | 
    
         
            -
             
     | 
| 
       2035 
     | 
    
         
            -
             
     | 
| 
      
 2037 
     | 
    
         
            +
                            with suppress(Exception):
         
     | 
| 
      
 2038 
     | 
    
         
            +
                                self.get_window()  # If this fails, skip the rest
         
     | 
| 
      
 2039 
     | 
    
         
            +
                                self.minimize()
         
     | 
| 
      
 2040 
     | 
    
         
            +
                                self.__add_light_pause()
         
     | 
| 
      
 2041 
     | 
    
         
            +
                                self.__set_window_rect(win_x, win_y, width, height)
         
     | 
| 
      
 2042 
     | 
    
         
            +
                                self.__add_light_pause()
         
     | 
| 
       2036 
2043 
     | 
    
         
             
                            x1 = x1 * width_ratio
         
     | 
| 
       2037 
2044 
     | 
    
         
             
                            y1 = y1 * (width_ratio - 0.02)
         
     | 
| 
       2038 
2045 
     | 
    
         
             
                            x2 = x2 * width_ratio
         
     | 
| 
         @@ -2114,15 +2121,14 @@ class CDPMethods(): 
     | 
|
| 
       2114 
2121 
     | 
    
         
             
                                width_ratio = sb_config._saved_width_ratio
         
     | 
| 
       2115 
2122 
     | 
    
         
             
                            else:
         
     | 
| 
       2116 
2123 
     | 
    
         
             
                                scr_width = pyautogui.size().width
         
     | 
| 
       2117 
     | 
    
         
            -
                                self. 
     | 
| 
       2118 
     | 
    
         
            -
                                self.__add_light_pause()
         
     | 
| 
       2119 
     | 
    
         
            -
                                win_width = self.get_window_size()["width"]
         
     | 
| 
      
 2124 
     | 
    
         
            +
                                win_width = self.evaluate("screen.availWidth;")
         
     | 
| 
       2120 
2125 
     | 
    
         
             
                                width_ratio = round(float(scr_width) / float(win_width), 2)
         
     | 
| 
       2121 
2126 
     | 
    
         
             
                                width_ratio += 0.01
         
     | 
| 
       2122 
2127 
     | 
    
         
             
                                if width_ratio < 0.45 or width_ratio > 2.55:
         
     | 
| 
       2123 
2128 
     | 
    
         
             
                                    width_ratio = 1.01
         
     | 
| 
       2124 
2129 
     | 
    
         
             
                                sb_config._saved_width_ratio = width_ratio
         
     | 
| 
       2125 
     | 
    
         
            -
                             
     | 
| 
      
 2130 
     | 
    
         
            +
                            with suppress(Exception):
         
     | 
| 
      
 2131 
     | 
    
         
            +
                                self.__set_window_rect(win_x, win_y, width, height)
         
     | 
| 
       2126 
2132 
     | 
    
         
             
                            self.__add_light_pause()
         
     | 
| 
       2127 
2133 
     | 
    
         
             
                            self.bring_active_window_to_front()
         
     | 
| 
       2128 
2134 
     | 
    
         
             
                        elif (
         
     | 
| 
         @@ -2694,6 +2700,13 @@ class CDPMethods(): 
     | 
|
| 
       2694 
2700 
     | 
    
         
             
                        self.loop.run_until_complete(self.page.evaluate(js_code))
         
     | 
| 
       2695 
2701 
     | 
    
         
             
                        self.loop.run_until_complete(self.page.wait())
         
     | 
| 
       2696 
2702 
     | 
    
         | 
| 
      
 2703 
     | 
    
         
            +
                def scroll_by_y(self, y):
         
     | 
| 
      
 2704 
     | 
    
         
            +
                    y = int(y)
         
     | 
| 
      
 2705 
     | 
    
         
            +
                    js_code = "window.scrollBy(0, %s);" % y
         
     | 
| 
      
 2706 
     | 
    
         
            +
                    with suppress(Exception):
         
     | 
| 
      
 2707 
     | 
    
         
            +
                        self.loop.run_until_complete(self.page.evaluate(js_code))
         
     | 
| 
      
 2708 
     | 
    
         
            +
                        self.loop.run_until_complete(self.page.wait())
         
     | 
| 
      
 2709 
     | 
    
         
            +
             
     | 
| 
       2697 
2710 
     | 
    
         
             
                def scroll_to_top(self):
         
     | 
| 
       2698 
2711 
     | 
    
         
             
                    js_code = "window.scrollTo(0, 0);"
         
     | 
| 
       2699 
2712 
     | 
    
         
             
                    with suppress(Exception):
         
     | 
| 
         @@ -2707,11 +2720,21 @@ class CDPMethods(): 
     | 
|
| 
       2707 
2720 
     | 
    
         
             
                        self.loop.run_until_complete(self.page.wait())
         
     | 
| 
       2708 
2721 
     | 
    
         | 
| 
       2709 
2722 
     | 
    
         
             
                def scroll_up(self, amount=25):
         
     | 
| 
       2710 
     | 
    
         
            -
                     
     | 
| 
      
 2723 
     | 
    
         
            +
                    """Scrolls up as a percentage of the page."""
         
     | 
| 
      
 2724 
     | 
    
         
            +
                    try:
         
     | 
| 
      
 2725 
     | 
    
         
            +
                        self.loop.run_until_complete(self.page.scroll_up(amount))
         
     | 
| 
      
 2726 
     | 
    
         
            +
                    except Exception:
         
     | 
| 
      
 2727 
     | 
    
         
            +
                        amount = self.get_window_size()["height"] * amount / 100
         
     | 
| 
      
 2728 
     | 
    
         
            +
                        self.execute_script("window.scrollBy(0, -%s);" % amount)
         
     | 
| 
       2711 
2729 
     | 
    
         
             
                    self.loop.run_until_complete(self.page.wait())
         
     | 
| 
       2712 
2730 
     | 
    
         | 
| 
       2713 
2731 
     | 
    
         
             
                def scroll_down(self, amount=25):
         
     | 
| 
       2714 
     | 
    
         
            -
                     
     | 
| 
      
 2732 
     | 
    
         
            +
                    """Scrolls down as a percentage of the page."""
         
     | 
| 
      
 2733 
     | 
    
         
            +
                    try:
         
     | 
| 
      
 2734 
     | 
    
         
            +
                        self.loop.run_until_complete(self.page.scroll_down(amount))
         
     | 
| 
      
 2735 
     | 
    
         
            +
                    except Exception:
         
     | 
| 
      
 2736 
     | 
    
         
            +
                        amount = self.get_window_size()["height"] * amount / 100
         
     | 
| 
      
 2737 
     | 
    
         
            +
                        self.execute_script("window.scrollBy(0, %s);" % amount)
         
     | 
| 
       2715 
2738 
     | 
    
         
             
                    self.loop.run_until_complete(self.page.wait())
         
     | 
| 
       2716 
2739 
     | 
    
         | 
| 
       2717 
2740 
     | 
    
         
             
                def save_page_source(self, name, folder=None):
         
     | 
| 
         @@ -3577,9 +3577,18 @@ class BaseCase(unittest.TestCase): 
     | 
|
| 
       3577 
3577 
     | 
    
         
             
                        self.cdp.maximize()
         
     | 
| 
       3578 
3578 
     | 
    
         
             
                        return
         
     | 
| 
       3579 
3579 
     | 
    
         
             
                    self._check_browser()
         
     | 
| 
       3580 
     | 
    
         
            -
                     
     | 
| 
      
 3580 
     | 
    
         
            +
                    try:
         
     | 
| 
      
 3581 
     | 
    
         
            +
                        self.driver.maximize_window()
         
     | 
| 
      
 3582 
     | 
    
         
            +
                    except Exception:
         
     | 
| 
      
 3583 
     | 
    
         
            +
                        with suppress(Exception):
         
     | 
| 
      
 3584 
     | 
    
         
            +
                            width = self.execute_script("return screen.availWidth;")
         
     | 
| 
      
 3585 
     | 
    
         
            +
                            height = self.execute_script("return screen.availHeight;")
         
     | 
| 
      
 3586 
     | 
    
         
            +
                            self.set_window_rect(0, 0, width, height)
         
     | 
| 
       3581 
3587 
     | 
    
         
             
                    self.__demo_mode_pause_if_active(tiny=True)
         
     | 
| 
       3582 
3588 
     | 
    
         | 
| 
      
 3589 
     | 
    
         
            +
                def maximize(self):
         
     | 
| 
      
 3590 
     | 
    
         
            +
                    self.maximize_window()
         
     | 
| 
      
 3591 
     | 
    
         
            +
             
     | 
| 
       3583 
3592 
     | 
    
         
             
                def minimize_window(self):
         
     | 
| 
       3584 
3593 
     | 
    
         
             
                    self.__check_scope()
         
     | 
| 
       3585 
3594 
     | 
    
         
             
                    if self.__is_cdp_swap_needed():
         
     | 
| 
         @@ -3589,6 +3598,9 @@ class BaseCase(unittest.TestCase): 
     | 
|
| 
       3589 
3598 
     | 
    
         
             
                    self.driver.minimize_window()
         
     | 
| 
       3590 
3599 
     | 
    
         
             
                    self.__demo_mode_pause_if_active(tiny=True)
         
     | 
| 
       3591 
3600 
     | 
    
         | 
| 
      
 3601 
     | 
    
         
            +
                def minimize(self):
         
     | 
| 
      
 3602 
     | 
    
         
            +
                    self.minimize_window()
         
     | 
| 
      
 3603 
     | 
    
         
            +
             
     | 
| 
       3592 
3604 
     | 
    
         
             
                def reset_window_size(self):
         
     | 
| 
       3593 
3605 
     | 
    
         
             
                    self.__check_scope()
         
     | 
| 
       3594 
3606 
     | 
    
         
             
                    if self.__is_cdp_swap_needed():
         
     | 
| 
         @@ -4344,7 +4356,7 @@ class BaseCase(unittest.TestCase): 
     | 
|
| 
       4344 
4356 
     | 
    
         
             
                            if self.is_chromium():
         
     | 
| 
       4345 
4357 
     | 
    
         
             
                                try:
         
     | 
| 
       4346 
4358 
     | 
    
         
             
                                    if self.maximize_option:
         
     | 
| 
       4347 
     | 
    
         
            -
                                        self. 
     | 
| 
      
 4359 
     | 
    
         
            +
                                        self.maximize_window()
         
     | 
| 
       4348 
4360 
     | 
    
         
             
                                        self.wait_for_ready_state_complete()
         
     | 
| 
       4349 
4361 
     | 
    
         
             
                                    else:
         
     | 
| 
       4350 
4362 
     | 
    
         
             
                                        pass  # Now handled in browser_launcher.py
         
     | 
| 
         @@ -4354,7 +4366,7 @@ class BaseCase(unittest.TestCase): 
     | 
|
| 
       4354 
4366 
     | 
    
         
             
                            elif self.browser == "firefox":
         
     | 
| 
       4355 
4367 
     | 
    
         
             
                                try:
         
     | 
| 
       4356 
4368 
     | 
    
         
             
                                    if self.maximize_option:
         
     | 
| 
       4357 
     | 
    
         
            -
                                        self. 
     | 
| 
      
 4369 
     | 
    
         
            +
                                        self.maximize_window()
         
     | 
| 
       4358 
4370 
     | 
    
         
             
                                        self.wait_for_ready_state_complete()
         
     | 
| 
       4359 
4371 
     | 
    
         
             
                                    else:
         
     | 
| 
       4360 
4372 
     | 
    
         
             
                                        with suppress(Exception):
         
     | 
| 
         @@ -4364,7 +4376,7 @@ class BaseCase(unittest.TestCase): 
     | 
|
| 
       4364 
4376 
     | 
    
         
             
                            elif self.browser == "safari":
         
     | 
| 
       4365 
4377 
     | 
    
         
             
                                if self.maximize_option:
         
     | 
| 
       4366 
4378 
     | 
    
         
             
                                    try:
         
     | 
| 
       4367 
     | 
    
         
            -
                                        self. 
     | 
| 
      
 4379 
     | 
    
         
            +
                                        self.maximize_window()
         
     | 
| 
       4368 
4380 
     | 
    
         
             
                                        self.wait_for_ready_state_complete()
         
     | 
| 
       4369 
4381 
     | 
    
         
             
                                    except Exception:
         
     | 
| 
       4370 
4382 
     | 
    
         
             
                                        pass  # Keep existing browser resolution
         
     | 
| 
         @@ -6511,6 +6523,34 @@ class BaseCase(unittest.TestCase): 
     | 
|
| 
       6511 
6523 
     | 
    
         
             
                        self.execute_script(scroll_script)
         
     | 
| 
       6512 
6524 
     | 
    
         
             
                        time.sleep(0.012)
         
     | 
| 
       6513 
6525 
     | 
    
         | 
| 
      
 6526 
     | 
    
         
            +
                def scroll_by_y(self, y):
         
     | 
| 
      
 6527 
     | 
    
         
            +
                    """Scrolls page by y pixels."""
         
     | 
| 
      
 6528 
     | 
    
         
            +
                    self.__check_scope()
         
     | 
| 
      
 6529 
     | 
    
         
            +
                    y = int(y)
         
     | 
| 
      
 6530 
     | 
    
         
            +
                    if self.__is_cdp_swap_needed():
         
     | 
| 
      
 6531 
     | 
    
         
            +
                        self.cdp.scroll_by_y(y)
         
     | 
| 
      
 6532 
     | 
    
         
            +
                        return
         
     | 
| 
      
 6533 
     | 
    
         
            +
                    scroll_script = "window.scrollBy(0, %s);" % y
         
     | 
| 
      
 6534 
     | 
    
         
            +
                    with suppress(Exception):
         
     | 
| 
      
 6535 
     | 
    
         
            +
                        self.execute_script(scroll_script)
         
     | 
| 
      
 6536 
     | 
    
         
            +
                        time.sleep(0.012)
         
     | 
| 
      
 6537 
     | 
    
         
            +
             
     | 
| 
      
 6538 
     | 
    
         
            +
                def scroll_up(self, amount=25):
         
     | 
| 
      
 6539 
     | 
    
         
            +
                    """Scrolls up as a percentage of the page."""
         
     | 
| 
      
 6540 
     | 
    
         
            +
                    if self.__is_cdp_swap_needed():
         
     | 
| 
      
 6541 
     | 
    
         
            +
                        self.cdp.scroll_up(amount)
         
     | 
| 
      
 6542 
     | 
    
         
            +
                        return
         
     | 
| 
      
 6543 
     | 
    
         
            +
                    amount = self.get_window_size()["height"] * amount / 100
         
     | 
| 
      
 6544 
     | 
    
         
            +
                    self.execute_script("window.scrollBy(0, -%s);" % amount)
         
     | 
| 
      
 6545 
     | 
    
         
            +
             
     | 
| 
      
 6546 
     | 
    
         
            +
                def scroll_down(self, amount=25):
         
     | 
| 
      
 6547 
     | 
    
         
            +
                    """Scrolls down as a percentage of the page."""
         
     | 
| 
      
 6548 
     | 
    
         
            +
                    if self.__is_cdp_swap_needed():
         
     | 
| 
      
 6549 
     | 
    
         
            +
                        self.cdp.scroll_down(amount)
         
     | 
| 
      
 6550 
     | 
    
         
            +
                        return
         
     | 
| 
      
 6551 
     | 
    
         
            +
                    amount = self.get_window_size()["height"] * amount / 100
         
     | 
| 
      
 6552 
     | 
    
         
            +
                    self.execute_script("window.scrollBy(0, %s);" % amount)
         
     | 
| 
      
 6553 
     | 
    
         
            +
             
     | 
| 
       6514 
6554 
     | 
    
         
             
                def click_xpath(self, xpath):
         
     | 
| 
       6515 
6555 
     | 
    
         
             
                    """Technically, self.click() automatically detects xpath selectors,
         
     | 
| 
       6516 
6556 
     | 
    
         
             
                    so self.click_xpath() is just a longer name for the same action."""
         
     | 
| 
         @@ -11408,7 +11448,13 @@ class BaseCase(unittest.TestCase): 
     | 
|
| 
       11408 
11448 
     | 
    
         | 
| 
       11409 
11449 
     | 
    
         
             
                def __is_cdp_swap_needed(self):
         
     | 
| 
       11410 
11450 
     | 
    
         
             
                    """If the driver is disconnected, use a CDP method when available."""
         
     | 
| 
       11411 
     | 
    
         
            -
                     
     | 
| 
      
 11451 
     | 
    
         
            +
                    cdp_swap_needed = shared_utils.is_cdp_swap_needed(self.driver)
         
     | 
| 
      
 11452 
     | 
    
         
            +
                    if cdp_swap_needed:
         
     | 
| 
      
 11453 
     | 
    
         
            +
                        if not self.cdp:
         
     | 
| 
      
 11454 
     | 
    
         
            +
                            self.cdp = self.driver.cdp
         
     | 
| 
      
 11455 
     | 
    
         
            +
                        return True
         
     | 
| 
      
 11456 
     | 
    
         
            +
                    else:
         
     | 
| 
      
 11457 
     | 
    
         
            +
                        return False
         
     | 
| 
       11412 
11458 
     | 
    
         | 
| 
       11413 
11459 
     | 
    
         
             
                ############
         
     | 
| 
       11414 
11460 
     | 
    
         | 
| 
         @@ -14001,7 +14047,7 @@ class BaseCase(unittest.TestCase): 
     | 
|
| 
       14001 
14047 
     | 
    
         
             
                        )
         
     | 
| 
       14002 
14048 
     | 
    
         
             
                        raise Exception(message)
         
     | 
| 
       14003 
14049 
     | 
    
         
             
                    except InvalidArgumentException:
         
     | 
| 
       14004 
     | 
    
         
            -
                        if not self. 
     | 
| 
      
 14050 
     | 
    
         
            +
                        if not self.is_chromium():
         
     | 
| 
       14005 
14051 
     | 
    
         
             
                            raise
         
     | 
| 
       14006 
14052 
     | 
    
         
             
                        chrome_version = self.driver.capabilities["browserVersion"]
         
     | 
| 
       14007 
14053 
     | 
    
         
             
                        major_chrome_version = chrome_version.split(".")[0]
         
     | 
| 
         @@ -14616,7 +14662,7 @@ class BaseCase(unittest.TestCase): 
     | 
|
| 
       14616 
14662 
     | 
    
         
             
                            try:
         
     | 
| 
       14617 
14663 
     | 
    
         
             
                                shadow_root = element.shadow_root
         
     | 
| 
       14618 
14664 
     | 
    
         
             
                            except Exception:
         
     | 
| 
       14619 
     | 
    
         
            -
                                if self. 
     | 
| 
      
 14665 
     | 
    
         
            +
                                if self.is_chromium():
         
     | 
| 
       14620 
14666 
     | 
    
         
             
                                    chrome_dict = self.driver.capabilities["chrome"]
         
     | 
| 
       14621 
14667 
     | 
    
         
             
                                    chrome_dr_version = chrome_dict["chromedriverVersion"]
         
     | 
| 
       14622 
14668 
     | 
    
         
             
                                    chromedriver_version = chrome_dr_version.split(" ")[0]
         
     | 
| 
         @@ -264,16 +264,13 @@ class Reveal: 
     | 
|
| 
       264 
264 
     | 
    
         | 
| 
       265 
265 
     | 
    
         | 
| 
       266 
266 
     | 
    
         
             
            class HighCharts:
         
     | 
| 
      
 267 
     | 
    
         
            +
                LIB = "https://cdn.jsdelivr.net/npm/highcharts"
         
     | 
| 
       267 
268 
     | 
    
         
             
                VER = "10.3.3"
         
     | 
| 
       268 
     | 
    
         
            -
                HC_CSS = " 
     | 
| 
       269 
     | 
    
         
            -
                HC_JS = " 
     | 
| 
       270 
     | 
    
         
            -
                EXPORTING_JS = " 
     | 
| 
       271 
     | 
    
         
            -
                EXPORT_DATA_JS = (
         
     | 
| 
       272 
     | 
    
         
            -
             
     | 
| 
       273 
     | 
    
         
            -
                )
         
     | 
| 
       274 
     | 
    
         
            -
                ACCESSIBILITY_JS = (
         
     | 
| 
       275 
     | 
    
         
            -
                    "https://code.highcharts.com/%s/modules/accessibility.js" % VER
         
     | 
| 
       276 
     | 
    
         
            -
                )
         
     | 
| 
      
 269 
     | 
    
         
            +
                HC_CSS = "%s@%s/css/highcharts.css" % (LIB, VER)
         
     | 
| 
      
 270 
     | 
    
         
            +
                HC_JS = "%s@%s/highcharts.js" % (LIB, VER)
         
     | 
| 
      
 271 
     | 
    
         
            +
                EXPORTING_JS = "%s@%s/modules/exporting.js" % (LIB, VER)
         
     | 
| 
      
 272 
     | 
    
         
            +
                EXPORT_DATA_JS = "%s@%s/modules/export-data.js" % (LIB, VER)
         
     | 
| 
      
 273 
     | 
    
         
            +
                ACCESSIBILITY_JS = "%s@%s/modules/accessibility.js" % (LIB, VER)
         
     | 
| 
       277 
274 
     | 
    
         | 
| 
       278 
275 
     | 
    
         | 
| 
       279 
276 
     | 
    
         
             
            class BootstrapTour:
         
     | 
| 
         @@ -1530,7 +1530,7 @@ def save_page_source(driver, name, folder=None): 
     | 
|
| 
       1530 
1530 
     | 
    
         
             
                rendered_source = log_helper.get_html_source_with_base_href(
         
     | 
| 
       1531 
1531 
     | 
    
         
             
                    driver, page_source
         
     | 
| 
       1532 
1532 
     | 
    
         
             
                )
         
     | 
| 
       1533 
     | 
    
         
            -
                html_file = open(html_file_path, "w+", "utf-8")
         
     | 
| 
      
 1533 
     | 
    
         
            +
                html_file = open(html_file_path, mode="w+", encoding="utf-8")
         
     | 
| 
       1534 
1534 
     | 
    
         
             
                html_file.write(rendered_source)
         
     | 
| 
       1535 
1535 
     | 
    
         
             
                html_file.close()
         
     | 
| 
       1536 
1536 
     | 
    
         | 
| 
         @@ -455,8 +455,6 @@ def Driver( 
     | 
|
| 
       455 
455 
     | 
    
         
             
                    )
         
     | 
| 
       456 
456 
     | 
    
         
             
                if sb_config._browser_shortcut:
         
     | 
| 
       457 
457 
     | 
    
         
             
                    browser = sb_config._browser_shortcut
         
     | 
| 
       458 
     | 
    
         
            -
                if browser in constants.ChromiumSubs.chromium_subs:
         
     | 
| 
       459 
     | 
    
         
            -
                    browser = "chrome"  # Still uses chromedriver
         
     | 
| 
       460 
458 
     | 
    
         
             
                if headless is None:
         
     | 
| 
       461 
459 
     | 
    
         
             
                    if "--headless" in sys_argv:
         
     | 
| 
       462 
460 
     | 
    
         
             
                        headless = True
         
     | 
| 
         @@ -953,6 +951,10 @@ def Driver( 
     | 
|
| 
       953 
951 
     | 
    
         
             
                                driver_version = None
         
     | 
| 
       954 
952 
     | 
    
         
             
                            break
         
     | 
| 
       955 
953 
     | 
    
         
             
                        count += 1
         
     | 
| 
      
 954 
     | 
    
         
            +
                if browser in constants.ChromiumSubs.chromium_subs:
         
     | 
| 
      
 955 
     | 
    
         
            +
                    if not binary_location:
         
     | 
| 
      
 956 
     | 
    
         
            +
                        browser = "chrome"  # Still uses chromedriver
         
     | 
| 
      
 957 
     | 
    
         
            +
                        sb_config._browser_shortcut = browser
         
     | 
| 
       956 
958 
     | 
    
         
             
                browser_name = browser
         
     | 
| 
       957 
959 
     | 
    
         | 
| 
       958 
960 
     | 
    
         
             
                # Launch a web browser
         
     | 
| 
         @@ -1676,8 +1676,23 @@ def pytest_configure(config): 
     | 
|
| 
       1676 
1676 
     | 
    
         
             
                sb_config.browser = config.getoption("browser")
         
     | 
| 
       1677 
1677 
     | 
    
         
             
                if sb_config._browser_shortcut:
         
     | 
| 
       1678 
1678 
     | 
    
         
             
                    sb_config.browser = sb_config._browser_shortcut
         
     | 
| 
       1679 
     | 
    
         
            -
                 
     | 
| 
       1680 
     | 
    
         
            -
                     
     | 
| 
      
 1679 
     | 
    
         
            +
                elif sys_argv == ["-c"]:  # Multithreading messes with args
         
     | 
| 
      
 1680 
     | 
    
         
            +
                    if config.getoption("use_opera"):
         
     | 
| 
      
 1681 
     | 
    
         
            +
                        bin_loc = detect_b_ver.get_binary_location("opera")
         
     | 
| 
      
 1682 
     | 
    
         
            +
                        if bin_loc and os.path.exists(bin_loc):
         
     | 
| 
      
 1683 
     | 
    
         
            +
                            sb_config.browser = "opera"
         
     | 
| 
      
 1684 
     | 
    
         
            +
                    elif config.getoption("use_brave"):
         
     | 
| 
      
 1685 
     | 
    
         
            +
                        bin_loc = detect_b_ver.get_binary_location("brave")
         
     | 
| 
      
 1686 
     | 
    
         
            +
                        if bin_loc and os.path.exists(bin_loc):
         
     | 
| 
      
 1687 
     | 
    
         
            +
                            sb_config.browser = "brave"
         
     | 
| 
      
 1688 
     | 
    
         
            +
                    elif config.getoption("use_comet"):
         
     | 
| 
      
 1689 
     | 
    
         
            +
                        bin_loc = detect_b_ver.get_binary_location("comet")
         
     | 
| 
      
 1690 
     | 
    
         
            +
                        if bin_loc and os.path.exists(bin_loc):
         
     | 
| 
      
 1691 
     | 
    
         
            +
                            sb_config.browser = "comet"
         
     | 
| 
      
 1692 
     | 
    
         
            +
                    elif config.getoption("use_atlas"):
         
     | 
| 
      
 1693 
     | 
    
         
            +
                        bin_loc = detect_b_ver.get_binary_location("atlas")
         
     | 
| 
      
 1694 
     | 
    
         
            +
                        if bin_loc and os.path.exists(bin_loc):
         
     | 
| 
      
 1695 
     | 
    
         
            +
                            sb_config.browser = "atlas"
         
     | 
| 
       1681 
1696 
     | 
    
         
             
                sb_config.account = config.getoption("account")
         
     | 
| 
       1682 
1697 
     | 
    
         
             
                sb_config.data = config.getoption("data")
         
     | 
| 
       1683 
1698 
     | 
    
         
             
                sb_config.var1 = config.getoption("var1")
         
     | 
| 
         @@ -1714,6 +1729,35 @@ def pytest_configure(config): 
     | 
|
| 
       1714 
1729 
     | 
    
         
             
                sb_config.binary_location = config.getoption("binary_location")
         
     | 
| 
       1715 
1730 
     | 
    
         
             
                if hasattr(sb_config, "_cdp_bin_loc") and sb_config._cdp_bin_loc:
         
     | 
| 
       1716 
1731 
     | 
    
         
             
                    sb_config.binary_location = sb_config._cdp_bin_loc
         
     | 
| 
      
 1732 
     | 
    
         
            +
                elif not sb_config.binary_location:
         
     | 
| 
      
 1733 
     | 
    
         
            +
                    if (
         
     | 
| 
      
 1734 
     | 
    
         
            +
                        config.getoption("use_opera")
         
     | 
| 
      
 1735 
     | 
    
         
            +
                        or sb_config._browser_shortcut == "opera"
         
     | 
| 
      
 1736 
     | 
    
         
            +
                    ):
         
     | 
| 
      
 1737 
     | 
    
         
            +
                        bin_loc = detect_b_ver.get_binary_location("opera")
         
     | 
| 
      
 1738 
     | 
    
         
            +
                        if bin_loc and os.path.exists(bin_loc):
         
     | 
| 
      
 1739 
     | 
    
         
            +
                            sb_config.binary_location = bin_loc
         
     | 
| 
      
 1740 
     | 
    
         
            +
                    elif (
         
     | 
| 
      
 1741 
     | 
    
         
            +
                        config.getoption("use_brave")
         
     | 
| 
      
 1742 
     | 
    
         
            +
                        or sb_config._browser_shortcut == "brave"
         
     | 
| 
      
 1743 
     | 
    
         
            +
                    ):
         
     | 
| 
      
 1744 
     | 
    
         
            +
                        bin_loc = detect_b_ver.get_binary_location("brave")
         
     | 
| 
      
 1745 
     | 
    
         
            +
                        if bin_loc and os.path.exists(bin_loc):
         
     | 
| 
      
 1746 
     | 
    
         
            +
                            sb_config.binary_location = bin_loc
         
     | 
| 
      
 1747 
     | 
    
         
            +
                    elif (
         
     | 
| 
      
 1748 
     | 
    
         
            +
                        config.getoption("use_comet")
         
     | 
| 
      
 1749 
     | 
    
         
            +
                        or sb_config._browser_shortcut == "comet"
         
     | 
| 
      
 1750 
     | 
    
         
            +
                    ):
         
     | 
| 
      
 1751 
     | 
    
         
            +
                        bin_loc = detect_b_ver.get_binary_location("comet")
         
     | 
| 
      
 1752 
     | 
    
         
            +
                        if bin_loc and os.path.exists(bin_loc):
         
     | 
| 
      
 1753 
     | 
    
         
            +
                            sb_config.binary_location = bin_loc
         
     | 
| 
      
 1754 
     | 
    
         
            +
                    elif (
         
     | 
| 
      
 1755 
     | 
    
         
            +
                        config.getoption("use_atlas")
         
     | 
| 
      
 1756 
     | 
    
         
            +
                        or sb_config._browser_shortcut == "atlas"
         
     | 
| 
      
 1757 
     | 
    
         
            +
                    ):
         
     | 
| 
      
 1758 
     | 
    
         
            +
                        bin_loc = detect_b_ver.get_binary_location("atlas")
         
     | 
| 
      
 1759 
     | 
    
         
            +
                        if bin_loc and os.path.exists(bin_loc):
         
     | 
| 
      
 1760 
     | 
    
         
            +
                            sb_config.binary_location = bin_loc
         
     | 
| 
       1717 
1761 
     | 
    
         
             
                if config.getoption("use_cft") and not sb_config.binary_location:
         
     | 
| 
       1718 
1762 
     | 
    
         
             
                    sb_config.binary_location = "cft"
         
     | 
| 
       1719 
1763 
     | 
    
         
             
                elif config.getoption("use_chs") and not sb_config.binary_location:
         
     | 
| 
         @@ -1726,6 +1770,10 @@ def pytest_configure(config): 
     | 
|
| 
       1726 
1770 
     | 
    
         
             
                    sb_config.headless = True
         
     | 
| 
       1727 
1771 
     | 
    
         
             
                    sb_config.headless1 = False
         
     | 
| 
       1728 
1772 
     | 
    
         
             
                    sb_config.headless2 = False
         
     | 
| 
      
 1773 
     | 
    
         
            +
                if sb_config.browser in constants.ChromiumSubs.chromium_subs:
         
     | 
| 
      
 1774 
     | 
    
         
            +
                    if not sb_config.binary_location:
         
     | 
| 
      
 1775 
     | 
    
         
            +
                        sb_config.browser = "chrome"  # Still uses chromedriver
         
     | 
| 
      
 1776 
     | 
    
         
            +
                        sb_config._browser_shortcut = sb_config.browser
         
     | 
| 
       1729 
1777 
     | 
    
         
             
                sb_config.driver_version = config.getoption("driver_version")
         
     | 
| 
       1730 
1778 
     | 
    
         
             
                sb_config.page_load_strategy = config.getoption("page_load_strategy")
         
     | 
| 
       1731 
1779 
     | 
    
         
             
                sb_config.with_testing_base = config.getoption("with_testing_base")
         
     | 
| 
         @@ -1132,8 +1132,6 @@ def SB( 
     | 
|
| 
       1132 
1132 
     | 
    
         
             
                sb_config.browser = browser
         
     | 
| 
       1133 
1133 
     | 
    
         
             
                if sb_config._browser_shortcut:
         
     | 
| 
       1134 
1134 
     | 
    
         
             
                    sb_config.browser = sb_config._browser_shortcut
         
     | 
| 
       1135 
     | 
    
         
            -
                if sb_config.browser in constants.ChromiumSubs.chromium_subs:
         
     | 
| 
       1136 
     | 
    
         
            -
                    sb_config.browser = "chrome"  # Still uses chromedriver
         
     | 
| 
       1137 
1135 
     | 
    
         
             
                if not hasattr(sb_config, "is_behave"):
         
     | 
| 
       1138 
1136 
     | 
    
         
             
                    sb_config.is_behave = False
         
     | 
| 
       1139 
1137 
     | 
    
         
             
                if not hasattr(sb_config, "is_pytest"):
         
     | 
| 
         @@ -1242,6 +1240,10 @@ def SB( 
     | 
|
| 
       1242 
1240 
     | 
    
         
             
                sb_config.interval = interval
         
     | 
| 
       1243 
1241 
     | 
    
         
             
                sb_config.cap_file = cap_file
         
     | 
| 
       1244 
1242 
     | 
    
         
             
                sb_config.cap_string = cap_string
         
     | 
| 
      
 1243 
     | 
    
         
            +
                if sb_config.browser in constants.ChromiumSubs.chromium_subs:
         
     | 
| 
      
 1244 
     | 
    
         
            +
                    if not sb_config.binary_location:
         
     | 
| 
      
 1245 
     | 
    
         
            +
                        sb_config.browser = "chrome"  # Still uses chromedriver
         
     | 
| 
      
 1246 
     | 
    
         
            +
                        sb_config._browser_shortcut = sb_config.browser
         
     | 
| 
       1245 
1247 
     | 
    
         | 
| 
       1246 
1248 
     | 
    
         
             
                sb = BaseCase()
         
     | 
| 
       1247 
1249 
     | 
    
         
             
                sb.with_testing_base = sb_config.with_testing_base
         
     | 
| 
         @@ -1302,8 +1302,6 @@ class SeleniumBrowser(Plugin): 
     | 
|
| 
       1302 
1302 
     | 
    
         
             
                    if sb_config._browser_shortcut:
         
     | 
| 
       1303 
1303 
     | 
    
         
             
                        self.options.browser = sb_config._browser_shortcut
         
     | 
| 
       1304 
1304 
     | 
    
         
             
                        test.test.browser = sb_config._browser_shortcut
         
     | 
| 
       1305 
     | 
    
         
            -
                    if test.test.browser in constants.ChromiumSubs.chromium_subs:
         
     | 
| 
       1306 
     | 
    
         
            -
                        test.test.browser = "chrome"  # Still uses chromedriver
         
     | 
| 
       1307 
1305 
     | 
    
         
             
                    test.test.cap_file = self.options.cap_file
         
     | 
| 
       1308 
1306 
     | 
    
         
             
                    test.test.cap_string = self.options.cap_string
         
     | 
| 
       1309 
1307 
     | 
    
         
             
                    test.test.headless = self.options.headless
         
     | 
| 
         @@ -1355,6 +1353,10 @@ class SeleniumBrowser(Plugin): 
     | 
|
| 
       1355 
1353 
     | 
    
         
             
                        test.test.headless = True
         
     | 
| 
       1356 
1354 
     | 
    
         
             
                        test.test.headless1 = False
         
     | 
| 
       1357 
1355 
     | 
    
         
             
                        test.test.headless2 = False
         
     | 
| 
      
 1356 
     | 
    
         
            +
                    if test.test.browser in constants.ChromiumSubs.chromium_subs:
         
     | 
| 
      
 1357 
     | 
    
         
            +
                        if not sb_config.binary_location:
         
     | 
| 
      
 1358 
     | 
    
         
            +
                            test.test.browser = "chrome"  # Still uses chromedriver
         
     | 
| 
      
 1359 
     | 
    
         
            +
                            sb_config._browser_shortcut = test.test.browser
         
     | 
| 
       1358 
1360 
     | 
    
         
             
                    test.test.driver_version = self.options.driver_version
         
     | 
| 
       1359 
1361 
     | 
    
         
             
                    test.test.page_load_strategy = self.options.page_load_strategy
         
     | 
| 
       1360 
1362 
     | 
    
         
             
                    test.test.chromium_arg = self.options.chromium_arg
         
     | 
| 
         @@ -1,6 +1,6 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            Metadata-Version: 2.4
         
     | 
| 
       2 
2 
     | 
    
         
             
            Name: seleniumbase
         
     | 
| 
       3 
     | 
    
         
            -
            Version: 4. 
     | 
| 
      
 3 
     | 
    
         
            +
            Version: 4.44.1
         
     | 
| 
       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
         
     | 
| 
         @@ -60,7 +60,7 @@ Requires-Python: >=3.8 
     | 
|
| 
       60 
60 
     | 
    
         
             
            Description-Content-Type: text/markdown
         
     | 
| 
       61 
61 
     | 
    
         
             
            License-File: LICENSE
         
     | 
| 
       62 
62 
     | 
    
         
             
            Requires-Dist: pip>=25.0.1; python_version < "3.9"
         
     | 
| 
       63 
     | 
    
         
            -
            Requires-Dist: pip>=25. 
     | 
| 
      
 63 
     | 
    
         
            +
            Requires-Dist: pip>=25.3; python_version >= "3.9"
         
     | 
| 
       64 
64 
     | 
    
         
             
            Requires-Dist: packaging>=25.0
         
     | 
| 
       65 
65 
     | 
    
         
             
            Requires-Dist: setuptools~=70.2; python_version < "3.10"
         
     | 
| 
       66 
66 
     | 
    
         
             
            Requires-Dist: setuptools>=80.9.0; python_version >= "3.10"
         
     | 
| 
         @@ -113,7 +113,7 @@ Requires-Dist: websocket-client~=1.8.0; python_version < "3.9" 
     | 
|
| 
       113 
113 
     | 
    
         
             
            Requires-Dist: websocket-client~=1.9.0; python_version >= "3.9"
         
     | 
| 
       114 
114 
     | 
    
         
             
            Requires-Dist: selenium==4.27.1; python_version < "3.9"
         
     | 
| 
       115 
115 
     | 
    
         
             
            Requires-Dist: selenium==4.32.0; python_version >= "3.9" and python_version < "3.10"
         
     | 
| 
       116 
     | 
    
         
            -
            Requires-Dist: selenium==4. 
     | 
| 
      
 116 
     | 
    
         
            +
            Requires-Dist: selenium==4.38.0; python_version >= "3.10"
         
     | 
| 
       117 
117 
     | 
    
         
             
            Requires-Dist: cssselect==1.2.0; python_version < "3.9"
         
     | 
| 
       118 
118 
     | 
    
         
             
            Requires-Dist: cssselect==1.3.0; python_version >= "3.9"
         
     | 
| 
       119 
119 
     | 
    
         
             
            Requires-Dist: sortedcontainers==2.4.0
         
     | 
| 
         @@ -186,7 +186,7 @@ Requires-Dist: pip-system-certs==4.0; platform_system == "Windows" and extra == 
     | 
|
| 
       186 
186 
     | 
    
         
             
            Provides-Extra: proxy
         
     | 
| 
       187 
187 
     | 
    
         
             
            Requires-Dist: proxy.py==2.4.3; extra == "proxy"
         
     | 
| 
       188 
188 
     | 
    
         
             
            Provides-Extra: psutil
         
     | 
| 
       189 
     | 
    
         
            -
            Requires-Dist: psutil==7.1. 
     | 
| 
      
 189 
     | 
    
         
            +
            Requires-Dist: psutil==7.1.2; extra == "psutil"
         
     | 
| 
       190 
190 
     | 
    
         
             
            Provides-Extra: pyautogui
         
     | 
| 
       191 
191 
     | 
    
         
             
            Requires-Dist: PyAutoGUI>=0.9.54; platform_system != "Linux" and extra == "pyautogui"
         
     | 
| 
       192 
192 
     | 
    
         
             
            Provides-Extra: selenium-stealth
         
     | 
| 
         @@ -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=Gr-UZgBl7BIprxWO2esUbwKHQHCR4_vClPRiURlWiJY,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,11 +36,11 @@ 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=6qYkBOXoxuRlLa4v-HNuQLGC8NRuHnpqofcLLuyWgA4,255486
         
     | 
| 
       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
         
     | 
| 
       43 
     | 
    
         
            -
            seleniumbase/core/detect_b_ver.py,sha256= 
     | 
| 
      
 43 
     | 
    
         
            +
            seleniumbase/core/detect_b_ver.py,sha256=hXAda-_e7syT948AUbD2QYCGGEqM2tMOba7EmGKGFT4,22505
         
     | 
| 
       44 
44 
     | 
    
         
             
            seleniumbase/core/download_helper.py,sha256=qSR54kQISucF4RQaLCOuuerSu6DR41juGi_30HVvWYY,2943
         
     | 
| 
       45 
45 
     | 
    
         
             
            seleniumbase/core/encoded_images.py,sha256=rDKJ4cNJSuKiRcFViYU7bjyTS9_moI57gUPRXVg3u2k,14209
         
     | 
| 
       46 
46 
     | 
    
         
             
            seleniumbase/core/jqc_helper.py,sha256=2DDQr9Q2jSSZqFzX588jLlUM9oJvyrRWq2aORSIPUdI,10322
         
     | 
| 
         @@ -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=85E5QCLOI_8s7I40EoM7-U1GeOypQuw0aH5CB8oKtUE,110503
         
     | 
| 
       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,12 +71,12 @@ 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= 
     | 
| 
       75 
     | 
    
         
            -
            seleniumbase/fixtures/constants.py,sha256= 
     | 
| 
      
 74 
     | 
    
         
            +
            seleniumbase/fixtures/base_case.py,sha256=R-yNQjqDwAROf4vVR3J4u74BU0iKrJ2TyLL3fKdMW3s,742846
         
     | 
| 
      
 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
         
     | 
| 
       78 
78 
     | 
    
         
             
            seleniumbase/fixtures/js_utils.py,sha256=iNMn4soCRIuyjYG0vUHZX5zWEKSR8RgGDsl9Y74DFP8,52843
         
     | 
| 
       79 
     | 
    
         
            -
            seleniumbase/fixtures/page_actions.py,sha256= 
     | 
| 
      
 79 
     | 
    
         
            +
            seleniumbase/fixtures/page_actions.py,sha256=06tpHzyw7frpFfRWEqKWhn0_76BQFIqRK_xAwmr2bSk,73206
         
     | 
| 
       80 
80 
     | 
    
         
             
            seleniumbase/fixtures/page_utils.py,sha256=auaUAuV2ctRNPUnGWuHS22Il0Ml0PPHmxtikVZdM2tc,12277
         
     | 
| 
       81 
81 
     | 
    
         
             
            seleniumbase/fixtures/shared_utils.py,sha256=kn0rcF0tEkQkiT8RGVooNFsLnVWmdPeTH9PfIm86TOI,10527
         
     | 
| 
       82 
82 
     | 
    
         
             
            seleniumbase/fixtures/unittest_helper.py,sha256=sfZ92rZeBAn_sF_yQ3I6_I7h3lyU5-cV_UMegBNoEm8,1294
         
     | 
| 
         @@ -92,13 +92,13 @@ seleniumbase/plugins/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hS 
     | 
|
| 
       92 
92 
     | 
    
         
             
            seleniumbase/plugins/base_plugin.py,sha256=ItLgtaZmu_363iycy8BNX0Do5LyIWGiTMLW6krXM-WQ,14748
         
     | 
| 
       93 
93 
     | 
    
         
             
            seleniumbase/plugins/basic_test_info.py,sha256=nvQxLMxD4pgjY3dGHlMAxmHXP0LIhcOIfWjNue-49uk,2108
         
     | 
| 
       94 
94 
     | 
    
         
             
            seleniumbase/plugins/db_reporting_plugin.py,sha256=En09qUCoojrk9-vbcnsoHdSELoGmag2GDIyu3jTiJas,7331
         
     | 
| 
       95 
     | 
    
         
            -
            seleniumbase/plugins/driver_manager.py,sha256= 
     | 
| 
      
 95 
     | 
    
         
            +
            seleniumbase/plugins/driver_manager.py,sha256=CwKkvgtcHue8m6oJSrxYJvWIu2i5P41u05bOzoFMrYE,41861
         
     | 
| 
       96 
96 
     | 
    
         
             
            seleniumbase/plugins/page_source.py,sha256=mifv7Rkkb9qcrFY2H-9fctoR1CpHHiCgnFTOY2p7mBY,1889
         
     | 
| 
       97 
     | 
    
         
            -
            seleniumbase/plugins/pytest_plugin.py,sha256= 
     | 
| 
      
 97 
     | 
    
         
            +
            seleniumbase/plugins/pytest_plugin.py,sha256=A4UBkiLmSakFRUWnOCWF7KLM34yZpHEJPCpyS0P8ftA,116633
         
     | 
| 
       98 
98 
     | 
    
         
             
            seleniumbase/plugins/s3_logging_plugin.py,sha256=WDfertQgGOW_SRJpFMaekYD6vBVW9VO62POtXXy2HCM,2319
         
     | 
| 
       99 
     | 
    
         
            -
            seleniumbase/plugins/sb_manager.py,sha256= 
     | 
| 
      
 99 
     | 
    
         
            +
            seleniumbase/plugins/sb_manager.py,sha256=pXjjXqaO8NthZ-ZiRBnrsOQyDtsdASYQvfSoggnXHwU,63511
         
     | 
| 
       100 
100 
     | 
    
         
             
            seleniumbase/plugins/screen_shots.py,sha256=1hrXw-hzuZ1BR6Yh7AyWX2ABnvnP73-RCbwdz958gj4,1127
         
     | 
| 
       101 
     | 
    
         
            -
            seleniumbase/plugins/selenium_plugin.py,sha256= 
     | 
| 
      
 101 
     | 
    
         
            +
            seleniumbase/plugins/selenium_plugin.py,sha256=nFdKEHRLcAfoTJqhpd3Drl5F_-ZtP6nwgV69pqZcKGQ,66104
         
     | 
| 
       102 
102 
     | 
    
         
             
            seleniumbase/resources/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
         
     | 
| 
       103 
103 
     | 
    
         
             
            seleniumbase/translate/__init__.py,sha256=N2i5XntTwJZmwr9-qvdX5gC6Rdm5-ClIbnQ8yyPn4Oo,459
         
     | 
| 
       104 
104 
     | 
    
         
             
            seleniumbase/translate/chinese.py,sha256=0QhK2eadtsdN4KCvwki1J7jBCe8I4xxWbKzteJKJozY,24698
         
     | 
| 
         @@ -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. 
     | 
| 
       145 
     | 
    
         
            -
            seleniumbase-4. 
     | 
| 
       146 
     | 
    
         
            -
            seleniumbase-4. 
     | 
| 
       147 
     | 
    
         
            -
            seleniumbase-4. 
     | 
| 
       148 
     | 
    
         
            -
            seleniumbase-4. 
     | 
| 
       149 
     | 
    
         
            -
            seleniumbase-4. 
     | 
| 
      
 144 
     | 
    
         
            +
            seleniumbase-4.44.1.dist-info/licenses/LICENSE,sha256=BRblZsX7HyPUjQmYTiyWr_e9tzWvmR3R4SFclM2R3W0,1085
         
     | 
| 
      
 145 
     | 
    
         
            +
            seleniumbase-4.44.1.dist-info/METADATA,sha256=wFZknDxM6iwnJOi7jP0EnkfLzjEiyNbd9rROTKRir3o,90492
         
     | 
| 
      
 146 
     | 
    
         
            +
            seleniumbase-4.44.1.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
         
     | 
| 
      
 147 
     | 
    
         
            +
            seleniumbase-4.44.1.dist-info/entry_points.txt,sha256=CNrh2EKNaHYEhO6pP1RJyVLB99LkDDYX7TnUK8xfjqk,623
         
     | 
| 
      
 148 
     | 
    
         
            +
            seleniumbase-4.44.1.dist-info/top_level.txt,sha256=4N97aBOQ8ETCnDnokBsWb07lJfTaq3C1ZzYRxvLMxqU,19
         
     | 
| 
      
 149 
     | 
    
         
            +
            seleniumbase-4.44.1.dist-info/RECORD,,
         
     | 
| 
         
            File without changes
         
     | 
| 
         
            File without changes
         
     | 
| 
         
            File without changes
         
     | 
| 
         
            File without changes
         
     |