mirror of
https://gitee.com/g1879/DrissionPage.git
synced 2024-12-10 04:00:23 +08:00
ChromiumFrame支持滚动
This commit is contained in:
parent
9ddbe27b6c
commit
6ced0a0b43
@ -1300,6 +1300,7 @@ def run_js(page_or_ele, script, as_expr=False, timeout=None, args=None, not_chan
|
|||||||
|
|
||||||
exceptionDetails = res.get('exceptionDetails')
|
exceptionDetails = res.get('exceptionDetails')
|
||||||
if exceptionDetails:
|
if exceptionDetails:
|
||||||
|
print(script)
|
||||||
raise RuntimeError(f'javascript错误: {exceptionDetails}')
|
raise RuntimeError(f'javascript错误: {exceptionDetails}')
|
||||||
|
|
||||||
try:
|
try:
|
||||||
@ -1397,21 +1398,21 @@ class ChromiumScroll(object):
|
|||||||
|
|
||||||
def __init__(self, page_or_ele):
|
def __init__(self, page_or_ele):
|
||||||
"""
|
"""
|
||||||
:param page_or_ele: ChromePage或ChromiumElement
|
:param page_or_ele: 页面对象、元素对象或frame对象
|
||||||
"""
|
"""
|
||||||
self.page_or_ele = page_or_ele
|
self._driver = page_or_ele
|
||||||
if isinstance(page_or_ele, ChromiumElement):
|
if isinstance(page_or_ele, ChromiumElement):
|
||||||
self.t1 = self.t2 = 'this'
|
self.t1 = self.t2 = 'this'
|
||||||
|
elif 'ChromiumFrame' in str(type(page_or_ele)):
|
||||||
|
self._driver = page_or_ele.doc_ele
|
||||||
|
self.t1 = self.t2 = 'this.documentElement'
|
||||||
else:
|
else:
|
||||||
self.t1 = 'window'
|
self.t1 = 'window'
|
||||||
self.t2 = 'document.documentElement'
|
self.t2 = 'document.documentElement'
|
||||||
|
|
||||||
def _run_js(self, js):
|
def _run_js(self, js):
|
||||||
js = js.format(self.t1, self.t2, self.t2)
|
js = js.format(self.t1, self.t2, self.t2)
|
||||||
if self.t1 == 'this': # 在元素上滚动
|
self._driver.run_js(js)
|
||||||
self.page_or_ele.run_js(js)
|
|
||||||
else:
|
|
||||||
self.page_or_ele.run_js(js, as_expr=True)
|
|
||||||
|
|
||||||
def to_top(self):
|
def to_top(self):
|
||||||
"""滚动到顶端,水平位置不变"""
|
"""滚动到顶端,水平位置不变"""
|
||||||
|
@ -381,10 +381,10 @@ def _send_key(ele: ChromiumElement, modifier: int, key: str) -> None: ...
|
|||||||
|
|
||||||
class ChromiumScroll(object):
|
class ChromiumScroll(object):
|
||||||
|
|
||||||
def __init__(self, page_or_ele: Union[ChromiumBase, ChromiumElement]):
|
def __init__(self, page_or_ele: Union[ChromiumBase, ChromiumElement, ChromiumFrame]):
|
||||||
self.t1: str = ...
|
self.t1: str = ...
|
||||||
self.t2: str = ...
|
self.t2: str = ...
|
||||||
self.page_or_ele: Union[ChromiumPage, ChromiumElement] = ...
|
self._driver: Union[ChromiumPage, ChromiumElement, ChromiumFrame] = ...
|
||||||
|
|
||||||
def _run_js(self, js: str): ...
|
def _run_js(self, js: str): ...
|
||||||
|
|
||||||
|
@ -256,3 +256,15 @@ iframe.refresh()
|
|||||||
- `*args`:参数,按顺序在 js 文本中对应 argument[0]、argument[1]...
|
- `*args`:参数,按顺序在 js 文本中对应 argument[0]、argument[1]...
|
||||||
|
|
||||||
**返回:** 运行的结果
|
**返回:** 运行的结果
|
||||||
|
|
||||||
|
## 📍 `scroll`
|
||||||
|
|
||||||
|
`ChromiumFrame`的滚动方法与页面或元素是一致的。
|
||||||
|
|
||||||
|
**示例:**
|
||||||
|
|
||||||
|
使`<iframe>`元素向下滚动 300 像素
|
||||||
|
|
||||||
|
```python
|
||||||
|
iframe.scroll.down(300)
|
||||||
|
```
|
||||||
|
Loading…
x
Reference in New Issue
Block a user