(
self,
captcha_frame: Optional[Union[PlaywrightFrameLocator, PatchrightFrameLocator]] = None,
reset: Optional[bool] = False,
)
| 159 | return True |
| 160 | |
| 161 | def load_captcha( |
| 162 | self, |
| 163 | captcha_frame: Optional[Union[PlaywrightFrameLocator, PatchrightFrameLocator]] = None, |
| 164 | reset: Optional[bool] = False, |
| 165 | ) -> Union[str, bool]: |
| 166 | # Retrying |
| 167 | self.retried += 1 |
| 168 | if self.retried >= self.retry_times: |
| 169 | raise RecursionError(f"Exceeded maximum retry times of {self.retry_times}") |
| 170 | |
| 171 | TypedTimeoutError = PatchrightTimeoutError if isinstance(self.page, PatchrightPage) else PlaywrightTimeoutError |
| 172 | if not self.check_captcha_visible(): |
| 173 | if captcha_token := self.check_result(): |
| 174 | return captcha_token |
| 175 | elif not self.click_checkbox(): |
| 176 | raise TypedTimeoutError("Invisible reCaptcha Timed Out.") |
| 177 | |
| 178 | assert self.check_captcha_visible(), TypedTimeoutError("[ERROR] reCaptcha Challenge is not visible.") |
| 179 | |
| 180 | # Clicking Reload Button |
| 181 | if reset: |
| 182 | assert isinstance(captcha_frame, (PlaywrightFrameLocator, PatchrightFrameLocator)) |
| 183 | try: |
| 184 | reload_button = captcha_frame.locator("#recaptcha-reload-button") |
| 185 | reload_button.click() |
| 186 | except (PlaywrightTimeoutError, PatchrightTimeoutError): |
| 187 | return self.load_captcha() |
| 188 | |
| 189 | # Resetting Values |
| 190 | self.dynamic = False |
| 191 | self.captcha_token = "" |
| 192 | |
| 193 | return True |
| 194 | |
| 195 | def handle_recaptcha(self) -> Union[str, bool]: |
| 196 | if isinstance(loaded_captcha := self.load_captcha(), str): |
no test coverage detected