4.1.0.1修复Settings.raise_when_ele_not_found为Ture时一个问题;ConsoleData增加body属性;修复consloe重复获取信息问题

This commit is contained in:
g1879 2024-09-19 00:04:24 +08:00
parent 758fcf8b73
commit a8b89b51e2
4 changed files with 22 additions and 7 deletions

View File

@ -12,4 +12,4 @@ from ._pages.chromium_page import ChromiumPage
from ._pages.session_page import SessionPage
from ._pages.web_page import WebPage
__version__ = '4.1.0.0'
__version__ = '4.1.0.1'

View File

@ -90,7 +90,7 @@ class BaseElement(BaseParser):
r = self._find_elements(locator, timeout=timeout, index=index, relative=relative, raise_err=raise_err)
if r or isinstance(r, list):
return r
if Settings.raise_when_ele_not_found or raise_err is True:
if raise_err is True or (Settings.raise_when_ele_not_found and raise_err is None):
raise ElementNotFoundError(None, method, {'locator': locator, 'index': index, 'timeout': timeout})
r.method = method
@ -356,7 +356,7 @@ class BasePage(BaseParser):
r = self._find_elements(locator, timeout=timeout, index=index, raise_err=raise_err)
if r or isinstance(r, list):
return r
if Settings.raise_when_ele_not_found or raise_err is True:
if raise_err is True or (Settings.raise_when_ele_not_found and raise_err is None):
raise ElementNotFoundError(None, method, {'locator': locator, 'index': index, 'timeout': timeout})
r.method = method

View File

@ -6,8 +6,9 @@ from time import perf_counter, sleep
class Console(object):
def __init__(self, owner):
self._owner = owner
self.listening = False
self._caught = None
self._not_enabled = True
self.listening = False
@property
def messages(self):
@ -21,12 +22,13 @@ class Console(object):
def start(self):
self._caught = Queue(maxsize=0)
self._owner._driver.set_callback("Console.messageAdded", self._console)
self._owner._run_cdp("Console.enable")
if self._not_enabled:
self._owner._run_cdp("Console.enable")
self._not_enabled = False
self.listening = True
def stop(self):
if self.listening:
self._owner._run_cdp("Console.disable")
self._owner._driver.set_callback('Console.messageAdded', None)
self.listening = False
@ -61,6 +63,7 @@ class Console(object):
while self._owner._driver.is_running and self.listening and perf_counter() < end:
if self._caught.qsize():
yield self._caught.get_nowait()
end = perf_counter() + timeout
sleep(0.05)
return False
@ -80,3 +83,11 @@ class ConsoleData(object):
def __repr__(self):
return (f'<ConsoleData source={self.source} level={self.level} text={self.text} url={self.url} '
f'line={self.line} column={self.column} >')
@property
def body(self):
from json import loads
try:
return loads(self.text)
except:
return self._raw_body

View File

@ -1,6 +1,6 @@
# -*- coding:utf-8 -*-
from queue import Queue
from typing import Optional, Iterable, List, Union
from typing import Optional, Iterable, List, Union, Any
from .._pages.chromium_base import ChromiumBase
@ -9,6 +9,7 @@ class Console(object):
listening: bool = ...
_owner: ChromiumBase = ...
_caught: Optional[Queue] = ...
_not_enabled: bool = ...
def __init__(self, owner: ChromiumBase) -> None:
"""
@ -56,3 +57,6 @@ class ConsoleData(object):
def __init__(self, data: dict) -> None: ...
def __getattr__(self, item: str) -> str: ...
@property
def body(self) -> Any: ...