基本操作
from ascript.android import action
模拟 手指 操作
点击
模拟 手指点击屏幕
- 函数
action.click(x:int,y:int,dur:int = 20):
- 参数
参数 | 类型 | 是否必填 | 说明 |
---|---|---|---|
x | int | 是 | 要点击的屏幕X坐标 |
y | int | 是 | 要点击的屏幕Y坐标 |
dur | float | 否 | 点击持续时间,默认20毫秒 |
- 示例
# 模拟手指点击屏幕坐标 (898,1916)
from ascript.android import action
action.click(898,1916)
# 模拟手指长按屏幕坐标 (898,1916) 按住两秒不放
from ascript.android import action
action.click(898,1916,2000)
滑动
模拟 手指滑动屏幕
- 函数
action.slide(x:int,y:int,x1:int,y1:int,dur:int=20)
- 参数
参数 | 类型 | 是否必填 | 说明 |
---|---|---|---|
x | int | 是 | 滑动起始点X坐标 |
y | int | 是 | 滑动起始点Y坐标 |
x1 | int | 是 | 滑动结束点X坐标 |
y1 | int | 是 | 滑动结束点Y坐标 |
dur | float | 否 | 点击持续时间,默认20毫秒 |
- 示例
# 模拟手指滑动屏幕 从坐标(157,798) 滑动至坐标(946,834) ,耗时20毫秒
from ascript.android import action
action.slide(157,798,946,834)
# 模拟手指滑动屏幕 从坐标(157,798) 滑动至坐标(946,834) ,耗时3000毫秒
from ascript.android import action
action.slide(157,798,946,834,3000)
输入
模拟 输入文本
- 函数
action.input(msg:str="",selector:Selector=None)
- 参数
参数 | 类型 | 是否必填 | 说明 |
---|---|---|---|
msg | str | 是 | 输入的内容 |
selector | Selector | 否 | 控件检索规则 当Selector 为None时,您的输入框必须已经获取了焦点 |
- 示例
# 模拟在当前 ‘已获取焦点’的的文本框中输入‘你好 aslib!’
from ascript.android import action
action.input("你好 aslib!")
# 模拟在 控件检查器查到的 文本框中输入‘你好 aslib!’
from ascript.android import action
from ascript.android.node import Selector
selector = Selector().id("com.aojoy.airscript:id/search_bar_text")
action.input("你好 aslib!",selector)
触摸
模拟 手指 按下,移动,抬起
#class
action.Touch
按下
模拟 手指按下
action.Touch.down(x,y,dur:int=20)
- 参数
参数 | 类型 | 是否必填 | 说明 |
---|---|---|---|
x | int | 是 | 触摸X点坐标 |
y | int | 是 | 触摸Y点坐标 |
dur | float | 否 | 动作持续时间,默认20毫秒 |
移动
模拟 手指移动
action.Touch.move(x, y, dur: int = 20)
- 参数
参数 | 类型 | 是否必填 | 说明 |
---|---|---|---|
x | int | 是 | 触摸X点坐标 |
y | int | 是 | 触摸Y点坐标 |
dur | float | 否 | 动作持续时间,默认20毫秒 |
抬起
模拟 手指抬起
action.Touch.up(x, y, dur: int = 20)
- 参数
参数 | 类型 | 是否必填 | 说明 |
---|---|---|---|
x | int | 是 | 触摸X点坐标 |
y | int | 是 | 触摸Y点坐标 |
dur | float | 否 | 动作持续时间,默认20毫秒 |
# 一个完整的 触摸 操作
from ascript.android import action
# 从坐标(100,200)的位置按下
action.Touch.down(299,629)
# 按下的同时,移动到坐标(300,300)
action.Touch.move(780,645)
# 按下的同时,再次移动到坐标(400,350),移动用时 1000毫秒
action.Touch.move(445,1152,1000)
# 移动至坐标(450,400)位置 抬起
action.Touch.up(445,1152)
按键
模拟 模拟按键操作
#class
action.Key
Home键
模拟设备 Home按键
action.Key.home()
返回键
模拟设备 返回按键
action.Key.back()
弹出通知栏
模拟设备 调出通知栏
action.Key.notifactions()
任务栏键
模拟设备 任务栏键
action.Key.recents()
截屏键
模拟设备 关闭屏幕
action.Key.screenshot()
锁屏键
模拟设备 关闭屏幕
action.Key.lockscreen()
手指路径
模拟手指 移动路径
#class
from ascript.android.action import Path
创建路径
创建一根手指路径, 多根手指创建多个即可.
Path(self,start_time:int=0, duration:int=20, will_continue:bool=False)
- 参数
参数 | 类型 | 是否必填 | 说明 |
---|---|---|---|
start_time | int | 否 | 延迟执行时间 |
duration | int | 否 | 路径执行时常 |
will_continue | bool | 否 | 执行完毕后,是否抬起手指 True:抬起 False:不抬起,下一个手势将连续执行 |
from ascript.android.action import Path
line1 = Path(0,1000);
# 移动初始点
line1.moveTo(804,708)
# 画直线到点
line1.lineTo(827,1479)
# 使用二次贝塞尔曲线 从点(500,800) 到 (250,900)
line1.quadTo(500,800,250,900)
路径方法
Path 实现了 android.graphics.Path 中的大部分方法.
具体参数参考:android.graphics.Path
支持的绘制方法如下 | |
---|---|
moveTo | rCubicTo |
lineTo | rMoveTo |
quadTo | reset |
rCubicTo | rewind |
rQuadTo | addArc |
addCircle | addOval |
addRect | addRoundRect |
arcTo | cubicTo |
setLastPoint | rLineTo |
多指操作
- 函数
action.gesture(paths:List[Path],listener=None)
- 参数
参数 | 类型 | 是否必填 | 说明 |
---|---|---|---|
paths | Path[] | 是 | 要执行的一组手指路径 |
listener | class | 否 | 手势回调对象, 函数需包含两个函数手势执行完毕回调:onCompleted() , 手势中断回调:onCancelled() |
#案例1:执行一组动作,分别模拟两个手指同时操作
from ascript.android import action
from ascript.android.action import Path
# 模拟第一根手指
line1 = Path(0,1000);
line1.moveTo(804,708)
line1.lineTo(827,1479)
# 模拟第二根手指
line2 = Path(0,1200);
line2.moveTo(500,200)
line2.lineTo(500,500)
action.gesture([line1,line2])
#案例2,执行一组动作,分别模拟两个手指同时操作,并监听动作是否执行结束
from ascript.android import action
from ascript.android.action import Path
line1 = Path(0,1000)
line1.moveTo(200,200)
line1.lineTo(200,500)
# 创建另一个新的path路径 模拟 手指2(*第二条路径相对于第一条,会延迟500ms启动)
line2 = Path(500,1200)
line2.moveTo(500,200)
line2.lineTo(500,500)
class listener:
def onCompleted():
print("结束了")
def onCancelled():
print("被中断取消了")
# 执行 这一组动作
action.gesture([line1,line2],listener)
#案例3:连续 执行两个Path路径,中途不松手指
from ascript.android import action
from ascript.android.action import Path
line1 = Path(0,1000,True);
line1.moveTo(200,200)
line1.lineTo(200,500)
# 创建另一个新的path路径 模拟 手指2
line2 = Path(1000,500);
line2.moveTo(200,500)
line2.lineTo(500,500)
class listener:
def onCompleted():
gesture.perform(line2)
def onCancelled():
print("被中断取消了")
action.gesture([line1],listener)
捕获点击
捕 获用户点击屏幕的坐标
- 函数
action.catch_click(msg: str = None, shine: bool = True):
- 参数
参数 | 类型 | 是否必填 | 说明 |
---|---|---|---|
msg | str | 否 | 捕获屏幕坐标时,要显示的文字.默认无文字显示 |
shine | bool | 否 | 是否闪烁屏幕提示用户. 默认闪烁,False为不闪烁 |
- 返回值
返回用户点击的屏幕坐标位置.
Point 对象. 包含 x,y 属性.分别代表横竖坐标值
- 示例
# 捕获用户点击屏幕的坐标
from ascript.android import action
p = action.catch_click()
print(p)
# 捕获用户点击屏幕的坐标,给出提示文字,并取消屏幕闪烁
from ascript.android import action
p = action.catch_click("请点击屏幕任意位置",False)
print(p)