鼠标自动化 (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枚举类型,表示要释放的鼠标按键。

返回值:

  • 不返回任何值。

使用示例

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类型,包含xy坐标。

使用示例

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)

按下鼠标按钮。

参数:

返回值:

  • 不返回任何值。

使用示例

JavaScript
Python
// 按下左键
Mouse.keyDown(1);
# 按下左键
Mouse.keyDown(1)

keyUp(button)

释放鼠标按钮。

参数:

返回值:

  • 不返回任何值。

使用示例

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)

results matching ""

    No results matching ""