diff --git a/DrissionPage/driver_element.py b/DrissionPage/driver_element.py index c52f9ed..23c1e27 100644 --- a/DrissionPage/driver_element.py +++ b/DrissionPage/driver_element.py @@ -362,8 +362,12 @@ class DriverElement(DrissionElement): if not by_js: timeout = timeout if timeout is not None else self.page.timeout t1 = perf_counter() - while not do_it() and perf_counter() - t1 <= timeout: - pass + click = do_it() + while not click and perf_counter() - t1 <= timeout: + click = do_it() + + if click: + return True # 若点击失败,用js方式点击 if by_js is not False: diff --git a/DrissionPage/shadow_root_element.py b/DrissionPage/shadow_root_element.py index 994d6bc..c95f44b 100644 --- a/DrissionPage/shadow_root_element.py +++ b/DrissionPage/shadow_root_element.py @@ -144,15 +144,10 @@ class ShadowRootElement(BaseElement): loc = loc[0], loc[1][5:] timeout = timeout if timeout is not None else self.page.timeout - eles = make_session_ele(self.html).eles(loc) - t1 = perf_counter() + eles = make_session_ele(self.html).eles(loc) while not eles and perf_counter() - t1 <= timeout: - try: - eles = make_session_ele(self.html).eles(loc) - - except Exception: - pass + eles = make_session_ele(self.html).eles(loc) if not eles: return None if single else eles