基础动作
坐标说明
action 模块使用 屏幕物理像素坐标。内部会按设备 scale 自动换算成 iOS 点坐标后再执行点击、滑动。
from ascript.ios import action
模拟 手指 操作
方法
点击
模拟 手指点击屏幕
- 函数
action.click(x, y=0, duration=20, jitter=0)
- 参数
| 参数 | 类型 | 是否必填 | 说明 |
|---|---|---|---|
| x | int/Point | 是 | 要点击的屏幕X坐标,也可以传入 Point 对象 |
| y | int | 否 | 要点击的屏 幕Y坐标(当x为Point时可省略) |
| duration | float | 否 | 点击持续时间,默认20毫秒 |
| jitter | int | 否 | 随机抖动像素,默认0。大于0时会在 [-jitter, jitter] 范围内随机偏移 x/y |
- 示例
# 模拟手指点击屏幕坐标 (898,1916)
from ascript.ios import action
action.click(898, 1916)
# 模拟手指长按屏幕坐标 (898,1916) 按住两秒不放
from ascript.ios import action
action.click(898, 1916, 2000)
# 拟人点击:在目标点附近 5 像素范围内随机点击
from ascript.ios import action
action.click(898, 1916, jitter=5)
# 使用 Point 对象点击(如找色/找图返回的结果)
from ascript.ios import action
from ascript.ios.screen import FindColors
p = FindColors.find("243,842,#040404|711,916,#6B6B6B")
if p:
action.click(p)
区域随机点击
在指定矩形区域内随机选择一个点点击。
- 函数
action.click_random(x1, y1, x2, y2, duration=20)
- 参数
| 参数 | 类型 | 是否必填 | 说明 |
|---|---|---|---|
| x1,y1 | int | 是 | 矩形区域第一个角坐标 |
| x2,y2 | int | 是 | 矩形区域第二个角坐标 |
| duration | int | 否 | 点击持续时间,默认20毫秒 |
- 示例
from ascript.ios import action
# 在按钮大致区域内随机点击
action.click_random(120, 800, 360, 900)
滑动
模拟 手指滑动屏幕
- 函数
action.slide(x1, y1, x2, y2, duration=200)
- 参数
| 参数 | 类型 | 是否必填 | 说明 |
|---|---|---|---|
| x1 | int | 是 | 滑动起始点X坐标 |
| y1 | int | 是 | 滑动起始点Y坐标 |
| x2 | int | 是 | 滑动结束点X坐标 |
| y2 | int | 是 | 滑动结束点Y坐标 |
| duration | float | 否 | 滑动持续时间,默认200毫秒 |
- 示例
# 模拟手指滑动屏幕 从坐标(157,798) 滑动至坐标(946,834) ,耗时200毫秒
from ascript.ios import action
action.slide(157, 798, 946, 834)
# 模拟手指滑动屏幕 从坐标(157,798) 滑动至坐标(946,834) ,耗时3000毫秒
from ascript.ios import action
action.slide(157, 798, 946, 834, 3000)
连续轨迹滑动 slide_path
沿多个坐标点执行一条 连续触摸轨迹。整条轨迹中间不会抬手,适合需要模拟曲线、折线、拖动路径等场景。
- 函数
slide_path(points, duration=1000, durations=None,
touch_down_duration=0,
touch_up_duration=0)
- 参数
| 参数 | 类型 | 是否必填 | 说明 |
|---|---|---|---|
| points | list | 是 | 轨迹点列表,至少两个点。每个点支持 (x, y)、Point 或 {"x": x, "y": y} |
| duration | int | 否 | 整条轨迹总耗时,单位毫秒。不传 durations 时会平均分配给每一段 |
| durations | list[int] | 否 | 分段耗时,单位毫秒。数量必须等于 len(points) - 1 |
| touch_down_duration | int | 否 | 手指按下后停留时间,单位毫秒 |
| touch_up_duration | int | 否 | 手指抬起前停留时间,单位毫秒 |
- 示例
from ascript.ios.action import slide_path
slide_path(
points=[
(300, 1200),
(450, 1000),
(600, 850),
(800, 700),
],
duration=1200
)
也可以分别控制每一段的速度:
from ascript.ios.action import slide_path
slide_path(
points=[
(300, 1200),
(450, 1000),
(600, 850),
(800, 700),
],
durations=[200, 500, 300], # 每段耗时,单位毫秒
touch_down_duration=100, # 按下后停留
touch_up_duration=200, # 抬起前停留
)
使用要点
points至少需要两个点,坐标使用屏幕物理像素坐标。durations的数量必须等于len(points) - 1。- 不传
durations时,duration会平均分配给每一段。 - 整条轨迹是一次连续触摸,中间不会抬手。
拖拽滑动
模拟 手指拖拽滑动屏幕
- 函数
action.touch_and_slide(from_x, from_y, to_x, to_y,
touch_down_duration=500,
touch_move_duration=1000,
touch_up_duration=500)
- 参数
| 参数 | 类型 | 是否必填 | 说明 |
|---|---|---|---|
| from_x | int | 是 | 滑动起始点X坐标 |
| from_y | int | 是 | 滑动起始点Y坐标 |
| to_x | int | 是 | 滑动结束点X坐标 |
| to_y | int | 是 | 滑动结束点Y坐标 |
| touch_down_duration | int | 否 | 起始点按下的时间长度,默认500毫秒 |
| touch_move_duration | int | 否 | 起点至结束点之间的滑动时长,默认1000毫秒 |
| touch_up_duration | int | 否 | 结束点抬起的时长,默认500毫秒 |
- 示例
# 模拟手指拖拽滑动屏幕 按下坐标(422,1707) 1秒钟 滑动至坐标(946,834) 用时500毫秒,松开手指 ,耗时500毫秒
from ascript.ios import action
action.touch_and_slide(422, 1707, 687, 1714, 1000, 500, 500)
输入
模拟 输入文本
- 函数
action.input(value, interval=120)
- 参数
| 参数 | 类型 | 是否必填 | 说明 |
|---|---|---|---|
| value | str | 是 | 输入的内容 |
| interval | int | 否 | 逐字输入间隔,单位毫秒,默认120。iOS 18 及以上通常整串输入,此参数影响较小 |
- 示例
# 模拟在当前 '已获取焦点'的的文本框中输入'你好 aslib!'
from ascript.ios import action
action.input("你好 aslib!")
模拟键盘
模拟 模拟键盘
- 函数
action.keys(value, interval=120)
- 参数
| 参数 | 类型 | 是否必填 | 说明 |
|---|---|---|---|
| value | str | 是 | 输入内容 |
| interval | int | 否 | 逐字输入间隔,单位毫秒,默认120 |
- 示例
from ascript.ios import action
action.keys("123?")
Home 键
快速回到桌面。
- 函数
action.home()
- 示例
from ascript.ios import action
action.home()
快捷滑动
按当前屏幕尺寸自动计算起止点,执行常用方向滑动。
- 函数
action.slide_left()
action.slide_right()
action.slide_up()
action.slide_down()
- 示例
from ascript.ios import action
action.slide_up() # 上滑
action.slide_down() # 下滑
模拟按键
按键码表
| 按键值 | 按键描述 | 备注 |
|---|---|---|
| action.KEY_HOME | 模拟home按键 | |
| action.KEY_VOLUMEUP | 模拟音量+ | |
| action.KEY_volumedown | 模拟音量- | |
| action.KEY_POWER | 模拟电源按键 | 仅 hid方法可用 |
| action.KEY_SNAPSHOT | 模拟截屏按键 | 仅 hid方法可用 |
| action.KEY_POWER_AND_HOME | 模拟电源+Home | 仅 hid方法可用 |
模拟按钮
模拟点击手机按钮
- 函数
action.key_press(value)
- 参数
| 参数 | 类型 | 是否必填 | 说明 |
|---|---|---|---|
| value | str | 是 | 按键码表'支持前3个' |
- 示例
# 模拟点击home按键
from ascript.ios import action
action.key_press(action.KEY_HOME)
模拟按钮-HID协议
模拟点击手机按钮,使用键鼠协议
- 函数
action.key_press_hid(key, duration=20)
- 参数
| 参数 | 类型 | 是否必填 | 说明 |
|---|---|---|---|
| key | str | 是 | 按键码表'支持全部' |
| duration | float | 否 | 按住时间,默认20毫秒, 单位毫秒 |
- 示例
# 模拟呼出siri
from ascript.ios import action
action.key_press_hid(action.KEY_POWER, 3000)
双击
模拟 手指双击屏幕
- 函数
action.double_tap(x, y)
- 参数
| 参数 | 类型 | 是否必填 | 说明 |
|---|---|---|---|
| x | int | 是 | 要双击的屏幕X坐标 |
| y | int | 是 | 要双击的屏幕Y坐标 |
- 示例
from ascript.ios import action
action.double_tap(500, 800)
快捷滑动
模拟 手指快速滑动 的便捷方法
from ascript.ios import action
# 向左滑
action.slide_left()
# 向右滑
action.slide_right()
# 向上滑
action.slide_up()
# 向下滑
action.slide_down()
回到桌面
模拟按 Home 键
from ascript.ios import action
action.home()