mirror of
https://gitee.com/g1879/DrissionPage.git
synced 2024-12-10 04:00:23 +08:00
ele产生的xpath处理(开头的情况
This commit is contained in:
parent
0077885ce4
commit
fb600a6596
@ -244,10 +244,12 @@ class DriverElement(DrissionElement):
|
|||||||
raise ValueError('Argument loc_or_str can only be tuple or str.')
|
raise ValueError('Argument loc_or_str can only be tuple or str.')
|
||||||
|
|
||||||
if loc_or_str[0] == 'xpath':
|
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_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':
|
elif loc_or_str[0] == 'css selector':
|
||||||
if loc_or_str[1].lstrip().startswith('>'):
|
if loc_or_str[1].lstrip().startswith('>'):
|
||||||
loc_or_str = loc_or_str[0], f'{self.css_path}{loc_or_str[1]}'
|
loc_or_str = loc_or_str[0], f'{self.css_path}{loc_or_str[1]}'
|
||||||
@ -494,18 +496,15 @@ def execute_driver_find(page_or_ele: Union[WebElement, WebDriver],
|
|||||||
mode = mode or 'single'
|
mode = mode or 'single'
|
||||||
if mode not in ['single', 'all']:
|
if mode not in ['single', 'all']:
|
||||||
raise ValueError("Argument mode can only be 'single' or 'all'.")
|
raise ValueError("Argument mode can only be 'single' or 'all'.")
|
||||||
if loc[0] == 'xpath':
|
try:
|
||||||
pass
|
wait = WebDriverWait(page_or_ele, timeout=timeout)
|
||||||
else:
|
if mode == 'single':
|
||||||
try:
|
return DriverElement(wait.until(ec.presence_of_element_located(loc)))
|
||||||
wait = WebDriverWait(page_or_ele, timeout=timeout)
|
elif mode == 'all':
|
||||||
if mode == 'single':
|
eles = wait.until(ec.presence_of_all_elements_located(loc))
|
||||||
return DriverElement(wait.until(ec.presence_of_element_located(loc)))
|
return [DriverElement(ele) for ele in eles]
|
||||||
elif mode == 'all':
|
except:
|
||||||
eles = wait.until(ec.presence_of_all_elements_located(loc))
|
if show_errmsg:
|
||||||
return [DriverElement(ele) for ele in eles]
|
print('Element(s) not found.', loc)
|
||||||
except:
|
raise
|
||||||
if show_errmsg:
|
return [] if mode == 'all' else None
|
||||||
print('Element(s) not found.', loc)
|
|
||||||
raise
|
|
||||||
return [] if mode == 'all' else None
|
|
||||||
|
@ -155,8 +155,10 @@ class SessionElement(DrissionElement):
|
|||||||
|
|
||||||
loc_str = None
|
loc_str = None
|
||||||
if loc_or_str[0] == 'xpath':
|
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 = loc_str if loc_str.startswith('.') else f'.{loc_str}'
|
||||||
|
loc_str = f'{bracket}{loc_str}'
|
||||||
elif loc_or_str[0] == 'css selector':
|
elif loc_or_str[0] == 'css selector':
|
||||||
# Element的html是包含自己的,要如下处理,使其只检索下级的
|
# Element的html是包含自己的,要如下处理,使其只检索下级的
|
||||||
loc_str = loc_or_str[1] if loc_or_str[1][0] in '>, ' else f' {loc_or_str[1]}'
|
loc_str = loc_or_str[1] if loc_or_str[1][0] in '>, ' else f' {loc_or_str[1]}'
|
||||||
|
Loading…
x
Reference in New Issue
Block a user