增加对shadow-dom支持,未完成

This commit is contained in:
g1879 2020-08-21 00:55:56 +08:00
parent e66f6adc79
commit 56683468a6

View File

@ -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',