From bde7fecab3f2d0290addda84b43cc4f658217420 Mon Sep 17 00:00:00 2001 From: g1879 Date: Thu, 16 Nov 2023 23:18:34 +0800 Subject: [PATCH] =?UTF-8?q?maximized()=E5=92=8Cminimized()=E6=94=B9?= =?UTF-8?q?=E6=88=90max()=E5=92=8Cmini()=EF=BC=9B=E5=88=A0=E9=99=A4ids?= =?UTF-8?q?=E5=B1=9E=E6=80=A7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- DrissionPage/_elements/chromium_element.py | 26 +++------ DrissionPage/_elements/chromium_element.pyi | 8 --- DrissionPage/_elements/session_element.py | 4 +- DrissionPage/_pages/chromium_base.py | 8 +-- DrissionPage/_pages/chromium_frame.py | 28 ++++++---- DrissionPage/_pages/chromium_frame.pyi | 62 ++++++++------------- DrissionPage/_units/clicker.py | 2 +- DrissionPage/_units/ids.py | 57 ------------------- DrissionPage/_units/ids.pyi | 45 --------------- DrissionPage/_units/rect.py | 2 +- DrissionPage/_units/setter.py | 16 +++++- DrissionPage/_units/setter.pyi | 4 +- DrissionPage/_units/states.py | 6 +- 13 files changed, 72 insertions(+), 196 deletions(-) delete mode 100644 DrissionPage/_units/ids.py delete mode 100644 DrissionPage/_units/ids.pyi diff --git a/DrissionPage/_elements/chromium_element.py b/DrissionPage/_elements/chromium_element.py index d28e9e7..e70bb8d 100644 --- a/DrissionPage/_elements/chromium_element.py +++ b/DrissionPage/_elements/chromium_element.py @@ -15,7 +15,6 @@ from .._commons.locator import get_loc from .._commons.tools import get_usable_path from .._commons.web import make_absolute_link, get_ele_txt, format_html, is_js_func, offset_scroll from .._units.clicker import Clicker -from .._units.ids import ShadowRootIds, ElementIds from .._units.rect import ElementRect from .._units.scroller import ElementScroller from .._units.select_element import SelectElement @@ -66,7 +65,6 @@ class ChromiumElement(DrissionElement): else: raise ElementLossError - self._ids = ElementIds(self) doc = self.run_js('return this.ownerDocument;') self._doc_id = doc['objectId'] if doc else None @@ -121,10 +119,6 @@ class ChromiumElement(DrissionElement): return self.prop('innerText') # -----------------d模式独有属性------------------- - @property - def ids(self): - """返回获取内置id的对象""" - return self._ids @property def set(self): @@ -775,7 +769,6 @@ class ChromiumShadowRoot(BaseElement): self._obj_id = obj_id self._node_id = self._get_node_id(obj_id) self._backend_id = self._get_backend_id(self._node_id) - self._ids = ShadowRootIds(self) self._states = None def __repr__(self): @@ -805,11 +798,6 @@ class ChromiumShadowRoot(BaseElement): """返回内部的html文本""" return self.run_js('return this.innerHTML;') - @property - def ids(self): - """返回获取内置id的对象""" - return self._ids - @property def states(self): """返回用于获取元素状态的对象""" @@ -1104,7 +1092,7 @@ def find_by_xpath(ele, xpath, single, timeout, relative=True): type_txt = '9' if single else '7' node_txt = 'this.contentDocument' if ele.tag in FRAME_ELEMENT and not relative else 'this' js = make_js_for_find_ele_by_xpath(xpath, type_txt, node_txt) - r = ele.page.run_cdp_loaded('Runtime.callFunctionOn', functionDeclaration=js, objectId=ele.ids.obj_id, + r = ele.page.run_cdp_loaded('Runtime.callFunctionOn', functionDeclaration=js, objectId=ele._obj_id, returnByValue=False, awaitPromise=True, userGesture=True) if r['result']['type'] == 'string': return r['result']['value'] @@ -1112,7 +1100,7 @@ def find_by_xpath(ele, xpath, single, timeout, relative=True): if 'exceptionDetails' in r: if 'The result is not a node set' in r['result']['description']: js = make_js_for_find_ele_by_xpath(xpath, '1', node_txt) - r = ele.page.run_cdp_loaded('Runtime.callFunctionOn', functionDeclaration=js, objectId=ele.ids.obj_id, + r = ele.page.run_cdp_loaded('Runtime.callFunctionOn', functionDeclaration=js, objectId=ele._obj_id, returnByValue=False, awaitPromise=True, userGesture=True) return r['result']['value'] else: @@ -1121,7 +1109,7 @@ def find_by_xpath(ele, xpath, single, timeout, relative=True): end_time = perf_counter() + timeout while (r['result']['subtype'] == 'null' or r['result']['description'] == 'NodeList(0)') and perf_counter() < end_time: - r = ele.page.run_cdp_loaded('Runtime.callFunctionOn', functionDeclaration=js, objectId=ele.ids.obj_id, + r = ele.page.run_cdp_loaded('Runtime.callFunctionOn', functionDeclaration=js, objectId=ele._obj_id, returnByValue=False, awaitPromise=True, userGesture=True) if single: @@ -1150,13 +1138,13 @@ def find_by_css(ele, selector, single, timeout): find_all = '' if single else 'All' node_txt = 'this.contentDocument' if ele.tag in ('iframe', 'frame', 'shadow-root') else 'this' js = f'function(){{return {node_txt}.querySelector{find_all}("{selector}");}}' - r = ele.page.run_cdp_loaded('Runtime.callFunctionOn', functionDeclaration=js, objectId=ele.ids.obj_id, + r = ele.page.run_cdp_loaded('Runtime.callFunctionOn', functionDeclaration=js, objectId=ele._obj_id, returnByValue=False, awaitPromise=True, userGesture=True) end_time = perf_counter() + timeout while ('exceptionDetails' in r or r['result']['subtype'] == 'null' or r['result']['description'] == 'NodeList(0)') and perf_counter() < end_time: - r = ele.page.run_cdp_loaded('Runtime.callFunctionOn', functionDeclaration=js, objectId=ele.ids.obj_id, + r = ele.page.run_cdp_loaded('Runtime.callFunctionOn', functionDeclaration=js, objectId=ele._obj_id, returnByValue=False, awaitPromise=True, userGesture=True) if 'exceptionDetails' in r: @@ -1259,7 +1247,7 @@ def run_js(page_or_ele, script, as_expr=False, timeout=None, args=None): """ if isinstance(page_or_ele, (ChromiumElement, ChromiumShadowRoot)): page = page_or_ele.page - obj_id = page_or_ele.ids.obj_id + obj_id = page_or_ele._obj_id is_page = False else: page = page_or_ele @@ -1345,7 +1333,7 @@ def parse_js_result(page, ele, result): def convert_argument(arg): """把参数转换成js能够接收的形式""" if isinstance(arg, ChromiumElement): - return {'objectId': arg.ids.obj_id} + return {'objectId': arg._obj_id} elif isinstance(arg, (int, float, str, bool)): return {'value': arg} diff --git a/DrissionPage/_elements/chromium_element.pyi b/DrissionPage/_elements/chromium_element.pyi index 7b261fa..04bd049 100644 --- a/DrissionPage/_elements/chromium_element.pyi +++ b/DrissionPage/_elements/chromium_element.pyi @@ -14,7 +14,6 @@ from .._pages.chromium_frame import ChromiumFrame from .._pages.chromium_page import ChromiumPage from .._pages.web_page import WebPage from .._units.clicker import Clicker -from .._units.ids import ElementIds, ShadowRootIds from .._units.rect import ElementRect from .._units.scroller import ElementScroller from .._units.select_element import SelectElement @@ -32,7 +31,6 @@ class ChromiumElement(DrissionElement): self._obj_id: str = ... self._backend_id: str = ... self._doc_id: str = ... - self._ids: ElementIds = ... self._scroll: ElementScroller = ... self._clicker: Clicker = ... self._select: SelectElement = ... @@ -66,8 +64,6 @@ class ChromiumElement(DrissionElement): def raw_text(self) -> str: ... # -----------------d模式独有属性------------------- - @property - def ids(self) -> ElementIds: ... @property def set(self) -> ChromiumElementSetter: ... @@ -211,7 +207,6 @@ class ChromiumShadowRoot(BaseElement): def __init__(self, parent_ele: ChromiumElement, obj_id: str = None, backend_id: str = None): self._obj_id: str = ... - self._ids: ShadowRootIds = ... self._node_id: str = ... self._backend_id: str = ... self.page: ChromiumPage = ... @@ -223,9 +218,6 @@ class ChromiumShadowRoot(BaseElement): def __call__(self, loc_or_str: Union[Tuple[str, str], str], timeout: float = None) -> ChromiumElement: ... - @property - def ids(self) -> ShadowRootIds: ... - @property def states(self) -> ShadowRootStates: ... diff --git a/DrissionPage/_elements/session_element.py b/DrissionPage/_elements/session_element.py index 5fd09f4..a3d74f5 100644 --- a/DrissionPage/_elements/session_element.py +++ b/DrissionPage/_elements/session_element.py @@ -334,8 +334,8 @@ def make_session_ele(html_or_ele, loc=None, single=True): page = html_or_ele.page xpath = html_or_ele.xpath # ChromiumElement,兼容传入的元素在iframe内的情况 - html = html_or_ele.page.run_cdp('DOM.getOuterHTML', objectId=html_or_ele.ids.doc_id)['outerHTML'] \ - if html_or_ele.ids.doc_id else html_or_ele.page.html + html = html_or_ele.page.run_cdp('DOM.getOuterHTML', objectId=html_or_ele._doc_id)['outerHTML'] \ + if html_or_ele._doc_id else html_or_ele.page.html html_or_ele = fromstring(html) html_or_ele = html_or_ele.xpath(xpath)[0] diff --git a/DrissionPage/_pages/chromium_base.py b/DrissionPage/_pages/chromium_base.py index 2158ce0..d60e0b2 100644 --- a/DrissionPage/_pages/chromium_base.py +++ b/DrissionPage/_pages/chromium_base.py @@ -50,6 +50,9 @@ class ChromiumBase(BasePage): self._has_alert = False self._ready_state = None self._rect = None + self._wait = None + self._scroll = None + self._upload_list = None self._doc_got = False # 用于在LoadEventFired和FrameStoppedLoading间标记是否已获取doc self._download_path = str(Path('.').absolute()) @@ -81,9 +84,6 @@ class ChromiumBase(BasePage): :return: None """ self._is_reading = False - self._upload_list = None - self._wait = None - self._scroll = None if not tab_id: tabs = self.browser.driver.get(f'http://{self.address}/json').json() @@ -697,7 +697,7 @@ class ChromiumBase(BasePage): return ele = self._ele(loc_or_ele, raise_err=False) if ele: - self.run_cdp('DOM.removeNode', nodeId=ele.ids.node_id) + self.run_cdp('DOM.removeNode', nodeId=ele._node_id) def get_frame(self, loc_ind_ele, timeout=None): """获取页面中一个frame对象,可传入定位符、iframe序号、ChromiumFrame对象,序号从1开始 diff --git a/DrissionPage/_pages/chromium_frame.py b/DrissionPage/_pages/chromium_frame.py index 7be33ba..ec9cea9 100644 --- a/DrissionPage/_pages/chromium_frame.py +++ b/DrissionPage/_pages/chromium_frame.py @@ -9,7 +9,6 @@ from time import sleep, perf_counter from .._elements.chromium_element import ChromiumElement from .._pages.chromium_base import ChromiumBase -from .._units.ids import FrameIds from .._units.rect import FrameRect from .._units.scroller import FrameScroller from .._units.setter import ChromiumFrameSetter @@ -35,12 +34,11 @@ class ChromiumFrame(ChromiumBase): self.tab = page.tab if 'ChromiumFrame' in page_type else page self.address = page.address - node = page.run_cdp('DOM.describeNode', backendNodeId=ele.ids.backend_id)['node'] + node = page.run_cdp('DOM.describeNode', backendNodeId=ele._backend_id)['node'] self._tab_id = page.tab_id - self._backend_id = ele.ids.backend_id + self._backend_id = ele._backend_id self._frame_ele = ele self._states = None - self._ids = FrameIds(self) self._is_init_get_doc = True self._frame_id = node['frameId'] @@ -114,7 +112,7 @@ class ChromiumFrame(ChromiumBase): end_time = perf_counter() + 2 while perf_counter() < end_time: node = self._target_page.run_cdp('DOM.describeNode', - backendNodeId=self._frame_ele.ids.backend_id)['node'] + backendNodeId=self._frame_ele._backend_id)['node'] if 'frameId' in node: break @@ -189,7 +187,7 @@ class ChromiumFrame(ChromiumBase): while perf_counter() < end_time: try: if self._is_diff_domain is False: - node = self._target_page.run_cdp('DOM.describeNode', backendNodeId=self.ids.backend_id)['node'] + node = self._target_page.run_cdp('DOM.describeNode', backendNodeId=self._backend_id)['node'] self.doc_ele = ChromiumElement(self._target_page, backend_id=node['contentDocument']['backendNodeId']) @@ -304,12 +302,18 @@ class ChromiumFrame(ChromiumBase): # ----------挂件---------- @property - def page(self): - return self._page + def _obj_id(self): + """返回frame元素的object id""" + return self.frame_ele._obj_id @property - def ids(self): - return self._ids + def _node_id(self): + """返回cdp中的node id""" + return self.frame_ele._node_id + + @property + def page(self): + return self._page @property def frame_ele(self): @@ -330,7 +334,7 @@ class ChromiumFrame(ChromiumBase): def html(self): """返回元素outerHTML文本""" tag = self.tag - out_html = self._target_page.run_cdp('DOM.getOuterHTML', backendNodeId=self.frame_ele.ids.backend_id)[ + out_html = self._target_page.run_cdp('DOM.getOuterHTML', backendNodeId=self.frame_ele._backend_id)[ 'outerHTML'] sign = search(rf'<{tag}.*?>', out_html).group(0) return f'{sign}{self.inner_html}' @@ -391,7 +395,7 @@ class ChromiumFrame(ChromiumBase): return self.doc_ele.run_js('return this.readyState;') except ContextLossError: try: - node = self.run_cdp('DOM.describeNode', backendNodeId=self.frame_ele.ids.backend_id)['node'] + node = self.run_cdp('DOM.describeNode', backendNodeId=self.frame_ele._backend_id)['node'] doc = ChromiumElement(self._target_page, backend_id=node['contentDocument']['backendNodeId']) return doc.run_js('return this.readyState;') except: diff --git a/DrissionPage/_pages/chromium_frame.pyi b/DrissionPage/_pages/chromium_frame.pyi index 7c93fd0..465f6e7 100644 --- a/DrissionPage/_pages/chromium_frame.pyi +++ b/DrissionPage/_pages/chromium_frame.pyi @@ -12,7 +12,6 @@ from .chromium_tab import ChromiumTab from .web_page import WebPage from .._elements.chromium_element import ChromiumElement from .._units.states import FrameStates -from .._units.ids import FrameIds from .._units.rect import FrameRect from .._units.scroller import FrameScroller from .._units.setter import ChromiumFrameSetter @@ -32,12 +31,10 @@ class ChromiumFrame(ChromiumBase): self._is_diff_domain: bool = ... self.doc_ele: ChromiumElement = ... self._states: FrameStates = ... - self._ids: FrameIds = ... self._is_init_get_doc: bool = ... self._rect: FrameRect = ... - def __call__(self, - loc_or_str: Union[Tuple[str, str], str], + def __call__(self, loc_or_str: Union[Tuple[str, str], str], timeout: float = None) -> Union[ChromiumElement, str]: ... def _check_alive(self) -> None: ... @@ -61,9 +58,6 @@ class ChromiumFrame(ChromiumBase): @property def page(self) -> Union[ChromiumPage, WebPage]: ... - @property - def ids(self) -> FrameIds: ... - @property def frame_ele(self) -> ChromiumElement: ... @@ -91,6 +85,12 @@ class ChromiumFrame(ChromiumBase): @property def rect(self) -> FrameRect: ... + @property + def _obj_id(self) -> str: ... + + @property + def _node_id(self) -> str: ... + @property def active_ele(self) -> ChromiumElement: ... @@ -128,52 +128,36 @@ class ChromiumFrame(ChromiumBase): def parent(self, level_or_loc: Union[tuple, str, int] = 1, index: int = 1) -> Union[ChromiumElement, None]: ... - def prev(self, filter_loc: Union[tuple, str, int] = '', - index: int = 1, - timeout: float = 0, - ele_only: bool = True) -> Union[ChromiumElement, str]: ... + def prev(self, filter_loc: Union[tuple, str, int] = '', index: int = 1, + timeout: float = 0, ele_only: bool = True) -> Union[ChromiumElement, str]: ... - def next(self, filter_loc: Union[tuple, str, int] = '', - index: int = 1, - timeout: float = 0, - ele_only: bool = True) -> Union[ChromiumElement, str]: ... + def next(self, filter_loc: Union[tuple, str, int] = '', index: int = 1, + timeout: float = 0, ele_only: bool = True) -> Union[ChromiumElement, str]: ... - def before(self, filter_loc: Union[tuple, str, int] = '', - index: int = 1, - timeout: float = None, - ele_only: bool = True) -> Union[ChromiumElement, str]: ... + def before(self, filter_loc: Union[tuple, str, int] = '', index: int = 1, + timeout: float = None, ele_only: bool = True) -> Union[ChromiumElement, str]: ... - def after(self, filter_loc: Union[tuple, str, int] = '', - index: int = 1, - timeout: float = None, - ele_only: bool = True) -> Union[ChromiumElement, str]: ... + def after(self, filter_loc: Union[tuple, str, int] = '', index: int = 1, + timeout: float = None, ele_only: bool = True) -> Union[ChromiumElement, str]: ... - def prevs(self, filter_loc: Union[tuple, str] = '', - timeout: float = 0, + def prevs(self, filter_loc: Union[tuple, str] = '', timeout: float = 0, ele_only: bool = True) -> List[Union[ChromiumElement, str]]: ... - def nexts(self, filter_loc: Union[tuple, str] = '', - timeout: float = 0, + def nexts(self, filter_loc: Union[tuple, str] = '', timeout: float = 0, ele_only: bool = True) -> List[Union[ChromiumElement, str]]: ... - def befores(self, filter_loc: Union[tuple, str] = '', - timeout: float = None, + def befores(self, filter_loc: Union[tuple, str] = '', timeout: float = None, ele_only: bool = True) -> List[Union[ChromiumElement, str]]: ... - def afters(self, filter_loc: Union[tuple, str] = '', - timeout: float = None, + def afters(self, filter_loc: Union[tuple, str] = '', timeout: float = None, ele_only: bool = True) -> List[Union[ChromiumElement, str]]: ... - def get_screenshot(self, path: [str, Path] = None, name: str = None, - as_bytes: [bool, str] = None, + def get_screenshot(self, path: [str, Path] = None, name: str = None, as_bytes: [bool, str] = None, as_base64: [bool, str] = None) -> Union[str, bytes]: ... - def _get_screenshot(self, path: [str, Path] = None, name: str = None, - as_bytes: [bool, str] = None, as_base64: [bool, str] = None, - full_page: bool = False, - left_top: Tuple[int, int] = None, - right_bottom: Tuple[int, int] = None, - ele: ChromiumElement = None) -> Union[str, bytes]: ... + def _get_screenshot(self, path: [str, Path] = None, name: str = None, as_bytes: [bool, str] = None, + as_base64: [bool, str] = None, full_page: bool = False, left_top: Tuple[int, int] = None, + right_bottom: Tuple[int, int] = None, ele: ChromiumElement = None) -> Union[str, bytes]: ... def _find_elements(self, loc_or_ele: Union[Tuple[str, str], str, ChromiumElement, ChromiumFrame], timeout: float = None, single: bool = True, relative: bool = False, raise_err: bool = None) \ diff --git a/DrissionPage/_units/clicker.py b/DrissionPage/_units/clicker.py index aae2461..643da4c 100644 --- a/DrissionPage/_units/clicker.py +++ b/DrissionPage/_units/clicker.py @@ -78,7 +78,7 @@ class Clicker(object): try: r = self._ele.page.run_cdp('DOM.getNodeForLocation', x=x, y=y, includeUserAgentShadowDOM=True, ignorePointerEventsNone=True) - if r['backendNodeId'] != self._ele.ids.backend_id: + if r['backendNodeId'] != self._ele._backend_id: vx, vy = self._ele.rect.viewport_midpoint else: vx, vy = self._ele.rect.viewport_click_point diff --git a/DrissionPage/_units/ids.py b/DrissionPage/_units/ids.py deleted file mode 100644 index f5fb8d8..0000000 --- a/DrissionPage/_units/ids.py +++ /dev/null @@ -1,57 +0,0 @@ -# -*- coding:utf-8 -*- -""" -@Author : g1879 -@Contact : g1879@qq.com -""" - - -class ShadowRootIds(object): - def __init__(self, ele): - self._ele = ele - - @property - def node_id(self): - """返回元素cdp中的node id""" - return self._ele._node_id - - @property - def obj_id(self): - """返回元素js中的object id""" - return self._ele._obj_id - - @property - def backend_id(self): - """返回backend id""" - return self._ele._backend_id - - -class ElementIds(ShadowRootIds): - @property - def doc_id(self): - """返回所在document的object id""" - return self._ele._doc_id - - -class FrameIds(object): - def __init__(self, frame): - self._frame = frame - - @property - def tab_id(self): - """返回当前标签页id""" - return self._frame._tab_id - - @property - def backend_id(self): - """返回cdp中的node id""" - return self._frame._backend_id - - @property - def obj_id(self): - """返回frame元素的object id""" - return self._frame.frame_ele.ids.obj_id - - @property - def node_id(self): - """返回cdp中的node id""" - return self._frame.frame_ele.ids.node_id diff --git a/DrissionPage/_units/ids.pyi b/DrissionPage/_units/ids.pyi deleted file mode 100644 index 907005d..0000000 --- a/DrissionPage/_units/ids.pyi +++ /dev/null @@ -1,45 +0,0 @@ -# -*- coding:utf-8 -*- -""" -@Author : g1879 -@Contact : g1879@qq.com -""" -from typing import Union - -from .._elements.chromium_element import ChromiumElement, ChromiumShadowRoot -from .._pages.chromium_frame import ChromiumFrame - - -class ShadowRootIds(object): - def __init__(self, ele: Union[ChromiumElement, ChromiumShadowRoot]): - self._ele: Union[ChromiumElement, ChromiumShadowRoot] = ... - - @property - def node_id(self) -> str: ... - - @property - def obj_id(self) -> str: ... - - @property - def backend_id(self) -> str: ... - - -class ElementIds(ShadowRootIds): - @property - def doc_id(self) -> str: ... - - -class FrameIds(object): - def __init__(self, frame: ChromiumFrame): - self._frame: ChromiumFrame = ... - - @property - def tab_id(self) -> str: ... - - @property - def backend_id(self) -> str: ... - - @property - def obj_id(self) -> str: ... - - @property - def node_id(self) -> str: ... diff --git a/DrissionPage/_units/rect.py b/DrissionPage/_units/rect.py index 4180b14..0b9f0f0 100644 --- a/DrissionPage/_units/rect.py +++ b/DrissionPage/_units/rect.py @@ -99,7 +99,7 @@ class ElementRect(object): :param quad: 方框类型,margin border padding :return: 四个角坐标 """ - return self._ele.page.run_cdp('DOM.getBoxModel', backendNodeId=self._ele.ids.backend_id)['model'][quad] + return self._ele.page.run_cdp('DOM.getBoxModel', backendNodeId=self._ele._backend_id)['model'][quad] def _get_page_coord(self, x, y): """根据视口坐标获取绝对坐标""" diff --git a/DrissionPage/_units/setter.py b/DrissionPage/_units/setter.py index a1ee590..af58a07 100644 --- a/DrissionPage/_units/setter.py +++ b/DrissionPage/_units/setter.py @@ -413,7 +413,7 @@ class ChromiumElementSetter(object): :param value: 属性值 :return: None """ - self._ele.page.run_cdp('DOM.setAttributeValue', nodeId=self._ele.ids.node_id, name=attr, value=str(value)) + self._ele.page.run_cdp('DOM.setAttributeValue', nodeId=self._ele._node_id, name=attr, value=str(value)) def prop(self, prop, value): """设置元素property属性 @@ -508,14 +508,14 @@ class WindowSetter(object): self._page = page self._window_id = self._get_info()['windowId'] - def maximized(self): + def max(self): """窗口最大化""" s = self._get_info()['bounds']['windowState'] if s in ('fullscreen', 'minimized'): self._perform({'windowState': 'normal'}) self._perform({'windowState': 'maximized'}) - def minimized(self): + def mini(self): """窗口最小化""" s = self._get_info()['bounds']['windowState'] if s == 'fullscreen': @@ -575,6 +575,16 @@ class WindowSetter(object): """ self._page.run_cdp('Browser.setWindowBounds', windowId=self._window_id, bounds=bounds) + # ------------即将废除---------- + + def maximized(self): + """窗口最大化""" + self.max() + + def minimized(self): + """窗口最小化""" + self.mini() + class PageWindowSetter(WindowSetter): def hide(self): diff --git a/DrissionPage/_units/setter.pyi b/DrissionPage/_units/setter.pyi index cf2f73e..15db2b7 100644 --- a/DrissionPage/_units/setter.pyi +++ b/DrissionPage/_units/setter.pyi @@ -191,9 +191,9 @@ class WindowSetter(object): self._page: ChromiumBase = ... self._window_id: str = ... - def maximized(self) -> None: ... + def max(self) -> None: ... - def minimized(self) -> None: ... + def mini(self) -> None: ... def fullscreen(self) -> None: ... diff --git a/DrissionPage/_units/states.py b/DrissionPage/_units/states.py index 0bf571b..2e3214f 100644 --- a/DrissionPage/_units/states.py +++ b/DrissionPage/_units/states.py @@ -68,7 +68,7 @@ class ElementStates(object): except CDPError: return False - if r.get('backendNodeId') != self._ele.ids.backend_id: + if r.get('backendNodeId') != self._ele._backend_id: return True return False @@ -98,7 +98,7 @@ class ShadowRootStates(object): def is_alive(self): """返回元素是否仍在DOM中""" try: - self._ele.page.run_cdp('DOM.describeNode', backendNodeId=self._ele.ids.backend_id) + self._ele.page.run_cdp('DOM.describeNode', backendNodeId=self._ele._backend_id) return True except Exception: return False @@ -145,7 +145,7 @@ class FrameStates(object): """返回frame元素是否可用,且里面仍挂载有frame""" try: node = self._frame._target_page.run_cdp('DOM.describeNode', - backendNodeId=self._frame._frame_ele.ids.backend_id)['node'] + backendNodeId=self._frame._frame_ele._backend_id)['node'] except (ElementLossError, PageClosedError): return False return 'frameId' in node