mirror of
https://gitee.com/g1879/DrissionPage.git
synced 2024-12-10 04:00:23 +08:00
增加对shadow-dom支持,未完成
This commit is contained in:
parent
e66f6adc79
commit
56683468a6
@ -123,6 +123,11 @@ class DriverElement(DrissionElement):
|
||||
'''
|
||||
return self.run_script(js)
|
||||
|
||||
@property
|
||||
def shadow_root(self):
|
||||
e = self.run_script('return arguments[0].shadowRoot')
|
||||
return ShadowRootElement(e, self) if e else None
|
||||
|
||||
@property
|
||||
def parent(self):
|
||||
"""返回父级元素"""
|
||||
@ -445,6 +450,37 @@ class DriverElement(DrissionElement):
|
||||
ActionChains(self._driver).move_to_element(self.inner_ele).perform()
|
||||
|
||||
|
||||
class ShadowRootElement(DrissionElement):
|
||||
def __init__(self, inner_ele: WebElement, parent_ele: DriverElement):
|
||||
super().__init__(inner_ele)
|
||||
self.parent_ele = parent_ele
|
||||
|
||||
def ele(self, loc: Union[tuple, str], mode: str = None, show_errmsg: bool = True):
|
||||
pass
|
||||
|
||||
def eles(self, loc: Union[tuple, str], show_errmsg: bool = True):
|
||||
pass
|
||||
|
||||
def attr(self, attr: str):
|
||||
return self.html if attr == 'innerHTML' else None
|
||||
|
||||
def run_script(self, script: str, *args) -> Any:
|
||||
"""执行js代码,传入自己为第一个参数 \n
|
||||
:param script: js文本
|
||||
:param args: 传入的参数
|
||||
:return: js执行结果
|
||||
"""
|
||||
return self.inner_ele.parent.execute_script(script, self.inner_ele, *args)
|
||||
|
||||
@property
|
||||
def html(self):
|
||||
return unescape(self.attr('innerHTML')).replace('\xa0', ' ')
|
||||
|
||||
@property
|
||||
def parent(self) -> DriverElement:
|
||||
return self.parent_ele
|
||||
|
||||
|
||||
def execute_driver_find(page_or_ele: Union[WebElement, WebDriver],
|
||||
loc: tuple,
|
||||
mode: str = 'single',
|
||||
|
Loading…
x
Reference in New Issue
Block a user