鼠标自动化 (Mouse)
用于实现鼠标移动,以及各个鼠标按钮的点击、按下/释放的自动化对象。比如某些应用中的界面是隐藏在屏幕边缘的,需要鼠标移至屏幕边缘才会出现,那么这种场景就不好用控件操作来实现。而Mouse
对象正是为了解决这类问题而推出的。
Mouse
对象提供以下方法:
方法名 | 说明 |
---|---|
move | 移动鼠标到指定位置。 |
moveSmooth | 平滑移动鼠标到指定位置。 |
drag | 拖拽鼠标到指定位置。 |
drop | 在指定位置释放拖拽操作。 |
setDelay | 设置鼠标操作的间隔时间。 |
position | 获取当前鼠标位置。 |
click | 点击鼠标按钮。 |
dblClick | 双击鼠标按钮。 |
keyDown | 按下鼠标按钮。 |
keyUp | 释放鼠标按钮。 |
wheel | 滚动鼠标滚轮。 |
类型定义
JavaScript
Python
export class Mouse {
static move(x: number, y: number): void;
static moveSmooth(x: number, y: number, seconds?: number): void;
static setDelay(delay: number): void;
static drag(x: number, y: number, mouseKey?: number): Promise<void>;
static drop(duration?: number);
static drop(x: number, y: number, duration?: number): Promise<void>;
static drop(x: number, y: number, options?: {duration?: number, mouseKey?: MouseKey }): Promise<void>;
static position(): Point;
static click(button?: MouseKey): void;
static click(x: number, y: number): Promise<void>;
static click(x: number, y: number, mouseKey?: MouseKey): Promise<void>;
static dblClick(button?: MouseKey): void;
static dblClick(x: number, y: number): Promise<void>;
static dblClick(x: number, y: number, mouseKey?: MouseKey): Promise<void>;
static keyDown(button: MouseKey): void;
static keyUp(button: MouseKey): void;
static wheel(vertical: number, horizontal?: number): void;
}
interface Point {
x: number,
y: number
}
class Mouse:
def move(x: int, y: int) -> None
def moveSmooth(x: int, y: int, seconds: Optional[int]=None) -> None
def setDelay(delay: int) -> None
def drag(x: int, y: int, mouseKey: Optional[int]) -> None
def drop(x: Optional[int]=None, y: Optional[int]=None, options: Optional[Union[int, TypedDict]]=None) -> None
def position() -> TypedDict
def click(x: Optional[int], y: Optional[int], button: Optional[int]) -> None
def dblClick(x: Optional[int], y: Optional[int], button: Optional[int]) -> None
def keyDown(button: Optional[int]=None) -> None
def keyUp(button: Optional[int]=None) -> None
def wheel(vertical: int, horizontal: Optional[int]=None) -> None
class Point:
x: int
y: int
鼠标键枚举类:MouseKey
MouseKey
是一个枚举类,用于指定鼠标操作方法(如 click()
和 dblClick()
)中使用的鼠标按键。通过传入对应的数字,可以指定要使用的鼠标按键。
此枚举类还包含了一些键盘的控制键,但通常不会用到。
JavaScript
enum MouseKey {
LButton = 1,
RButton = 2,
MButton = 4,
Ctrl = 8,
Shift = 16,
Alt = 32
}
API 介绍
move(x, y)
移动鼠标到指定位置,移动前会释放鼠标按键。
参数:
- x:
number
类型,水平坐标。 - y:
number
类型,垂直坐标。
返回值:
- 不返回任何值。
使用示例
JavaScript
Python
// 将鼠标移动到屏幕坐标 (100, 200)
Mouse.move(100, 200);
# 将鼠标移动到屏幕坐标 (100, 200)
Mouse.move(100, 200)
moveSmooth(x, y, seconds)
平滑移动鼠标到指定位置,移动行为更接近人工操作。
参数:
- x:
number
类型,水平坐标。 - y:
number
类型,垂直坐标。 - seconds: (可选)
number
类型,完成移动所需的时间。
返回值:
- 不返回任何值。
使用示例
JavaScript
Python
// 在 1 秒内平滑移动鼠标到屏幕坐标 (100, 200)
Mouse.moveSmooth(100, 200, 1);
# 在 1 秒内平滑移动鼠标到屏幕坐标 (100, 200)
Mouse.moveSmooth(100, 200, 1)
drag(x, y, mouseKey)
在指定位置拖拽鼠标,通常与 drop()
方法配合使用,以实现完整的拖拽操作。
参数:
- x:
number
类型,水平坐标。 - y:
number
类型,垂直坐标。 - mouseKey: (可选)
MouseKey
枚举类型,表示要使用的鼠标按键,默认为左键。
返回值:
- 不返回任何值。
使用示例
JavaScript
Python
await Mouse.drag(100, 200);
Mouse.drag(100, 200)
drop(x, y, {duration, mouseKey})
在指定位置释放拖拽操作,与 drag()
方法配合使用。支持不同的参数组合以实现不同的功能。
参数:
- x: (可选)
number
类型,水平坐标。 - y: (可选)
number
类型,垂直坐标。 - options:
object
- 包含以下可选参数:- duration: (可选)
number
类型,用于设置鼠标移动到释放位置所需的时间。 - mouseKey: (可选)
MouseKey
枚举类型,表示要释放的鼠标按键。
- duration: (可选)
返回值:
- 不返回任何值。
使用示例
JavaScript
Python
// 用法1:无参数时,模拟鼠标松开左键。
await Mouse.drop();
// 用法2:指定 `duration` 参数,控制鼠标移动到释放位置的时间。
await Mouse.drop(1);
// 用法3:指定 `x` 和 `y` 参数,并在到达指定坐标后释放鼠标,同时设置移动时间。
await Mouse.drop(300, 400, 1);
// 用法4:使用 `options` 对象,灵活控制鼠标操作。
await Mouse.drop(300, 400, {'mouseKey': 1, 'duration': 1});
# 用法1:无参数时,模拟鼠标松开左键。
Mouse.drop()
# 用法2:指定 `seconds` 参数,控制鼠标移动到释放位置的时间。
Mouse.drop(1)
# 用法3:指定 `x` 和 `y` 参数,并在到达指定坐标后释放鼠标,同时设置移动时间。
Mouse.drop(300, 400, 1)
# 用法4:使用 `options` 对象,灵活控制鼠标操作。
Mouse.drop(300, 400, {'mouseKey': 1, 'duration': 1})
setDelay(delay)
设置鼠标操作的间隔时间,单位为毫秒。
参数:
- delay:
number
类型,间隔时间。
返回值:
- 不返回任何值。
使用示例
JavaScript
Python
// 设置鼠标操作的间隔时间为 100 毫秒
Mouse.setDelay(100);
# 设置鼠标操作的间隔时间为 100 毫秒
Mouse.setDelay(100)
position()
获取当前鼠标位置。
返回值:
Point
类型,包含x
和y
坐标。
使用示例
JavaScript
Python
// 获取当前鼠标位置并输出
let pos = Mouse.position();
console.log(pos);
# 获取当前鼠标位置并输出
pos = Mouse.position()
print(pos)
click(x, y, mouseKey)
在指定位置点击鼠标按钮。支持不同的参数组合以实现不同的点击操作。
参数:
- x: (可选)
number
类型,水平坐标。 - y: (可选)
number
类型,垂直坐标。 - mouseKey: (可选)
MouseKey
枚举类型,表示要点击的鼠标按键,不传参数的情况下默认操作左键。
返回值:
- 不返回任何值。
使用示例
JavaScript
Python
// 用法1:无参数时,模拟左键点击。
await Mouse.click();
// 用法2:指定 `mouseKey` 参数,点击指定按键。
await Mouse.click(1);
// 用法3:指定 `x` 和 `y` 参数,点击屏幕指定位置。
await Mouse.click(100, 200);
// 用法4:指定 `x`、`y` 和 `mouseKey` 参数,在指定位置点击指定按键。
await Mouse.click(100, 200, 2);
# 用法1:无参数时,模拟左键点击。
Mouse.click()
# 用法2:指定 `mouseKey` 参数,点击指定按键。
Mouse.click(1)
# 用法3:指定 `x` 和 `y` 参数,点击屏幕指定位置。
Mouse.click(100, 200)
# 用法4:指定 `x`、`y` 和 `mouseKey` 参数,在指定位置点击指定按键。
Mouse.click(100, 200, 2)
dblClick(x, y, mouseKey)
在指定位置双击鼠标按钮。支持不同的参数组合以实现不同的双击操作。
参数:
- x: (可选)
number
类型,水平坐标。 - y: (可选)
number
类型,垂直坐标。 - mouseKey: (可选)
MouseKey
枚举类型,表示要双击的鼠标按键,不传参数的情况下默认操作左键。
返回值:
- 不返回任何值。
使用示例
JavaScript
Python
// 用法1:无参数时,模拟左键双击。
await Mouse.dblClick();
// 用法2:指定 `mouseKey` 参数,双击指定按键。
await Mouse.dblClick(1);
// 用法3:指定 `x` 和 `y` 参数,双击屏幕指定位置。
await Mouse.dblClick(100, 200);
// 用法4:指定 `x`、`y` 和 `mouseKey` 参数,在指定位置双击指定按键。
await Mouse.dblClick(100, 200, 2);
# 用法1:无参数时,模拟左键双击。
Mouse.dblClick()
# 用法2:指定 `mouseKey` 参数,双击指定按键。
Mouse.dblClick(1)
# 用法3:指定 `x` 和 `y` 参数,双击屏幕指定位置。
Mouse.dblClick(100, 200)
# 用法4:指定 `x`、`y` 和 `mouseKey` 参数,在指定位置双击指定按键。
Mouse.dblClick(100, 200, 2)
keyDown(button)
按下鼠标按钮。
参数:
- button:
MouseKey
类型,枚举值。
返回值:
- 不返回任何值。
使用示例
JavaScript
Python
// 按下左键
Mouse.keyDown(1);
# 按下左键
Mouse.keyDown(1)
keyUp(button)
释放鼠标按钮。
参数:
- button:
MouseKey
类型,枚举值。
返回值:
- 不返回任何值。
使用示例
JavaScript
Python
// 释放左键
Mouse.keyUp(1);
# 释放左键
Mouse.keyUp(1)
wheel(vertical, horizontal)
滚动鼠标滚轮,支持垂直和水平滚动。
参数:
- vertical:
number
类型,表示垂直滚动的距离。正值表示向上滚动,负值表示向下滚动。 - horizontal: (可选)
number
类型,表示水平滚动的距离。正值向左滚动,负值向右滚动。
返回值:
- 不返回任何值。
使用示例
JavaScript
Python
// 仅垂直滚动,向上滚动 100 单位
Mouse.wheel(100);
// 同时进行垂直和水平滚动,向上滚动 100 单位并向左滚动 50 单位
Mouse.wheel(100, 50);
# 单独进行垂直滚动,向上滚动 100 单位
Mouse.wheel(100)
# 同时进行垂直和水平滚动,向上滚动 100 单位并向左滚动 50 单位
Mouse.wheel(100, 50)
拖拽操作
实现拖拽操作的脚本如下:
JavaScript
Python
// 在 1 秒将鼠标移动到屏幕坐标 (100, 100) 并在到达后立即按住左键开始拖拽
Mouse.drag(100, 100, 1);
// 将鼠标从当前位置移动到屏幕坐标 (300, 400),并在到达后释放左键
Mouse.drop(300, 400, 1);
# 在 1 秒将鼠标移动到屏幕坐标 (100, 100) 并在到达后立即按住左键开始拖拽
Mouse.drag(100, 100, 1)
# 将鼠标从当前位置移动到屏幕坐标 (300, 400),并在到达后释放左键
Mouse.drop(300, 400, 1)