Merge remote-tracking branch 'origin/dev' into dev

This commit is contained in:
g1879 2024-01-16 18:35:44 +08:00
commit 74b7bd80af

View File

@ -40,7 +40,7 @@ class SessionElement(DrissionElement):
"""在内部查找元素 """在内部查找元素
ele2 = ele1('@id=ele_id') ele2 = ele1('@id=ele_id')
:param loc_or_str: 元素的定位信息可以是loc元组或查询字符串 :param loc_or_str: 元素的定位信息可以是loc元组或查询字符串
:param timeout: 不起实际作用 :param timeout: 不起实际作用用于和DriverElement对应便于无差别调用
:return: SessionElement对象或属性文本 :return: SessionElement对象或属性文本
""" """
return self.ele(loc_or_str) return self.ele(loc_or_str)
@ -80,13 +80,12 @@ class SessionElement(DrissionElement):
"""返回未格式化处理的元素内文本""" """返回未格式化处理的元素内文本"""
return str(self._inner_ele.text_content()) return str(self._inner_ele.text_content())
def parent(self, level_or_loc=1, index=1): def parent(self, level_or_loc=1):
"""返回上面某一级父元素,可指定层数或用查询语法定位 """返回上面某一级父元素,可指定层数或用查询语法定位
:param level_or_loc: 第几级父元素或定位符 :param level_or_loc: 第几级父元素或定位符
:param index: 当level_or_loc传入定位符使用此参数选择第几个结果
:return: 上级元素对象 :return: 上级元素对象
""" """
return super().parent(level_or_loc, index) return super().parent(level_or_loc)
def child(self, filter_loc='', index=1, timeout=None, ele_only=True): def child(self, filter_loc='', index=1, timeout=None, ele_only=True):
"""返回当前元素的一个符合条件的直接子元素,可用查询语法筛选,可指定返回筛选结果的第几个 """返回当前元素的一个符合条件的直接子元素,可用查询语法筛选,可指定返回筛选结果的第几个
@ -96,7 +95,7 @@ class SessionElement(DrissionElement):
:param ele_only: 是否只获取元素为False时把文本注释节点也纳入 :param ele_only: 是否只获取元素为False时把文本注释节点也纳入
:return: 直接子元素或节点文本 :return: 直接子元素或节点文本
""" """
return super().child(filter_loc, index, timeout, ele_only=ele_only) return super().child(index, filter_loc, timeout, ele_only=ele_only)
def prev(self, filter_loc='', index=1, timeout=None, ele_only=True): def prev(self, filter_loc='', index=1, timeout=None, ele_only=True):
"""返回当前元素前面一个符合条件的同级元素,可用查询语法筛选,可指定返回筛选结果的第几个 """返回当前元素前面一个符合条件的同级元素,可用查询语法筛选,可指定返回筛选结果的第几个
@ -106,7 +105,7 @@ class SessionElement(DrissionElement):
:param ele_only: 是否只获取元素为False时把文本注释节点也纳入 :param ele_only: 是否只获取元素为False时把文本注释节点也纳入
:return: 同级元素 :return: 同级元素
""" """
return super().prev(filter_loc, index, timeout, ele_only=ele_only) return super().prev(index, filter_loc, timeout, ele_only=ele_only)
def next(self, filter_loc='', index=1, timeout=None, ele_only=True): def next(self, filter_loc='', index=1, timeout=None, ele_only=True):
"""返回当前元素后面一个符合条件的同级元素,可用查询语法筛选,可指定返回筛选结果的第几个 """返回当前元素后面一个符合条件的同级元素,可用查询语法筛选,可指定返回筛选结果的第几个
@ -116,7 +115,7 @@ class SessionElement(DrissionElement):
:param ele_only: 是否只获取元素为False时把文本注释节点也纳入 :param ele_only: 是否只获取元素为False时把文本注释节点也纳入
:return: 同级元素 :return: 同级元素
""" """
return super().next(filter_loc, index, timeout, ele_only=ele_only) return super().next(index, filter_loc, timeout, ele_only=ele_only)
def before(self, filter_loc='', index=1, timeout=None, ele_only=True): def before(self, filter_loc='', index=1, timeout=None, ele_only=True):
"""返回文档中当前元素前面符合条件的一个元素,可用查询语法筛选,可指定返回筛选结果的第几个 """返回文档中当前元素前面符合条件的一个元素,可用查询语法筛选,可指定返回筛选结果的第几个
@ -127,7 +126,7 @@ class SessionElement(DrissionElement):
:param ele_only: 是否只获取元素为False时把文本注释节点也纳入 :param ele_only: 是否只获取元素为False时把文本注释节点也纳入
:return: 本元素前面的某个元素或节点 :return: 本元素前面的某个元素或节点
""" """
return super().before(filter_loc, index, timeout, ele_only=ele_only) return super().before(index, filter_loc, timeout, ele_only=ele_only)
def after(self, filter_loc='', index=1, timeout=None, ele_only=True): def after(self, filter_loc='', index=1, timeout=None, ele_only=True):
"""返回文档中此当前元素后面符合条件的一个元素,可用查询语法筛选,可指定返回筛选结果的第几个 """返回文档中此当前元素后面符合条件的一个元素,可用查询语法筛选,可指定返回筛选结果的第几个
@ -138,7 +137,7 @@ class SessionElement(DrissionElement):
:param ele_only: 是否只获取元素为False时把文本注释节点也纳入 :param ele_only: 是否只获取元素为False时把文本注释节点也纳入
:return: 本元素后面的某个元素或节点 :return: 本元素后面的某个元素或节点
""" """
return super().after(filter_loc, index, timeout, ele_only=ele_only) return super().after(index, filter_loc, timeout, ele_only=ele_only)
def children(self, filter_loc='', timeout=0, ele_only=True): def children(self, filter_loc='', timeout=0, ele_only=True):
"""返回当前元素符合条件的直接子元素或节点组成的列表,可用查询语法筛选 """返回当前元素符合条件的直接子元素或节点组成的列表,可用查询语法筛选
@ -232,7 +231,7 @@ class SessionElement(DrissionElement):
def eles(self, loc_or_str, timeout=None): def eles(self, loc_or_str, timeout=None):
"""返回当前元素下级所有符合条件的子元素、属性或节点文本 """返回当前元素下级所有符合条件的子元素、属性或节点文本
:param loc_or_str: 元素的定位信息可以是loc元组或查询字符串 :param loc_or_str: 元素的定位信息可以是loc元组或查询字符串
:param timeout: 不起实际作用 :param timeout: 不起实际作用用于和DriverElement对应便于无差别调用
:return: SessionElement对象或属性文本组成的列表 :return: SessionElement对象或属性文本组成的列表
""" """
return self._ele(loc_or_str, index=None) return self._ele(loc_or_str, index=None)
@ -328,7 +327,8 @@ def make_session_ele(html_or_ele, loc=None, index=1):
loc = loc[0], loc_str loc = loc[0], loc_str
elif the_type.endswith(".ChromiumElement'>"): # ChromiumElement, DriverElement
elif the_type.endswith((".ChromiumElement'>", ".DriverElement'>")):
loc_str = loc[1] loc_str = loc[1]
if loc[0] == 'xpath' and loc[1].lstrip().startswith('/'): if loc[0] == 'xpath' and loc[1].lstrip().startswith('/'):
loc_str = f'.{loc[1]}' loc_str = f'.{loc[1]}'