diff --git a/DrissionPage/_base/browser.py b/DrissionPage/_base/browser.py index 86caffe..018b84e 100644 --- a/DrissionPage/_base/browser.py +++ b/DrissionPage/_base/browser.py @@ -190,6 +190,14 @@ class Browser(object): """ return self.run_cdp('Browser.getWindowForTarget', targetId=tab_id or self.id)['bounds'] + def reconnect(self): + """断开重连""" + self._driver.stop() + self._driver = BrowserDriver(self.id, 'browser', self.address, self) + self.run_cdp('Target.setDiscoverTargets', discover=True) + self._driver.set_callback('Target.targetDestroyed', self._onTargetDestroyed) + self._driver.set_callback('Target.targetCreated', self._onTargetCreated) + def quit(self, timeout=5, force=False): """关闭浏览器 :param timeout: 等待浏览器关闭超时时间(秒) diff --git a/DrissionPage/_base/browser.pyi b/DrissionPage/_base/browser.pyi index af3b2c7..4f44b8c 100644 --- a/DrissionPage/_base/browser.pyi +++ b/DrissionPage/_base/browser.pyi @@ -56,6 +56,8 @@ class Browser(object): def get_window_bounds(self, tab_id: str = None) -> dict: ... + def reconnect(self) -> None: ... + def connect_to_page(self) -> None: ... def _onTargetCreated(self, **kwargs) -> None: ... diff --git a/DrissionPage/_pages/chromium_base.py b/DrissionPage/_pages/chromium_base.py index 7ee9123..9354e22 100644 --- a/DrissionPage/_pages/chromium_base.py +++ b/DrissionPage/_pages/chromium_base.py @@ -865,6 +865,7 @@ class ChromiumBase(BasePage): t_id = self._target_id self.disconnect() sleep(wait) + self.browser.reconnect() self._driver = self.browser._get_driver(t_id, self) def handle_alert(self, accept=True, send=None, timeout=None, next_one=False):