From 13dadf74a74da825be9a217c2beeb9ee4e712856 Mon Sep 17 00:00:00 2001 From: g1879 Date: Thu, 6 Jan 2022 16:52:40 +0800 Subject: [PATCH] =?UTF-8?q?=E8=B0=83=E6=95=B4close=5Fdriver()=E5=92=8Ckill?= =?UTF-8?q?=5Fbrowser()=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- DrissionPage/drission.py | 21 ++++++++++++++++----- DrissionPage/mix_page.py | 4 ++-- 2 files changed, 18 insertions(+), 7 deletions(-) diff --git a/DrissionPage/drission.py b/DrissionPage/drission.py index 683b83c..b51e37b 100644 --- a/DrissionPage/drission.py +++ b/DrissionPage/drission.py @@ -185,11 +185,14 @@ class Drission(object): pid = self.get_browser_progress_id() from os import popen - if pid and popen(f'tasklist | findstr {pid}').read().lower().startswith('chrome.exe'): - print('kill') + from platform import system + + if pid and system().lower() == 'windows' \ + and popen(f'tasklist | findstr {pid}').read().lower().startswith('chrome.exe'): popen(f'taskkill /pid {pid} /F') + else: - self.close_driver() + self._driver.quit() def get_browser_progress_id(self) -> Union[str, None]: """获取浏览器进程id""" @@ -223,6 +226,10 @@ class Drission(object): self._show_or_hide_browser(False) def _show_or_hide_browser(self, hide: bool = True) -> None: + from platform import system + if system().lower() != 'windows': + raise OSError('该方法只能在Windows系统使用。') + try: from win32gui import ShowWindow from win32con import SW_HIDE, SW_SHOW @@ -360,10 +367,14 @@ class Drission(object): selenium_user_agent = driver.execute_script("return navigator.userAgent;") session.headers.update({"User-Agent": selenium_user_agent}) - def close_driver(self) -> None: + def close_driver(self, kill: bool = False) -> None: """关闭driver和浏览器""" if self._driver: - self._driver.quit() + if kill: + self.kill_browser() + else: + self._driver.quit() + self._driver = None def close_session(self) -> None: diff --git a/DrissionPage/mix_page.py b/DrissionPage/mix_page.py index ac371e5..3463399 100644 --- a/DrissionPage/mix_page.py +++ b/DrissionPage/mix_page.py @@ -303,7 +303,7 @@ class MixPage(SessionPage, DriverPage, BasePage): """ self._drission.cookies_to_session(copy_user_agent) - def cookies_to_driver(self, url=None) -> None: + def cookies_to_driver(self, url: str = None) -> None: """从session复制cookies到driver \n chrome需要指定域才能接收cookies \n :param url: 目标域 @@ -330,7 +330,7 @@ class MixPage(SessionPage, DriverPage, BasePage): def close_driver(self) -> None: """关闭driver及浏览器""" self._driver = None - self.drission.close_driver() + self.drission.close_driver(True) def close_session(self) -> None: """关闭session"""