diff --git a/examples/boilerplates/samples/google_test.py b/examples/boilerplates/samples/google_test.py index 7ffd3cda38a..edb89ffc71d 100644 --- a/examples/boilerplates/samples/google_test.py +++ b/examples/boilerplates/samples/google_test.py @@ -4,7 +4,7 @@ from .google_objects import HomePage, ResultsPage except Exception: from google_objects import HomePage, ResultsPage - BaseCase.main(__name__, __file__) + BaseCase.main(__name__, __file__, "--uc") class GoogleTests(BaseCase): diff --git a/examples/boilerplates/samples/test_page_objects.py b/examples/boilerplates/samples/test_page_objects.py index 6983b31735b..c485fd1b893 100644 --- a/examples/boilerplates/samples/test_page_objects.py +++ b/examples/boilerplates/samples/test_page_objects.py @@ -1,6 +1,6 @@ """An example using the Classic Page Object Model.""" from seleniumbase import BaseCase -BaseCase.main(__name__, __file__) +BaseCase.main(__name__, __file__, "--uc") class GooglePage: diff --git a/examples/cdp_mode/raw_priceline.py b/examples/cdp_mode/raw_priceline.py index 6b604cb45fd..bac866019a3 100644 --- a/examples/cdp_mode/raw_priceline.py +++ b/examples/cdp_mode/raw_priceline.py @@ -27,7 +27,7 @@ sb.sleep(0.8) for y in range(1, 9): sb.scroll_to_y(y * 400) - sb.sleep(1.25) + sb.sleep(0.75) hotel_names = sb.find_elements('a[data-autobot-element-id*="HOTEL_NAME"]') hotel_prices = sb.find_elements('span[font-size="4,,,5"]') print("Priceline Hotels in %s:" % location) diff --git a/examples/presenter/uc_presentation_4.py b/examples/presenter/uc_presentation_4.py index d9cb619d2f9..dbba53dad8b 100644 --- a/examples/presenter/uc_presentation_4.py +++ b/examples/presenter/uc_presentation_4.py @@ -796,7 +796,7 @@ def test_presentation_4(self): sb.sleep(0.8) for y in range(1, 9): sb.scroll_to_y(y * 400) - sb.sleep(1.25) + sb.sleep(0.75) hotel_names = sb.find_elements( 'a[data-autobot-element-id*="HOTEL_NAME"]' ) diff --git a/examples/raw_google.py b/examples/raw_google.py index a37faae637c..48032236eea 100644 --- a/examples/raw_google.py +++ b/examples/raw_google.py @@ -1,6 +1,6 @@ from seleniumbase import SB -with SB(test=True) as sb: +with SB(test=True, uc=True) as sb: sb.open("https://google.com/ncr") sb.type('[title="Search"]', "SeleniumBase GitHub page\n") sb.click('[href*="github.com/seleniumbase/"]') diff --git a/examples/raw_gui_click.py b/examples/raw_gui_click.py index acb2d12304a..614aada2345 100644 --- a/examples/raw_gui_click.py +++ b/examples/raw_gui_click.py @@ -1,8 +1,8 @@ import sys from seleniumbase import SB -# An incomplete UserAgent forces CAPTCHA-solving on macOS -agent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) Chrome/126.0.0.0" +# An bad UserAgent forces CAPTCHA-solving on macOS +agent = "cool" if "linux" in sys.platform or "win32" in sys.platform: agent = None # Use the default UserAgent diff --git a/examples/raw_pyautogui.py b/examples/raw_pyautogui.py index bbf8b4f57f7..5e3bca507ae 100644 --- a/examples/raw_pyautogui.py +++ b/examples/raw_pyautogui.py @@ -1,8 +1,8 @@ import sys from seleniumbase import SB -# An incomplete UserAgent forces CAPTCHA-solving on macOS -agent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) Chrome/126.0.0.0" +# An bad UserAgent forces CAPTCHA-solving on macOS +agent = "cool" if "linux" in sys.platform or "win32" in sys.platform: agent = None # Use the default UserAgent diff --git a/examples/test_cdp_ad_blocking.py b/examples/test_cdp_ad_blocking.py index 3ff4648df5e..0dea44296da 100644 --- a/examples/test_cdp_ad_blocking.py +++ b/examples/test_cdp_ad_blocking.py @@ -5,8 +5,8 @@ class CDPNetworkBlockingTests(BaseCase): def test_cdp_network_blocking(self): self.open("about:blank") - if not self.is_chromium(): - message = "This test is only for Chromium browsers!" + if self._reuse_session or not self.is_chromium(): + message = "Skipping test if reusing session or not Chromium!" print(message) self.skip(message) self.execute_cdp_cmd( diff --git a/mkdocs_build/requirements.txt b/mkdocs_build/requirements.txt index b8b8dc07c39..fc5cc0f18e8 100644 --- a/mkdocs_build/requirements.txt +++ b/mkdocs_build/requirements.txt @@ -14,7 +14,7 @@ pathspec==0.12.1 Babel==2.17.0 paginate==0.5.7 mkdocs==1.6.1 -mkdocs-material==9.6.3 +mkdocs-material==9.6.4 mkdocs-exclude-search==0.6.6 mkdocs-simple-hooks==0.1.5 mkdocs-material-extensions==1.3.1 diff --git a/seleniumbase/__version__.py b/seleniumbase/__version__.py index efed7ed2220..867034d70c4 100755 --- a/seleniumbase/__version__.py +++ b/seleniumbase/__version__.py @@ -1,2 +1,2 @@ # seleniumbase package -__version__ = "4.34.13" +__version__ = "4.34.14" diff --git a/seleniumbase/undetected/__init__.py b/seleniumbase/undetected/__init__.py index 83cff37b382..4a6827ea9ef 100644 --- a/seleniumbase/undetected/__init__.py +++ b/seleniumbase/undetected/__init__.py @@ -454,17 +454,20 @@ def reconnect(self, timeout=0.1): self.start_session() time.sleep(0.0075) with suppress(Exception): - for i in range(5): - if self.current_url.startswith("chrome-extension://"): + for window_handle in self.window_handles: + self.switch_to.window(window_handle) + if self.current_url.startswith( + "chrome-extension://" + ): self.close() if self.service.is_connectable(): self.stop_client() self.service.stop() self.service.start() self.start_session() - time.sleep(0.0075) - else: - break + time.sleep(0.003) + with suppress(Exception): + self.switch_to.window(self.window_handles[-1]) self._is_connected = True def disconnect(self): @@ -487,17 +490,20 @@ def connect(self): self.start_session() time.sleep(0.0075) with suppress(Exception): - for i in range(5): - if self.current_url.startswith("chrome-extension://"): + for window_handle in self.window_handles: + self.switch_to.window(window_handle) + if self.current_url.startswith( + "chrome-extension://" + ): self.close() if self.service.is_connectable(): self.stop_client() self.service.stop() self.service.start() self.start_session() - time.sleep(0.0075) - else: - break + time.sleep(0.003) + with suppress(Exception): + self.switch_to.window(self.window_handles[-1]) self._is_connected = True def start_session(self, capabilities=None): diff --git a/seleniumbase/undetected/webelement.py b/seleniumbase/undetected/webelement.py index ee252e56bc6..f0d2025321d 100644 --- a/seleniumbase/undetected/webelement.py +++ b/seleniumbase/undetected/webelement.py @@ -26,10 +26,11 @@ def uc_click( driver.js_click(selector, by=by, timeout=1) else: super().click() + driver = self._parent if not reconnect_time: - self._parent.reconnect(0.5) + driver.reconnect(0.5) else: - self._parent.reconnect(reconnect_time) + driver.reconnect(reconnect_time) def uc_reconnect(self, reconnect_time=None): if not reconnect_time: