DrissinElement增加xpath属性,未完成

This commit is contained in:
g1879 2020-08-10 23:43:28 +08:00
parent b065e7994f
commit e0d4b37655
2 changed files with 22 additions and 5 deletions

View File

@ -52,12 +52,29 @@ class DrissionElement(object):
def prev(self):
return
@property
def xpath(self):
def get_xpath(ele: DrissionElement, xpath_str=''):
ele_id = ele.attr('id')
if ele_id:
return None, f'//*[@id="{ele_id}"]{xpath_str}'
else:
brothers = len(ele.eles(f'xpath:./preceding-sibling::{ele.tag}', timeout=0.001)) # FIXME: 修改这里
xpath_str = f'/{ele.tag}[{brothers + 1}]{xpath_str}' if brothers > 0 else f'/{ele.tag}{xpath_str}'
ele = ele.parent
print(xpath_str)
while ele:
ele, xpath_str = get_xpath(ele, xpath_str)
return ele, xpath_str
return get_xpath(self)[1]
@abstractmethod
def ele(self, loc: tuple, mode: str = None, show_errmsg: bool = True):
def ele(self, loc: Union[tuple, str], mode: str = None, show_errmsg: bool = True):
pass
@abstractmethod
def eles(self, loc: tuple, show_errmsg: bool = True):
def eles(self, loc: Union[tuple, str], show_errmsg: bool = True):
pass
@abstractmethod

View File

@ -92,7 +92,7 @@ class DriverElement(DrissionElement):
:return: DriverElement对象
"""
loc = 'xpath', f'.{"/.." * num}'
return self.ele(loc, timeout=1, show_errmsg=False)
return self.ele(loc, timeout=0.01, show_errmsg=False)
def nexts(self, num: int = 1):
"""返回后面第num个兄弟元素 \n
@ -100,7 +100,7 @@ class DriverElement(DrissionElement):
:return: DriverElement对象
"""
loc = 'xpath', f'./following-sibling::*[{num}]'
return self.ele(loc, timeout=1, show_errmsg=False)
return self.ele(loc, timeout=0.1, show_errmsg=False)
def prevs(self, num: int = 1):
"""返回前面第num个兄弟元素 \n
@ -108,7 +108,7 @@ class DriverElement(DrissionElement):
:return: DriverElement对象
"""
loc = 'xpath', f'./preceding-sibling::*[{num}]'
return self.ele(loc, timeout=1, show_errmsg=False)
return self.ele(loc, timeout=0.01, show_errmsg=False)
def attr(self, attr: str) -> str:
"""获取属性值 \n