mirror of
https://gitee.com/g1879/DrissionPage.git
synced 2024-12-10 04:00:23 +08:00
3.0.32修复用run_js()从s转d模式时的异常
This commit is contained in:
parent
6ced0a0b43
commit
7023c7c1c6
@ -196,19 +196,31 @@ class ActionChains:
|
||||
return self
|
||||
|
||||
def up(self, pixel):
|
||||
"""鼠标向上移动若干像素"""
|
||||
"""鼠标向上移动若干像素 \n
|
||||
:param pixel: 鼠标移动的像素值
|
||||
:return: self
|
||||
"""
|
||||
return self.move(0, -pixel)
|
||||
|
||||
def down(self, pixel):
|
||||
"""鼠标向下移动若干像素"""
|
||||
"""鼠标向下移动若干像素 \n
|
||||
:param pixel: 鼠标移动的像素值
|
||||
:return: self
|
||||
"""
|
||||
return self.move(0, pixel)
|
||||
|
||||
def left(self, pixel):
|
||||
"""鼠标向左移动若干像素"""
|
||||
"""鼠标向左移动若干像素 \n
|
||||
:param pixel: 鼠标移动的像素值
|
||||
:return: self
|
||||
"""
|
||||
return self.move(-pixel, 0)
|
||||
|
||||
def right(self, pixel):
|
||||
"""鼠标向右移动若干像素"""
|
||||
"""鼠标向右移动若干像素 \n
|
||||
:param pixel: 鼠标移动的像素值
|
||||
:return: self
|
||||
"""
|
||||
return self.move(pixel, 0)
|
||||
|
||||
def key_down(self, key):
|
||||
|
@ -71,50 +71,50 @@ class DrissionElement(BaseElement):
|
||||
|
||||
def texts(self, text_node_only: bool = False) -> list: ...
|
||||
|
||||
def parent(self, level_or_loc: Union[tuple, str, int] = 1) -> Union['DrissionElement', None]: ...
|
||||
def parent(self, level_or_loc: Union[tuple, str, int] = 1) -> Union[DrissionElement, None]: ...
|
||||
|
||||
def prev(self,
|
||||
index: int = 1,
|
||||
filter_loc: Union[tuple, str] = '',
|
||||
timeout: float = 0) -> Union['DrissionElement', str, None]: ...
|
||||
timeout: float = 0) -> Union[DrissionElement, str, None]: ...
|
||||
|
||||
def next(self,
|
||||
index: int = 1,
|
||||
filter_loc: Union[tuple, str] = '',
|
||||
timeout: float = 0) -> Union['DrissionElement', str, None]: ...
|
||||
timeout: float = 0) -> Union[DrissionElement, str, None]: ...
|
||||
|
||||
def before(self,
|
||||
index: int = 1,
|
||||
filter_loc: Union[tuple, str] = '',
|
||||
timeout: float = None) -> Union['DrissionElement', str, None]: ...
|
||||
timeout: float = None) -> Union[DrissionElement, str, None]: ...
|
||||
|
||||
def after(self,
|
||||
index: int = 1,
|
||||
filter_loc: Union[tuple, str] = '',
|
||||
timeout: float = None) -> Union['DrissionElement', str, None]: ...
|
||||
timeout: float = None) -> Union[DrissionElement, str, None]: ...
|
||||
|
||||
def prevs(self,
|
||||
filter_loc: Union[tuple, str] = '',
|
||||
timeout: float = 0) -> List[Union['DrissionElement', str]]: ...
|
||||
timeout: float = 0) -> List[Union[DrissionElement, str]]: ...
|
||||
|
||||
def nexts(self,
|
||||
filter_loc: Union[tuple, str] = '',
|
||||
timeout: float = 0) -> List[Union['DrissionElement', str]]: ...
|
||||
timeout: float = 0) -> List[Union[DrissionElement, str]]: ...
|
||||
|
||||
def befores(self,
|
||||
filter_loc: Union[tuple, str] = '',
|
||||
timeout: float = None) -> List[Union['DrissionElement', str]]: ...
|
||||
timeout: float = None) -> List[Union[DrissionElement, str]]: ...
|
||||
|
||||
def afters(self,
|
||||
filter_loc: Union[tuple, str] = '',
|
||||
timeout: float = None) -> List[Union['DrissionElement', str]]: ...
|
||||
timeout: float = None) -> List[Union[DrissionElement, str]]: ...
|
||||
|
||||
def _get_brothers(self,
|
||||
index: int = None,
|
||||
filter_loc: Union[tuple, str] = '',
|
||||
direction: str = 'following',
|
||||
brother: bool = True,
|
||||
timeout: float = 0.5) -> List[Union['DrissionElement', str]]: ...
|
||||
timeout: float = 0.5) -> List[Union[DrissionElement, str]]: ...
|
||||
|
||||
# ----------------以下属性或方法由后代实现----------------
|
||||
@property
|
||||
|
@ -295,6 +295,7 @@ class ChromiumBase(BasePage):
|
||||
:param args: 参数,按顺序在js文本中对应argument[0]、argument[1]...
|
||||
:return: 运行的结果
|
||||
"""
|
||||
self._to_d_mode()
|
||||
return run_js(self, script, as_expr, self.timeouts.script, args)
|
||||
|
||||
def run_async_js(self, script, as_expr=False, *args):
|
||||
@ -304,6 +305,7 @@ class ChromiumBase(BasePage):
|
||||
:param args: 参数,按顺序在js文本中对应argument[0]、argument[1]...
|
||||
:return: None
|
||||
"""
|
||||
self._to_d_mode()
|
||||
from threading import Thread
|
||||
Thread(target=run_js, args=(self, script, as_expr, self.timeouts.script, args)).start()
|
||||
|
||||
@ -650,6 +652,10 @@ class ChromiumBase(BasePage):
|
||||
|
||||
return True
|
||||
|
||||
def _to_d_mode(self):
|
||||
"""用于使WebPage切换到d模式"""
|
||||
return self._driver
|
||||
|
||||
|
||||
class Timeout(object):
|
||||
"""用于保存d模式timeout信息的类"""
|
||||
|
@ -187,6 +187,8 @@ class ChromiumBase(BasePage):
|
||||
show_errmsg: bool = False,
|
||||
timeout: float = None) -> Union[bool, None]: ...
|
||||
|
||||
def _to_d_mode(self): ...
|
||||
|
||||
|
||||
class Timeout(object):
|
||||
|
||||
|
@ -258,6 +258,7 @@ class DriverElement(DrissionElement):
|
||||
:param timeout: 查找元素的超时时间
|
||||
:return: 兄弟元素
|
||||
"""
|
||||
index, filter_loc = _exchange_arguments(index, filter_loc)
|
||||
return super().prev(index, filter_loc, timeout)
|
||||
|
||||
def next(self, index=1, filter_loc='', timeout=0):
|
||||
@ -267,6 +268,7 @@ class DriverElement(DrissionElement):
|
||||
:param timeout: 查找元素的超时时间
|
||||
:return: 兄弟元素
|
||||
"""
|
||||
index, filter_loc = _exchange_arguments(index, filter_loc)
|
||||
return super().next(index, filter_loc, timeout)
|
||||
|
||||
def before(self, index=1, filter_loc='', timeout=None):
|
||||
@ -276,6 +278,7 @@ class DriverElement(DrissionElement):
|
||||
:param timeout: 查找元素的超时时间
|
||||
:return: 本元素前面的某个元素或节点
|
||||
"""
|
||||
index, filter_loc = _exchange_arguments(index, filter_loc)
|
||||
return super().before(index, filter_loc, timeout)
|
||||
|
||||
def after(self, index=1, filter_loc='', timeout=None):
|
||||
@ -285,6 +288,7 @@ class DriverElement(DrissionElement):
|
||||
:param timeout: 查找元素的超时时间
|
||||
:return: 本元素后面的某个元素或节点
|
||||
"""
|
||||
index, filter_loc = _exchange_arguments(index, filter_loc)
|
||||
return super().after(index, filter_loc, timeout)
|
||||
|
||||
def prevs(self, filter_loc='', timeout=0):
|
||||
@ -325,6 +329,7 @@ class DriverElement(DrissionElement):
|
||||
:param filter_loc: 筛选条件,可用selenium的(By, str),也可用本库定位语法
|
||||
:return: DriverElement对象
|
||||
"""
|
||||
index, filter_loc = _exchange_arguments(index, filter_loc)
|
||||
eles = self._get_relative_eles('left', filter_loc)
|
||||
return eles[index - 1] if index <= len(eles) else None
|
||||
|
||||
@ -334,6 +339,7 @@ class DriverElement(DrissionElement):
|
||||
:param filter_loc: 筛选条件,可用selenium的(By, str),也可用本库定位语法
|
||||
:return: DriverElement对象
|
||||
"""
|
||||
index, filter_loc = _exchange_arguments(index, filter_loc)
|
||||
eles = self._get_relative_eles('right', filter_loc)
|
||||
return eles[index - 1] if index <= len(eles) else None
|
||||
|
||||
@ -343,6 +349,7 @@ class DriverElement(DrissionElement):
|
||||
:param filter_loc: 筛选条件,可用selenium的(By, str),也可用本库定位语法
|
||||
:return: DriverElement对象
|
||||
"""
|
||||
index, filter_loc = _exchange_arguments(index, filter_loc)
|
||||
eles = self._get_relative_eles('left', filter_loc)
|
||||
return eles[index - 1] if index <= len(eles) else None
|
||||
|
||||
@ -352,6 +359,7 @@ class DriverElement(DrissionElement):
|
||||
:param filter_loc: 筛选条件,可用selenium的(By, str),也可用本库定位语法
|
||||
:return: DriverElement对象
|
||||
"""
|
||||
index, filter_loc = _exchange_arguments(index, filter_loc)
|
||||
eles = self._get_relative_eles('left', filter_loc)
|
||||
return eles[index - 1] if index <= len(eles) else None
|
||||
|
||||
@ -361,6 +369,7 @@ class DriverElement(DrissionElement):
|
||||
:param filter_loc: 筛选条件,可用selenium的(By, str),也可用本库定位语法
|
||||
:return: DriverElement对象
|
||||
"""
|
||||
index, filter_loc = _exchange_arguments(index, filter_loc)
|
||||
eles = self._get_relative_eles('near', filter_loc)
|
||||
return eles[index - 1] if index <= len(eles) else None
|
||||
|
||||
@ -1245,3 +1254,14 @@ class Scroll(object):
|
||||
:return: None
|
||||
"""
|
||||
self.driver.run_script(f'{self.t1}.scrollBy({pixel},0);')
|
||||
|
||||
|
||||
def _exchange_arguments(index, filter_loc):
|
||||
# 此方法用于兼容MixPage参数顺序相反的情况
|
||||
if isinstance(index, str) and isinstance(filter_loc, int):
|
||||
index, filter_loc = filter_loc, index
|
||||
elif isinstance(index, int) and filter_loc == 1:
|
||||
filter_loc = ''
|
||||
elif isinstance(filter_loc, str) and index == '':
|
||||
index = 1
|
||||
return index, filter_loc
|
||||
|
@ -44,7 +44,7 @@ class WebPage(SessionPage, ChromiumPage, BasePage):
|
||||
self._response = None
|
||||
|
||||
if self._mode == 'd':
|
||||
self._driver
|
||||
self._to_d_mode()
|
||||
|
||||
def __call__(self, loc_or_str, timeout=None):
|
||||
"""在内部查找元素 \n
|
||||
|
@ -34,9 +34,9 @@ from DrissionPage import ActionChains
|
||||
|
||||
**参数:**
|
||||
|
||||
| 名称 | 数据类型 | 说明 |
|
||||
| ------ | ---------------------------- | ------------ |
|
||||
| `page` | `WebPage`对象或`ChromiumPage`对象 | 动作链要操作的浏览器页面 |
|
||||
| 名称 | 数据类型 | 默认值 | 说明 |
|
||||
| ------ | ---------------------------- | --- | ------------ |
|
||||
| `page` | `WebPage`对象或`ChromiumPage`对象 | 无 | 动作链要操作的浏览器页面 |
|
||||
|
||||
**示例:**
|
||||
|
||||
@ -80,10 +80,10 @@ ac.move_to(ele_or_loc=ele) # 使鼠标移动过到 ele 元素上
|
||||
|
||||
**参数:**
|
||||
|
||||
| 名称 | 数据类型 | 说明 |
|
||||
| ---------- | ----- | ----- |
|
||||
| `offset_x` | `int` | 偏移量 x |
|
||||
| `offset_y` | `int` | 偏移量 y |
|
||||
| 名称 | 数据类型 | 默认值 | 说明 |
|
||||
| ---------- | ----- | --- | ---------------- |
|
||||
| `offset_x` | `int` | 0 | x 轴偏移量,向右为正,向左为负 |
|
||||
| `offset_y` | `int` | 0 | y 轴偏移量,向下为正,向上为负 |
|
||||
|
||||
**返回:**
|
||||
|
||||
@ -93,10 +93,8 @@ ac.move_to(ele_or_loc=ele) # 使鼠标移动过到 ele 元素上
|
||||
|
||||
**示例:**
|
||||
|
||||
鼠标向右移动 300 像素
|
||||
|
||||
```python
|
||||
ac.move(300, 0)
|
||||
ac.move(300, 0) # 鼠标向右移动 300 像素
|
||||
```
|
||||
|
||||
## 📍 `up()`
|
||||
@ -105,9 +103,17 @@ ac.move(300, 0)
|
||||
|
||||
**参数:**
|
||||
|
||||
- `pixel`:移动距离
|
||||
| 名称 | 数据类型 | 默认值 | 说明 |
|
||||
| ------- | ----- | --- | -------- |
|
||||
| `pixel` | `int` | 无 | 鼠标移动的像素值 |
|
||||
|
||||
**返回:**`ActionChains`对象自己
|
||||
**返回:**
|
||||
|
||||
| 数据类型 | 说明 |
|
||||
| -------------- | ------- |
|
||||
| `ActionChains` | 动作链对象本身 |
|
||||
|
||||
**示例:**
|
||||
|
||||
```python
|
||||
ac.up(50) # 鼠标向上移动 50 像素
|
||||
@ -119,9 +125,15 @@ ac.up(50) # 鼠标向上移动 50 像素
|
||||
|
||||
**参数:**
|
||||
|
||||
- `pixel`:移动距离
|
||||
| 名称 | 数据类型 | 默认值 | 说明 |
|
||||
| ------- | ----- | --- | -------- |
|
||||
| `pixel` | `int` | 无 | 鼠标移动的像素值 |
|
||||
|
||||
**返回:**`ActionChains`对象自己
|
||||
**返回:**
|
||||
|
||||
| 数据类型 | 说明 |
|
||||
| -------------- | ------- |
|
||||
| `ActionChains` | 动作链对象本身 |
|
||||
|
||||
## 📍 `left()`
|
||||
|
||||
@ -129,9 +141,15 @@ ac.up(50) # 鼠标向上移动 50 像素
|
||||
|
||||
**参数:**
|
||||
|
||||
- `pixel`:移动距离
|
||||
| 名称 | 数据类型 | 默认值 | 说明 |
|
||||
| ------- | ----- | --- | -------- |
|
||||
| `pixel` | `int` | 无 | 鼠标移动的像素值 |
|
||||
|
||||
**返回:**`ActionChains`对象自己
|
||||
**返回:**
|
||||
|
||||
| 数据类型 | 说明 |
|
||||
| -------------- | ------- |
|
||||
| `ActionChains` | 动作链对象本身 |
|
||||
|
||||
## 📍 `right()`
|
||||
|
||||
@ -139,9 +157,15 @@ ac.up(50) # 鼠标向上移动 50 像素
|
||||
|
||||
**参数:**
|
||||
|
||||
- `pixel`:移动距离
|
||||
| 名称 | 数据类型 | 默认值 | 说明 |
|
||||
| ------- | ----- | --- | -------- |
|
||||
| `pixel` | `int` | 无 | 鼠标移动的像素值 |
|
||||
|
||||
**返回:**`ActionChains`对象自己
|
||||
**返回:**
|
||||
|
||||
| 数据类型 | 说明 |
|
||||
| -------------- | ------- |
|
||||
| `ActionChains` | 动作链对象本身 |
|
||||
|
||||
# ✔ 鼠标按键
|
||||
|
||||
@ -151,9 +175,15 @@ ac.up(50) # 鼠标向上移动 50 像素
|
||||
|
||||
**参数:**
|
||||
|
||||
- `on_ele`:`ChromiumElement`元素或文本定位符
|
||||
| 名称 | 数据类型 | 默认值 | 说明 |
|
||||
| -------- | ----------------------- | ------ | -------------- |
|
||||
| `on_ele` | `ChromiumElement`、`str` | `None` | 要点击的元素对象或文本定位符 |
|
||||
|
||||
**返回:**`ActionChains`对象自己
|
||||
**返回:**
|
||||
|
||||
| 数据类型 | 说明 |
|
||||
| -------------- | ------- |
|
||||
| `ActionChains` | 动作链对象本身 |
|
||||
|
||||
## 📍 `r_click()`
|
||||
|
||||
@ -161,9 +191,15 @@ ac.up(50) # 鼠标向上移动 50 像素
|
||||
|
||||
**参数:**
|
||||
|
||||
- `on_ele`:`ChromiumElement`元素或文本定位符
|
||||
| 名称 | 数据类型 | 默认值 | 说明 |
|
||||
| -------- | ----------------------- | ------ | -------------- |
|
||||
| `on_ele` | `ChromiumElement`、`str` | `None` | 要点击的元素对象或文本定位符 |
|
||||
|
||||
**返回:**`ActionChains`对象自己
|
||||
**返回:**
|
||||
|
||||
| 数据类型 | 说明 |
|
||||
| -------------- | ------- |
|
||||
| `ActionChains` | 动作链对象本身 |
|
||||
|
||||
## 📍 `m_click()`
|
||||
|
||||
@ -171,9 +207,15 @@ ac.up(50) # 鼠标向上移动 50 像素
|
||||
|
||||
**参数:**
|
||||
|
||||
- `on_ele`:`ChromiumElement`元素或文本定位符
|
||||
| 名称 | 数据类型 | 默认值 | 说明 |
|
||||
| -------- | ----------------------- | ------ | -------------- |
|
||||
| `on_ele` | `ChromiumElement`、`str` | `None` | 要点击的元素对象或文本定位符 |
|
||||
|
||||
**返回:**`ActionChains`对象自己
|
||||
**返回:**
|
||||
|
||||
| 数据类型 | 说明 |
|
||||
| -------------- | ------- |
|
||||
| `ActionChains` | 动作链对象本身 |
|
||||
|
||||
## 📍 `hold()`
|
||||
|
||||
@ -181,9 +223,15 @@ ac.up(50) # 鼠标向上移动 50 像素
|
||||
|
||||
**参数:**
|
||||
|
||||
- `on_ele`:`ChromiumElement`元素或文本定位符
|
||||
| 名称 | 数据类型 | 默认值 | 说明 |
|
||||
| -------- | ----------------------- | ------ | -------------- |
|
||||
| `on_ele` | `ChromiumElement`、`str` | `None` | 要按住的元素对象或文本定位符 |
|
||||
|
||||
**返回:**`ActionChains`对象自己
|
||||
**返回:**
|
||||
|
||||
| 数据类型 | 说明 |
|
||||
| -------------- | ------- |
|
||||
| `ActionChains` | 动作链对象本身 |
|
||||
|
||||
## 📍 `release()`
|
||||
|
||||
@ -191,9 +239,15 @@ ac.up(50) # 鼠标向上移动 50 像素
|
||||
|
||||
**参数:**
|
||||
|
||||
- `on_ele`:`ChromiumElement`元素或文本定位符
|
||||
| 名称 | 数据类型 | 默认值 | 说明 |
|
||||
| -------- | ----------------------- | ------ | -------------- |
|
||||
| `on_ele` | `ChromiumElement`、`str` | `None` | 要释放的元素对象或文本定位符 |
|
||||
|
||||
**返回:**`ActionChains`对象自己
|
||||
**返回:**
|
||||
|
||||
| 数据类型 | 说明 |
|
||||
| -------------- | ------- |
|
||||
| `ActionChains` | 动作链对象本身 |
|
||||
|
||||
## 📍 `r_hold()`
|
||||
|
||||
@ -201,9 +255,15 @@ ac.up(50) # 鼠标向上移动 50 像素
|
||||
|
||||
**参数:**
|
||||
|
||||
- `on_ele`:`ChromiumElement`元素或文本定位符
|
||||
| 名称 | 数据类型 | 默认值 | 说明 |
|
||||
| -------- | ----------------------- | ------ | -------------- |
|
||||
| `on_ele` | `ChromiumElement`、`str` | `None` | 要按住的元素对象或文本定位符 |
|
||||
|
||||
**返回:**`ActionChains`对象自己
|
||||
**返回:**
|
||||
|
||||
| 数据类型 | 说明 |
|
||||
| -------------- | ------- |
|
||||
| `ActionChains` | 动作链对象本身 |
|
||||
|
||||
## 📍 `r_release()`
|
||||
|
||||
@ -211,9 +271,15 @@ ac.up(50) # 鼠标向上移动 50 像素
|
||||
|
||||
**参数:**
|
||||
|
||||
- `on_ele`:`ChromiumElement`元素或文本定位符
|
||||
| 名称 | 数据类型 | 默认值 | 说明 |
|
||||
| -------- | ----------------------- | ------ | -------------- |
|
||||
| `on_ele` | `ChromiumElement`、`str` | `None` | 要释放的元素对象或文本定位符 |
|
||||
|
||||
**返回:**`ActionChains`对象自己
|
||||
**返回:**
|
||||
|
||||
| 数据类型 | 说明 |
|
||||
| -------------- | ------- |
|
||||
| `ActionChains` | 动作链对象本身 |
|
||||
|
||||
## 📍 `m_hold()`
|
||||
|
||||
@ -221,9 +287,15 @@ ac.up(50) # 鼠标向上移动 50 像素
|
||||
|
||||
**参数:**
|
||||
|
||||
- `on_ele`:`ChromiumElement`元素或文本定位符
|
||||
| 名称 | 数据类型 | 默认值 | 说明 |
|
||||
| -------- | ----------------------- | ------ | -------------- |
|
||||
| `on_ele` | `ChromiumElement`、`str` | `None` | 要按住的元素对象或文本定位符 |
|
||||
|
||||
**返回:**`ActionChains`对象自己
|
||||
**返回:**
|
||||
|
||||
| 数据类型 | 说明 |
|
||||
| -------------- | ------- |
|
||||
| `ActionChains` | 动作链对象本身 |
|
||||
|
||||
## 📍 `m_release()`
|
||||
|
||||
@ -231,9 +303,15 @@ ac.up(50) # 鼠标向上移动 50 像素
|
||||
|
||||
**参数:**
|
||||
|
||||
- `on_ele`:`ChromiumElement`元素或文本定位符
|
||||
| 名称 | 数据类型 | 默认值 | 说明 |
|
||||
| -------- | ----------------------- | ------ | -------------- |
|
||||
| `on_ele` | `ChromiumElement`、`str` | `None` | 要释放的元素对象或文本定位符 |
|
||||
|
||||
**返回:**`ActionChains`对象自己
|
||||
**返回:**
|
||||
|
||||
| 数据类型 | 说明 |
|
||||
| -------------- | ------- |
|
||||
| `ActionChains` | 动作链对象本身 |
|
||||
|
||||
# ✔ 滚动滚轮
|
||||
|
||||
@ -243,23 +321,37 @@ ac.up(50) # 鼠标向上移动 50 像素
|
||||
|
||||
**参数:**
|
||||
|
||||
- `delta_x`:滚轮变化值 x
|
||||
- `delta_y`:滚轮变化值 y
|
||||
- `on_ele`:`ChromiumElement`元素或文本定位符
|
||||
| 名称 | 数据类型 | 默认值 | 说明 |
|
||||
| --------- | ----------------------- | ------ | -------------- |
|
||||
| `delta_x` | `int` | 0 | 滚轮 x 轴变化值 |
|
||||
| `delta_y` | `str` | 0 | 滚轮 y 轴变化值 |
|
||||
| `on_ele` | `ChromiumElement`、`str` | `None` | 要滚动的元素对象或文本定位符 |
|
||||
|
||||
**返回:**`ActionChains`对象自己
|
||||
**返回:**
|
||||
|
||||
| 数据类型 | 说明 |
|
||||
| -------------- | ------- |
|
||||
| `ActionChains` | 动作链对象本身 |
|
||||
|
||||
# ✔ 键盘按键
|
||||
|
||||
## 📍 `key_down()`
|
||||
|
||||
此方法用于按下键盘按键。
|
||||
此方法用于按下键盘按键,特殊字符见 Keys。
|
||||
|
||||
**参数:**
|
||||
|
||||
- `key`:按键键值,特殊字符见 Keys
|
||||
| 名称 | 数据类型 | 默认值 | 说明 |
|
||||
| ----- | ----- | --- | ---- |
|
||||
| `key` | `str` | 无 | 按键键值 |
|
||||
|
||||
**返回:**`ActionChains`对象自己
|
||||
**返回:**
|
||||
|
||||
| 数据类型 | 说明 |
|
||||
| -------------- | ------- |
|
||||
| `ActionChains` | 动作链对象本身 |
|
||||
|
||||
**示例:**
|
||||
|
||||
```python
|
||||
from DrissionPage.keys import Keys
|
||||
@ -269,13 +361,19 @@ ac.key_down(Keys.CTRL) # 按下 ctrl 键
|
||||
|
||||
## 📍 `key_up()`
|
||||
|
||||
此方法用于提起键盘按键。
|
||||
此方法用于提起键盘按键,特殊字符见 Keys。
|
||||
|
||||
**参数:**
|
||||
|
||||
- `key`:按键键值,特殊字符见 Keys
|
||||
| 名称 | 数据类型 | 默认值 | 说明 |
|
||||
| ----- | ----- | --- | ---- |
|
||||
| `key` | `str` | 无 | 按键键值 |
|
||||
|
||||
**返回:**`ActionChains`对象自己
|
||||
**返回:**
|
||||
|
||||
| 数据类型 | 说明 |
|
||||
| -------------- | ------- |
|
||||
| `ActionChains` | 动作链对象本身 |
|
||||
|
||||
## 📍 `type()`
|
||||
|
||||
@ -283,9 +381,15 @@ ac.key_down(Keys.CTRL) # 按下 ctrl 键
|
||||
|
||||
**参数:**
|
||||
|
||||
- `text`:文本字符串
|
||||
| 名称 | 数据类型 | 默认值 | 说明 |
|
||||
| ------ | ----- | --- | ------ |
|
||||
| `text` | `str` | 无 | 要输入的文本 |
|
||||
|
||||
**返回:**`ActionChains`对象自己
|
||||
**返回:**
|
||||
|
||||
| 数据类型 | 说明 |
|
||||
| -------------- | ------- |
|
||||
| `ActionChains` | 动作链对象本身 |
|
||||
|
||||
# ✔ 等待
|
||||
|
||||
@ -295,9 +399,17 @@ ac.key_down(Keys.CTRL) # 按下 ctrl 键
|
||||
|
||||
**参数:**
|
||||
|
||||
- `second`:秒数
|
||||
| 名称 | 数据类型 | 默认值 | 说明 |
|
||||
| -------- | ------- | --- | ---- |
|
||||
| `second` | `float` | 无 | 等待秒数 |
|
||||
|
||||
**返回:**`ActionChains`对象自己
|
||||
**返回:**
|
||||
|
||||
| 数据类型 | 说明 |
|
||||
| -------------- | ------- |
|
||||
| `ActionChains` | 动作链对象本身 |
|
||||
|
||||
**示例:**
|
||||
|
||||
```python
|
||||
ac.wait(3) # 停顿 3 秒
|
||||
|
@ -2,7 +2,7 @@
|
||||
|
||||
如果只使用收发数据包功能,无须任何准备工作。
|
||||
|
||||
如果要控制浏览器,须设置浏览器路径。以下用 Chrome 作为演示。其它 Chromium 内核浏览器设置方法是一样的。
|
||||
如果要控制浏览器,须设置浏览器路径。程序默认设置控制 Chrome,所以以下用 Chrome 作为演示。如果要使用 edge 或其它 Chromium 内核浏览器,设置方法是一样的。
|
||||
|
||||
# ✔️ 执行步骤
|
||||
|
||||
@ -12,6 +12,8 @@
|
||||
|
||||
后面在"创建页面对象"章节再介绍多 Chrome 浏览器共存的方法。
|
||||
|
||||
!>**注意:**<br>如果您使用的是 edge 浏览器,直接关闭不能清干净进程,请打开任务管理器手动关闭进程。
|
||||
|
||||
## 📍 尝试启动浏览器
|
||||
|
||||
执行以下代码,如果正常启动了浏览器并且访问了百度,则可跳过后面的步骤。
|
||||
|
12
docs/版本历史.md
12
docs/版本历史.md
@ -1,3 +1,13 @@
|
||||
# v3.0.32
|
||||
|
||||
- `WebPage`删除`check_page()`方法
|
||||
- `DriverOptions`和`easy_set`的`set_paths()`增加`browser_path`参数
|
||||
- `DriverOptions`增加`browser_path`属性
|
||||
- `ChromiumFrame`现在支持页面滚动
|
||||
- 修改`SessionElement`相对定位参数顺序
|
||||
- 改进滚动到元素功能
|
||||
- 修复一些问题
|
||||
|
||||
# v3.0.31
|
||||
|
||||
- `run_script()`、`run_async_script()`更名为`run_js`和`run_async_js()`
|
||||
@ -29,6 +39,7 @@
|
||||
# v3.0.20
|
||||
|
||||
重大更新。推出`WebPage`,重新开发底层逻辑,摆脱对 selenium 的依赖,增强了功能,提升了运行效率。支持 chromium 内核的浏览器(如 chrome 和 edge)。比`MixPage`有以下优点:
|
||||
|
||||
- 无 webdriver 特征,不会被网站识别
|
||||
- 无需为不同版本的浏览器下载不同的驱动
|
||||
- 运行速度更快
|
||||
@ -39,6 +50,7 @@
|
||||
- 可以对整个网页截图,包括视口外的部分(90以上版本浏览器支持)
|
||||
|
||||
其它更新:
|
||||
|
||||
- 增加`ChromiumTab`和`ChromiumFrame`类用于处理 tab 和 frame 元素
|
||||
- 新增与`WebPage`配合的动作链接`ActionChains`
|
||||
- ini 文件和`DriverOption`删除`set_window_rect`属性
|
||||
|
Loading…
x
Reference in New Issue
Block a user