增加after(),before(),afters(),before()定位方法,原来after和before改为pseudo_after和pseudo_before

This commit is contained in:
g1879 2021-12-21 23:25:37 +08:00
parent d2df243776
commit 35453ce273
2 changed files with 50 additions and 10 deletions

View File

@ -138,37 +138,77 @@ class DrissionElement(BaseElement):
return self.ele(loc, timeout=0)
def prev(self, index: int = 1, filter_loc: Union[tuple, str] = ''):
def prev(self, index: int = 1, filter_loc: Union[tuple, str] = '', timeout: float = 0):
"""返回前面的一个兄弟元素,可用查询语法筛选,可指定返回筛选结果的第几个 \n
:param index: 前面第几个查询结果元素
:param filter_loc: 用于筛选元素的查询语法
:param timeout: 查找元素的超时时间
:return: 兄弟元素
"""
nodes = self._get_brothers(index=index, filter_loc=filter_loc, direction='preceding')
nodes = self._get_brothers(index, filter_loc, 'preceding', timeout=timeout)
return nodes[-1] if nodes else None
def next(self, index: int = 1, filter_loc: Union[tuple, str] = ''):
def next(self, index: int = 1, filter_loc: Union[tuple, str] = '', timeout: float = 0):
"""返回后面的一个兄弟元素,可用查询语法筛选,可指定返回筛选结果的第几个 \n
:param index: 后面第几个查询结果元素
:param filter_loc: 用于筛选元素的查询语法
:param timeout: 查找元素的超时时间
:return: 兄弟元素
"""
nodes = self._get_brothers(index=index, filter_loc=filter_loc, direction='following')
nodes = self._get_brothers(index, filter_loc, 'following', timeout=timeout)
return nodes[0] if nodes else None
def nexts(self, filter_loc: Union[tuple, str] = ''):
def nexts(self, filter_loc: Union[tuple, str] = '', timeout: float = 0):
"""返回后面全部兄弟元素或节点组成的列表,可用查询语法筛选 \n
:param filter_loc: 用于筛选元素的查询语法
:param timeout: 查找元素的超时时间
:return: SessionElement对象
"""
return self._get_brothers(filter_loc=filter_loc, direction='following')
return self._get_brothers(filter_loc=filter_loc, direction='following', timeout=timeout)
def prevs(self, filter_loc: Union[tuple, str] = ''):
def prevs(self, filter_loc: Union[tuple, str] = '', timeout: float = 0):
"""返回前面全部兄弟元素或节点组成的列表,可用查询语法筛选 \n
:param filter_loc: 用于筛选元素的查询语法
:param timeout: 查找元素的超时时间
:return: SessionElement对象
"""
return self._get_brothers(filter_loc=filter_loc, direction='preceding')
return self._get_brothers(filter_loc=filter_loc, direction='preceding', timeout=timeout)
def before(self, index: int = 1, filter_loc: Union[tuple, str] = '', timeout: float = None):
"""返回前面的一个兄弟元素,可用查询语法筛选,可指定返回筛选结果的第几个 \n
:param index: 前面第几个查询结果元素
:param filter_loc: 用于筛选元素的查询语法
:param timeout: 查找元素的超时时间
:return: 兄弟元素
"""
nodes = self._get_brothers(index, filter_loc, 'preceding', False, timeout=timeout)
return nodes[-1] if nodes else None
def after(self, index: int = 1, filter_loc: Union[tuple, str] = '', timeout: float = None):
"""返回后面的一个兄弟元素,可用查询语法筛选,可指定返回筛选结果的第几个 \n
:param index: 后面第几个查询结果元素
:param filter_loc: 用于筛选元素的查询语法
:param timeout: 查找元素的超时时间
:return: 兄弟元素
"""
nodes = self._get_brothers(index, filter_loc, 'following', False, timeout)
return nodes[0] if nodes else None
def befores(self, filter_loc: Union[tuple, str] = '', timeout: float = None):
"""返回后面全部兄弟元素或节点组成的列表,可用查询语法筛选 \n
:param filter_loc: 用于筛选元素的查询语法
:param timeout: 查找元素的超时时间
:return: SessionElement对象
"""
return self._get_brothers(filter_loc=filter_loc, direction='following', brother=False, timeout=timeout)
def afters(self, filter_loc: Union[tuple, str] = '', timeout: float = None):
"""返回前面全部兄弟元素或节点组成的列表,可用查询语法筛选 \n
:param filter_loc: 用于筛选元素的查询语法
:param timeout: 查找元素的超时时间
:return: SessionElement对象
"""
return self._get_brothers(filter_loc=filter_loc, direction='preceding', brother=False, timeout=timeout)
def _get_brothers(self,
index: int = None,

View File

@ -220,12 +220,12 @@ class DriverElement(DrissionElement):
return self.shadow_root
@property
def before(self) -> str:
def pseudo_before(self) -> str:
"""返回当前元素的::before伪元素内容"""
return self.style('content', 'before')
@property
def after(self) -> str:
def pseudo_after(self) -> str:
"""返回当前元素的::after伪元素内容"""
return self.style('content', 'after')