ele产生的xpath处理(开头的情况

This commit is contained in:
g1879 2020-11-02 12:46:00 +08:00
parent 0077885ce4
commit fb600a6596
2 changed files with 19 additions and 18 deletions

View File

@ -244,10 +244,12 @@ class DriverElement(DrissionElement):
raise ValueError('Argument loc_or_str can only be tuple or str.')
if loc_or_str[0] == 'xpath':
# 处理语句最前面的(
bracket, loc_str = ('(', loc_or_str[1][1:]) if loc_or_str[1].startswith('(') else ('', loc_or_str[1])
# 确保查询语句最前面是.
loc_str = loc_or_str[1] if loc_or_str[1].startswith(('.', '/')) else f'.//{loc_or_str[1]}'
loc_str = loc_str if loc_str.startswith(('.', '/')) else f'.//{loc_str}'
loc_str = loc_str if loc_str.startswith('.') else f'.{loc_str}'
loc_or_str = loc_or_str[0], loc_str
loc_or_str = loc_or_str[0], f'{bracket}{loc_str}'
elif loc_or_str[0] == 'css selector':
if loc_or_str[1].lstrip().startswith('>'):
loc_or_str = loc_or_str[0], f'{self.css_path}{loc_or_str[1]}'
@ -494,9 +496,6 @@ def execute_driver_find(page_or_ele: Union[WebElement, WebDriver],
mode = mode or 'single'
if mode not in ['single', 'all']:
raise ValueError("Argument mode can only be 'single' or 'all'.")
if loc[0] == 'xpath':
pass
else:
try:
wait = WebDriverWait(page_or_ele, timeout=timeout)
if mode == 'single':

View File

@ -155,8 +155,10 @@ class SessionElement(DrissionElement):
loc_str = None
if loc_or_str[0] == 'xpath':
loc_str = loc_or_str[1] if loc_or_str[1].startswith(('.', '/')) else f'.//{loc_or_str[1]}'
bracket, loc_str = ('(', loc_or_str[1][1:]) if loc_or_str[1].startswith('(') else ('', loc_or_str[1])
loc_str = loc_str if loc_str.startswith(('.', '/')) else f'.//{loc_str}'
loc_str = loc_str if loc_str.startswith('.') else f'.{loc_str}'
loc_str = f'{bracket}{loc_str}'
elif loc_or_str[0] == 'css selector':
# Element的html是包含自己的要如下处理使其只检索下级的
loc_str = loc_or_str[1] if loc_or_str[1][0] in '>, ' else f' {loc_or_str[1]}'