mirror of
https://gitee.com/g1879/DrissionPage.git
synced 2024-12-10 04:00:23 +08:00
浏览器关闭时删除记录的id
This commit is contained in:
parent
ed8c53d738
commit
3dfbfb957f
@ -35,7 +35,7 @@ class Browser(object):
|
|||||||
|
|
||||||
self.page = page
|
self.page = page
|
||||||
self.address = address
|
self.address = address
|
||||||
self._driver = BrowserDriver(browser_id, 'browser', address)
|
self._driver = BrowserDriver(browser_id, 'browser', address, self)
|
||||||
self.id = browser_id
|
self.id = browser_id
|
||||||
self._frames = {}
|
self._frames = {}
|
||||||
self._drivers = {}
|
self._drivers = {}
|
||||||
@ -63,7 +63,8 @@ class Browser(object):
|
|||||||
def _onTargetCreated(self, **kwargs):
|
def _onTargetCreated(self, **kwargs):
|
||||||
"""标签页创建时执行"""
|
"""标签页创建时执行"""
|
||||||
if kwargs['targetInfo']['type'] == 'page' and not kwargs['targetInfo']['url'].startswith('devtools://'):
|
if kwargs['targetInfo']['type'] == 'page' and not kwargs['targetInfo']['url'].startswith('devtools://'):
|
||||||
self._drivers[kwargs['targetInfo']['targetId']] = ChromiumDriver(kwargs['targetInfo']['targetId'], 'page', self.address)
|
self._drivers[kwargs['targetInfo']['targetId']] = ChromiumDriver(kwargs['targetInfo']['targetId'], 'page',
|
||||||
|
self.address)
|
||||||
|
|
||||||
def _onTargetDestroyed(self, **kwargs):
|
def _onTargetDestroyed(self, **kwargs):
|
||||||
"""标签页关闭时执行"""
|
"""标签页关闭时执行"""
|
||||||
@ -166,4 +167,5 @@ class Browser(object):
|
|||||||
break
|
break
|
||||||
sleep(.2)
|
sleep(.2)
|
||||||
|
|
||||||
|
def _on_quit(self):
|
||||||
Browser.BROWSERS.pop(self.id, None)
|
Browser.BROWSERS.pop(self.id, None)
|
||||||
|
@ -58,3 +58,5 @@ class Browser(object):
|
|||||||
def _onTargetDestroyed(self, **kwargs) -> None: ...
|
def _onTargetDestroyed(self, **kwargs) -> None: ...
|
||||||
|
|
||||||
def quit(self) -> None: ...
|
def quit(self) -> None: ...
|
||||||
|
|
||||||
|
def _on_quit(self) -> None: ...
|
||||||
|
@ -211,17 +211,18 @@ class ChromiumDriver(object):
|
|||||||
class BrowserDriver(ChromiumDriver):
|
class BrowserDriver(ChromiumDriver):
|
||||||
BROWSERS = {}
|
BROWSERS = {}
|
||||||
|
|
||||||
def __new__(cls, tab_id, tab_type, address):
|
def __new__(cls, tab_id, tab_type, address, browser):
|
||||||
if tab_id in cls.BROWSERS:
|
if tab_id in cls.BROWSERS:
|
||||||
return cls.BROWSERS[tab_id]
|
return cls.BROWSERS[tab_id]
|
||||||
return object.__new__(cls)
|
return object.__new__(cls)
|
||||||
|
|
||||||
def __init__(self, tab_id, tab_type, address):
|
def __init__(self, tab_id, tab_type, address, browser):
|
||||||
if hasattr(self, '_created'):
|
if hasattr(self, '_created'):
|
||||||
return
|
return
|
||||||
self._created = True
|
self._created = True
|
||||||
BrowserDriver.BROWSERS[tab_id] = self
|
BrowserDriver.BROWSERS[tab_id] = self
|
||||||
super().__init__(tab_id, tab_type, address)
|
super().__init__(tab_id, tab_type, address)
|
||||||
|
self.browser = browser
|
||||||
|
|
||||||
def __repr__(self):
|
def __repr__(self):
|
||||||
return f"<BrowserDriver {self.id}>"
|
return f"<BrowserDriver {self.id}>"
|
||||||
@ -230,3 +231,7 @@ class BrowserDriver(ChromiumDriver):
|
|||||||
r = get(url, headers={'Connection': 'close'})
|
r = get(url, headers={'Connection': 'close'})
|
||||||
r.close()
|
r.close()
|
||||||
return r
|
return r
|
||||||
|
|
||||||
|
def stop(self):
|
||||||
|
super().stop()
|
||||||
|
self.browser._on_quit()
|
||||||
|
@ -10,6 +10,8 @@ from typing import Union, Callable, Dict, Optional
|
|||||||
from requests import Response
|
from requests import Response
|
||||||
from websocket import WebSocket
|
from websocket import WebSocket
|
||||||
|
|
||||||
|
from .browser import Browser
|
||||||
|
|
||||||
|
|
||||||
class GenericAttr(object):
|
class GenericAttr(object):
|
||||||
def __init__(self, name: str, tab: ChromiumDriver): ...
|
def __init__(self, name: str, tab: ChromiumDriver): ...
|
||||||
@ -58,5 +60,10 @@ class ChromiumDriver(object):
|
|||||||
|
|
||||||
class BrowserDriver(ChromiumDriver):
|
class BrowserDriver(ChromiumDriver):
|
||||||
BROWSERS: Dict[str, ChromiumDriver] = ...
|
BROWSERS: Dict[str, ChromiumDriver] = ...
|
||||||
|
browser: Browser = ...
|
||||||
|
|
||||||
|
def __new__(cls, tab_id: str, tab_type: str, address: str, browser: Browser): ...
|
||||||
|
|
||||||
|
def __init__(self, tab_id: str, tab_type: str, address: str, browser: Browser): ...
|
||||||
|
|
||||||
def get(self, url) -> Response: ...
|
def get(self, url) -> Response: ...
|
||||||
|
Loading…
x
Reference in New Issue
Block a user