mirror of
https://gitee.com/g1879/DrissionPage.git
synced 2024-12-10 04:00:23 +08:00
shadowRootElement的ele()和eles()增加.和#查找方式
This commit is contained in:
parent
c0dd25ba92
commit
8f4b925716
@ -74,13 +74,17 @@ class ShadowRootElement(DrissionElement):
|
|||||||
loc_or_str: Union[Tuple[str, str], str],
|
loc_or_str: Union[Tuple[str, str], str],
|
||||||
mode: str = 'single',
|
mode: str = 'single',
|
||||||
timeout: float = None):
|
timeout: float = None):
|
||||||
"""返回当前元素下级符合条件的子元素,默认返回第一个 \n
|
"""返回当前元素下级符合条件的子元素,默认返回第一个 \n
|
||||||
示例: \n
|
示例: \n
|
||||||
- 用loc元组查找: \n
|
- 用loc元组查找: \n
|
||||||
ele.ele((By.CLASS_NAME, 'ele_class')) - 返回第一个class为ele_class的子元素 \n
|
ele.ele((By.CLASS_NAME, 'ele_class')) - 返回第一个class为ele_class的子元素 \n
|
||||||
- 用查询字符串查找: \n
|
- 用查询字符串查找: \n
|
||||||
查找方式:属性、tag name和属性、文本、css selector \n
|
查找方式:属性、tag name和属性、文本、css selector \n
|
||||||
其中,@表示属性,=表示精确匹配,:表示模糊匹配,无控制字符串时默认搜索该字符串 \n
|
@表示属性,.表示class,#表示id,=表示精确匹配,:表示模糊匹配,无控制字符串时默认搜索该字符串 \n
|
||||||
|
ele.ele('.ele_class') - 返回所有 class 为 ele_class 的子元素 \n
|
||||||
|
ele.ele('.:ele_class') - 返回所有 class 中含有 ele_class 的子元素 \n
|
||||||
|
ele.ele('#ele_id') - 返回所有 id 为 ele_id 的子元素 \n
|
||||||
|
ele.ele('#:ele_id') - 返回所有 id 中含有 ele_id 的子元素 \n
|
||||||
ele.ele('@class:ele_class') - 返回第一个class含有ele_class的子元素 \n
|
ele.ele('@class:ele_class') - 返回第一个class含有ele_class的子元素 \n
|
||||||
ele.ele('@name=ele_name') - 返回第一个name等于ele_name的子元素 \n
|
ele.ele('@name=ele_name') - 返回第一个name等于ele_name的子元素 \n
|
||||||
ele.ele('@placeholder') - 返回第一个带placeholder属性的子元素 \n
|
ele.ele('@placeholder') - 返回第一个带placeholder属性的子元素 \n
|
||||||
@ -122,7 +126,11 @@ class ShadowRootElement(DrissionElement):
|
|||||||
ele.eles((By.CLASS_NAME, 'ele_class')) - 返回所有class为ele_class的子元素 \n
|
ele.eles((By.CLASS_NAME, 'ele_class')) - 返回所有class为ele_class的子元素 \n
|
||||||
- 用查询字符串查找: \n
|
- 用查询字符串查找: \n
|
||||||
查找方式:属性、tag name和属性、文本、css selector \n
|
查找方式:属性、tag name和属性、文本、css selector \n
|
||||||
其中,@表示属性,=表示精确匹配,:表示模糊匹配,无控制字符串时默认搜索该字符串 \n
|
@表示属性,.表示class,#表示id,=表示精确匹配,:表示模糊匹配,无控制字符串时默认搜索该字符串 \n
|
||||||
|
ele.eles('.ele_class') - 返回所有 class 为 ele_class 的子元素 \n
|
||||||
|
ele.eles('.:ele_class') - 返回所有 class 中含有 ele_class 的子元素 \n
|
||||||
|
ele.eles('#ele_id') - 返回所有 id 为 ele_id 的子元素 \n
|
||||||
|
ele.eles('#:ele_id') - 返回所有 id 中含有 ele_id 的子元素 \n
|
||||||
ele.eles('@class:ele_class') - 返回所有class含有ele_class的子元素 \n
|
ele.eles('@class:ele_class') - 返回所有class含有ele_class的子元素 \n
|
||||||
ele.eles('@name=ele_name') - 返回所有name等于ele_name的子元素 \n
|
ele.eles('@name=ele_name') - 返回所有name等于ele_name的子元素 \n
|
||||||
ele.eles('@placeholder') - 返回所有带placeholder属性的子元素 \n
|
ele.eles('@placeholder') - 返回所有带placeholder属性的子元素 \n
|
||||||
@ -221,6 +229,19 @@ def str_to_css_loc(loc: str) -> tuple:
|
|||||||
"""
|
"""
|
||||||
loc_by = 'css selector'
|
loc_by = 'css selector'
|
||||||
|
|
||||||
|
# .和#替换为class和id查找
|
||||||
|
if loc.startswith('.'):
|
||||||
|
if loc.startswith(('.=', '.:',)):
|
||||||
|
loc = loc.replace('.', '@class', 1)
|
||||||
|
else:
|
||||||
|
loc = loc.replace('.', '@class=', 1)
|
||||||
|
|
||||||
|
if loc.startswith('#'):
|
||||||
|
if loc.startswith(('#=', '#:',)):
|
||||||
|
loc = loc.replace('#', '@id', 1)
|
||||||
|
else:
|
||||||
|
loc = loc.replace('#', '@id=', 1)
|
||||||
|
|
||||||
# 根据属性查找
|
# 根据属性查找
|
||||||
if loc.startswith('@'):
|
if loc.startswith('@'):
|
||||||
r = re_SPLIT(r'([:=])', loc[1:], maxsplit=1)
|
r = re_SPLIT(r'([:=])', loc[1:], maxsplit=1)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user