mirror of
https://gitee.com/g1879/DrissionPage.git
synced 2024-12-10 04:00:23 +08:00
未完成
This commit is contained in:
parent
5ab29a040d
commit
1fa392802d
@ -137,8 +137,6 @@ def str_to_loc(loc: str) -> tuple:
|
|||||||
# 根据文本查找
|
# 根据文本查找
|
||||||
elif loc.startswith(('text:', 'text=')):
|
elif loc.startswith(('text:', 'text=')):
|
||||||
if len(loc) > 5:
|
if len(loc) > 5:
|
||||||
# mode = 'exact' if loc[4] == '=' else 'fuzzy'
|
|
||||||
# loc_str = _make_xpath_str('*', 'text()', loc[5:], mode)
|
|
||||||
loc_str = _make_xpath_str('*', f'@text(){loc[4:]}')
|
loc_str = _make_xpath_str('*', f'@text(){loc[4:]}')
|
||||||
else:
|
else:
|
||||||
loc_str = '//*[not(text())]'
|
loc_str = '//*[not(text())]'
|
||||||
@ -153,6 +151,7 @@ def str_to_loc(loc: str) -> tuple:
|
|||||||
elif loc.startswith(('css:', 'css=')):
|
elif loc.startswith(('css:', 'css=')):
|
||||||
loc_by = 'css selector'
|
loc_by = 'css selector'
|
||||||
loc_str = loc[4:]
|
loc_str = loc[4:]
|
||||||
|
|
||||||
elif loc.startswith(('c:', 'c=')):
|
elif loc.startswith(('c:', 'c=')):
|
||||||
loc_by = 'css selector'
|
loc_by = 'css selector'
|
||||||
loc_str = loc[2:]
|
loc_str = loc[2:]
|
||||||
@ -160,7 +159,6 @@ def str_to_loc(loc: str) -> tuple:
|
|||||||
# 根据文本模糊查找
|
# 根据文本模糊查找
|
||||||
else:
|
else:
|
||||||
if loc:
|
if loc:
|
||||||
# loc_str = _make_xpath_str('*', 'text()', loc, 'fuzzy')
|
|
||||||
loc_str = _make_xpath_str('*', f'@text():{loc}')
|
loc_str = _make_xpath_str('*', f'@text():{loc}')
|
||||||
else:
|
else:
|
||||||
loc_str = '//*[not(text())]'
|
loc_str = '//*[not(text())]'
|
||||||
@ -168,7 +166,7 @@ def str_to_loc(loc: str) -> tuple:
|
|||||||
return loc_by, loc_str
|
return loc_by, loc_str
|
||||||
|
|
||||||
|
|
||||||
def _make_xpath_str(tag: str, text: str):
|
def _make_xpath_str(tag: str, text: str) -> str:
|
||||||
tag_name = '' if tag == '*' else f'name()="{tag}" and '
|
tag_name = '' if tag == '*' else f'name()="{tag}" and '
|
||||||
r = findall(r'@([^@]*)', text)
|
r = findall(r'@([^@]*)', text)
|
||||||
res_list = []
|
res_list = []
|
||||||
@ -188,6 +186,30 @@ def _make_xpath_str(tag: str, text: str):
|
|||||||
return f"//*[{tag_name}{s}]"
|
return f"//*[{tag_name}{s}]"
|
||||||
|
|
||||||
|
|
||||||
|
# def _make_xpath_str(tag: str, arg: str, val: str, mode: str = 'fuzzy') -> str:
|
||||||
|
# """生成xpath语句 \n
|
||||||
|
# :param tag: 标签名
|
||||||
|
# :param arg: 属性名
|
||||||
|
# :param val: 属性值
|
||||||
|
# :param mode: 'exact' 或 'fuzzy',对应精确或模糊查找
|
||||||
|
# :return: xpath字符串
|
||||||
|
# """
|
||||||
|
# tag_name = '' if tag == '*' else f'name()="{tag}" and '
|
||||||
|
#
|
||||||
|
# if mode == 'exact':
|
||||||
|
# return f'//*[{tag_name}{arg}={_make_search_str(val)}]'
|
||||||
|
#
|
||||||
|
# elif mode == 'fuzzy':
|
||||||
|
# if arg == 'text()':
|
||||||
|
# tag_name = '' if tag == '*' else f'{tag}/'
|
||||||
|
# return f'//{tag_name}text()[contains(., {_make_search_str(val)})]/..'
|
||||||
|
# else:
|
||||||
|
# return f"//*[{tag_name}contains({arg},{_make_search_str(val)})]"
|
||||||
|
#
|
||||||
|
# else:
|
||||||
|
# raise ValueError("mode参数只能是'exact'或'fuzzy'。")
|
||||||
|
|
||||||
|
|
||||||
def translate_loc(loc: tuple) -> tuple:
|
def translate_loc(loc: tuple) -> tuple:
|
||||||
"""把By类型的loc元组转换为css selector或xpath类型的 \n
|
"""把By类型的loc元组转换为css selector或xpath类型的 \n
|
||||||
:param loc: By类型的loc元组
|
:param loc: By类型的loc元组
|
||||||
@ -229,30 +251,6 @@ def translate_loc(loc: tuple) -> tuple:
|
|||||||
return loc_by, loc_str
|
return loc_by, loc_str
|
||||||
|
|
||||||
|
|
||||||
# def _make_xpath_str(tag: str, arg: str, val: str, mode: str = 'fuzzy') -> str:
|
|
||||||
# """生成xpath语句 \n
|
|
||||||
# :param tag: 标签名
|
|
||||||
# :param arg: 属性名
|
|
||||||
# :param val: 属性值
|
|
||||||
# :param mode: 'exact' 或 'fuzzy',对应精确或模糊查找
|
|
||||||
# :return: xpath字符串
|
|
||||||
# """
|
|
||||||
# tag_name = '' if tag == '*' else f'name()="{tag}" and '
|
|
||||||
#
|
|
||||||
# if mode == 'exact':
|
|
||||||
# return f'//*[{tag_name}{arg}={_make_search_str(val)}]'
|
|
||||||
#
|
|
||||||
# elif mode == 'fuzzy':
|
|
||||||
# if arg == 'text()':
|
|
||||||
# tag_name = '' if tag == '*' else f'{tag}/'
|
|
||||||
# return f'//{tag_name}text()[contains(., {_make_search_str(val)})]/..'
|
|
||||||
# else:
|
|
||||||
# return f"//*[{tag_name}contains({arg},{_make_search_str(val)})]"
|
|
||||||
#
|
|
||||||
# else:
|
|
||||||
# raise ValueError("mode参数只能是'exact'或'fuzzy'。")
|
|
||||||
|
|
||||||
|
|
||||||
def _make_search_str(search_str: str) -> str:
|
def _make_search_str(search_str: str) -> str:
|
||||||
"""将"转义,不知何故不能直接用 \ 来转义 \n
|
"""将"转义,不知何故不能直接用 \ 来转义 \n
|
||||||
:param search_str: 查询字符串
|
:param search_str: 查询字符串
|
||||||
|
Loading…
x
Reference in New Issue
Block a user