From bb07cd4772e396573f619b9a0d81bf27dce487f6 Mon Sep 17 00:00:00 2001 From: g1879 Date: Tue, 21 Mar 2023 15:09:09 +0800 Subject: [PATCH] =?UTF-8?q?=E5=85=83=E7=B4=A0=E5=A2=9E=E5=8A=A0child()?= =?UTF-8?q?=E5=92=8Cchildren()=EF=BC=8C=E6=9C=AA=E5=AE=8C=E6=88=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- DrissionPage/base.py | 22 ++++++++++++++++++++++ DrissionPage/base.pyi | 9 +++++++++ 2 files changed, 31 insertions(+) diff --git a/DrissionPage/base.py b/DrissionPage/base.py index dbc5b4e..28b1df2 100644 --- a/DrissionPage/base.py +++ b/DrissionPage/base.py @@ -140,6 +140,28 @@ class DrissionElement(BaseElement): return self._ele(loc, timeout=0, relative=True, raise_err=False) + def child(self, index=1, filter_loc='', timeout=0): + loc = get_loc(filter_loc, True) + if loc[0] == 'css selector': + raise ValueError('此css selector语法不受支持,请换成xpath。') + loc = loc[1].lstrip('./') + + loc = f'xpath:./{loc}' + print(loc) + + def children(self, filter_loc='', timeout=0): + """返回前面全部兄弟元素或节点组成的列表,可用查询语法筛选 + :param filter_loc: 用于筛选元素的查询语法 + :param timeout: 查找元素的超时时间 + :return: 兄弟元素或节点文本组成的列表 + """ + loc = get_loc(filter_loc, True) + if loc[0] == 'css selector': + raise ValueError('此css selector语法不受支持,请换成xpath。') + loc = loc[1].lstrip('./') + + loc = f'xpath:./{loc}' + def prev(self, index=1, filter_loc='', timeout=0): """返回前面的一个兄弟元素,可用查询语法筛选,可指定返回筛选结果的第几个 :param index: 前面第几个查询结果元素 diff --git a/DrissionPage/base.pyi b/DrissionPage/base.pyi index d1a0739..92c5ea5 100644 --- a/DrissionPage/base.pyi +++ b/DrissionPage/base.pyi @@ -80,6 +80,15 @@ class DrissionElement(BaseElement): def parent(self, level_or_loc: Union[tuple, str, int] = 1) -> Union[DrissionElement, None]: ... + def child(self, + index: int = 1, + filter_loc: Union[tuple, str] = '', + timeout: float = 0) -> Union[DrissionElement, str, NoneElement]: ... + + def children(self, + filter_loc: Union[tuple, str] = '', + timeout: float = 0) -> List[Union[DrissionElement, str]]: ... + def prev(self, index: int = 1, filter_loc: Union[tuple, str] = '',