去掉eles获取到的元素间换行符

This commit is contained in:
g1879 2020-11-03 16:35:55 +08:00
parent 914646e0f0
commit 126fd466b2
2 changed files with 18 additions and 2 deletions

View File

@ -177,7 +177,13 @@ class DriverElement(DrissionElement):
node_txt = 'node()'
else:
raise ValueError("Argument mode can only be 'node' or 'ele'.")
return self.ele(f'xpath:./following-sibling::{node_txt}[{num}]', timeout=0.1, show_errmsg=False)
e = self.ele(f'xpath:./following-sibling::{node_txt}[{num}]', timeout=0.1, show_errmsg=False)
while e == '\n':
num += 1
e = self.ele(f'xpath:./following-sibling::{node_txt}[{num}]', timeout=0.1, show_errmsg=False)
return e
def prevs(self, num: int = 1, mode: str = 'ele'):
"""返回前面第num个兄弟节点或元素 \n
@ -191,7 +197,13 @@ class DriverElement(DrissionElement):
node_txt = 'node()'
else:
raise ValueError("Argument mode can only be 'node' or 'ele'.")
return self.ele(f'xpath:./preceding-sibling::{node_txt}[{num}]', timeout=0.01, show_errmsg=False)
e = self.ele(f'xpath:./preceding-sibling::{node_txt}[{num}]', timeout=0.1, show_errmsg=False)
while e == '\n':
num += 1
e = self.ele(f'xpath:./preceding-sibling::{node_txt}[{num}]', timeout=0.1, show_errmsg=False)
return e
def attr(self, attr: str) -> str:
"""获取属性值 \n
@ -585,4 +597,5 @@ class ElementsByXpath(object):
elif self.mode == 'all':
e = get_nodes(the_node, xpath_txt=self.xpath)
e = filter(lambda x: x != '\n', e) # 去除元素间换行符
return list(map(lambda x: DriverElement(x, self.timeout) if isinstance(x, WebElement) else x, e))

View File

@ -111,6 +111,7 @@ class SessionElement(DrissionElement):
:param num: 后面第几个兄弟元素
:return: SessionElement对象
"""
# TODO: 增加获取node
return self.ele(f'xpath:./following-sibling::*[{num}]')
def prevs(self, num: int = 1):
@ -118,6 +119,7 @@ class SessionElement(DrissionElement):
:param num: 前面第几个兄弟元素
:return: SessionElement对象
"""
# TODO: 增加获取node
return self.ele(f'xpath:./preceding-sibling::*[{num}]')
def ele(self, loc_or_str: Union[Tuple[str, str], str], mode: str = None, show_errmsg: bool = False):
@ -274,6 +276,7 @@ def execute_session_find(page_or_ele: BaseParser,
ele = ele[0] if ele else None
return SessionElement(ele) if isinstance(ele, Element) else ele
elif mode == 'all':
ele = filter(lambda x: x != '\n', ele) # 去除元素间换行符
return [SessionElement(e) if isinstance(e, Element) else e for e in ele]
except:
if show_errmsg: