mirror of
https://gitee.com/g1879/DrissionPage.git
synced 2024-12-10 04:00:23 +08:00
完善Driver逻辑
This commit is contained in:
parent
8c870c1c3e
commit
bd47aee4ca
@ -6,7 +6,7 @@
|
|||||||
from json import dumps, loads, JSONDecodeError
|
from json import dumps, loads, JSONDecodeError
|
||||||
from queue import Queue, Empty
|
from queue import Queue, Empty
|
||||||
from threading import Thread, Event
|
from threading import Thread, Event
|
||||||
from time import perf_counter
|
from time import perf_counter, sleep
|
||||||
|
|
||||||
from requests import get
|
from requests import get
|
||||||
from websocket import (WebSocketTimeoutException, WebSocketConnectionClosedException, create_connection,
|
from websocket import (WebSocketTimeoutException, WebSocketConnectionClosedException, create_connection,
|
||||||
@ -104,7 +104,7 @@ class Driver(object):
|
|||||||
except WebSocketTimeoutException:
|
except WebSocketTimeoutException:
|
||||||
continue
|
continue
|
||||||
except (WebSocketException, OSError, WebSocketConnectionClosedException, JSONDecodeError):
|
except (WebSocketException, OSError, WebSocketConnectionClosedException, JSONDecodeError):
|
||||||
self.stop()
|
self._stop()
|
||||||
return
|
return
|
||||||
|
|
||||||
if self._debug:
|
if self._debug:
|
||||||
@ -174,6 +174,13 @@ class Driver(object):
|
|||||||
return True
|
return True
|
||||||
|
|
||||||
def stop(self):
|
def stop(self):
|
||||||
|
"""中断连接"""
|
||||||
|
self._stop()
|
||||||
|
while self._handle_event_th.is_alive() or self._recv_th.is_alive():
|
||||||
|
sleep(.1)
|
||||||
|
return True
|
||||||
|
|
||||||
|
def _stop(self):
|
||||||
"""中断连接"""
|
"""中断连接"""
|
||||||
if self._stopped.is_set():
|
if self._stopped.is_set():
|
||||||
return False
|
return False
|
||||||
@ -195,7 +202,6 @@ class Driver(object):
|
|||||||
self.event_handlers.clear()
|
self.event_handlers.clear()
|
||||||
self.method_results.clear()
|
self.method_results.clear()
|
||||||
self.event_queue.queue.clear()
|
self.event_queue.queue.clear()
|
||||||
return True
|
|
||||||
|
|
||||||
def set_callback(self, event, callback, immediate=False):
|
def set_callback(self, event, callback, immediate=False):
|
||||||
"""绑定cdp event和回调方法
|
"""绑定cdp event和回调方法
|
||||||
|
@ -54,6 +54,8 @@ class Driver(object):
|
|||||||
|
|
||||||
def stop(self) -> bool: ...
|
def stop(self) -> bool: ...
|
||||||
|
|
||||||
|
def _stop(self) -> None: ...
|
||||||
|
|
||||||
def set_callback(self, event: str, callback: Union[Callable, None], immediate: bool = False) -> None: ...
|
def set_callback(self, event: str, callback: Union[Callable, None], immediate: bool = False) -> None: ...
|
||||||
|
|
||||||
def __str__(self) -> str: ...
|
def __str__(self) -> str: ...
|
||||||
|
@ -15,7 +15,7 @@ from .._units.scroller import FrameScroller
|
|||||||
from .._units.setter import ChromiumFrameSetter
|
from .._units.setter import ChromiumFrameSetter
|
||||||
from .._units.states import FrameStates
|
from .._units.states import FrameStates
|
||||||
from .._units.waiter import FrameWaiter
|
from .._units.waiter import FrameWaiter
|
||||||
from ..errors import ContextLostError, ElementLostError, GetDocumentError, PageClosedError, JavaScriptError
|
from ..errors import ContextLostError, ElementLostError, PageClosedError, JavaScriptError
|
||||||
|
|
||||||
|
|
||||||
class ChromiumFrame(ChromiumBase):
|
class ChromiumFrame(ChromiumBase):
|
||||||
@ -205,13 +205,19 @@ class ChromiumFrame(ChromiumBase):
|
|||||||
|
|
||||||
def _onInspectorDetached(self, **kwargs):
|
def _onInspectorDetached(self, **kwargs):
|
||||||
"""异域转同域或退出"""
|
"""异域转同域或退出"""
|
||||||
self._reload()
|
try:
|
||||||
|
self._reload()
|
||||||
|
except PageClosedError:
|
||||||
|
pass
|
||||||
|
|
||||||
def _onFrameDetached(self, **kwargs):
|
def _onFrameDetached(self, **kwargs):
|
||||||
"""同域变异域"""
|
"""同域变异域"""
|
||||||
self.browser._frames.pop(kwargs['frameId'], None)
|
self.browser._frames.pop(kwargs['frameId'], None)
|
||||||
if kwargs['frameId'] == self._frame_id:
|
if kwargs['frameId'] == self._frame_id:
|
||||||
self._reload()
|
try:
|
||||||
|
self._reload()
|
||||||
|
except PageClosedError:
|
||||||
|
pass
|
||||||
|
|
||||||
# ----------挂件----------
|
# ----------挂件----------
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user