diff --git a/examples/cdp_mode/raw_cdp_gitlab.py b/examples/cdp_mode/raw_cdp_gitlab.py index b405954414e..9ff36aaa194 100644 --- a/examples/cdp_mode/raw_cdp_gitlab.py +++ b/examples/cdp_mode/raw_cdp_gitlab.py @@ -1,8 +1,8 @@ from seleniumbase import sb_cdp url = "https://gitlab.com/users/sign_in" -sb = sb_cdp.Chrome(url) -sb.sleep(2.5) +sb = sb_cdp.Chrome(url, incognito=True) +sb.sleep(2.2) sb.gui_click_captcha() sb.highlight('h1:contains("GitLab.com")') sb.highlight('button:contains("Sign in")') diff --git a/examples/cdp_mode/raw_cf_clearance.py b/examples/cdp_mode/raw_cf_clearance.py index f099f5cf464..b6318da268b 100644 --- a/examples/cdp_mode/raw_cf_clearance.py +++ b/examples/cdp_mode/raw_cf_clearance.py @@ -1,16 +1,20 @@ from seleniumbase import sb_cdp + +def get_cf_clearance_cookie(sb): + all_cookies = sb.get_all_cookies() + for cookie in all_cookies: + if cookie.name == "cf_clearance": + return cookie + return None + + url = "https://gitlab.com/users/sign_in" -sb = sb_cdp.Chrome(url) -sb.sleep(2.2) -sb.gui_click_captcha() -sb.sleep(2) -cf_cookie = None -all_cookies = sb.get_all_cookies() -for cookie in all_cookies: - if cookie.name == 'cf_clearance': - cf_cookie = cookie - break +sb = sb_cdp.Chrome(url, incognito=True) +sb.sleep(2.2) # Wait for CAPTCHA to load +sb.gui_click_captcha() # (Only if found) +sb.sleep(2.2) # Wait for CAPTCHA success +cf_cookie = get_cf_clearance_cookie(sb) if cf_cookie: print("cf_clearance cookie: %s" % cf_cookie.value) else: diff --git a/seleniumbase/__version__.py b/seleniumbase/__version__.py index 18d3517699c..432f6578e95 100755 --- a/seleniumbase/__version__.py +++ b/seleniumbase/__version__.py @@ -1,2 +1,2 @@ # seleniumbase package -__version__ = "4.41.7" +__version__ = "4.41.8" diff --git a/seleniumbase/core/browser_launcher.py b/seleniumbase/core/browser_launcher.py index 2cffa217205..9bb3435e561 100644 --- a/seleniumbase/core/browser_launcher.py +++ b/seleniumbase/core/browser_launcher.py @@ -1227,6 +1227,7 @@ def _on_a_cf_turnstile_page(driver): 'data-callback="onCaptchaSuccess"' in source or "/challenge-platform/scripts/" in source or 'id="challenge-widget-' in source + or "challenges.cloudf" in source or "cf-turnstile-" in source ): return True diff --git a/seleniumbase/core/sb_cdp.py b/seleniumbase/core/sb_cdp.py index 4901f21f0b7..637dbe7d5af 100644 --- a/seleniumbase/core/sb_cdp.py +++ b/seleniumbase/core/sb_cdp.py @@ -1661,11 +1661,16 @@ def gui_click_element(self, selector, timeframe=0.25): self.loop.run_until_complete(self.page.wait()) def _on_a_cf_turnstile_page(self): + time.sleep(0.042) source = self.get_page_source() + if not source or len(source) < 400: + time.sleep(0.22) + source = self.get_page_source() if ( 'data-callback="onCaptchaSuccess"' in source or "/challenge-platform/scripts/" in source or 'id="challenge-widget-' in source + or "challenges.cloudf" in source or "cf-turnstile-" in source ): return True @@ -1795,6 +1800,7 @@ def gui_click_captcha(self): self.loop.run_until_complete(self.page.evaluate(script)) self.loop.run_until_complete(self.page.wait()) with suppress(Exception): + time.sleep(0.08) element_rect = self.get_gui_element_rect(selector, timeout=1) e_x = element_rect["x"] e_y = element_rect["y"] @@ -1804,6 +1810,7 @@ def gui_click_captcha(self): else: y = e_y + 22 sb_config._saved_cf_x_y = (x, y) + time.sleep(0.08) self.gui_click_x_y(x, y) def __gui_drag_drop(self, x1, y1, x2, y2, timeframe=0.25, uc_lock=False):