Skip to main content

动作

from ascript.android import action

模拟 手指 操作

方法

点击

模拟 手指点击屏幕

  • 函数
action.click(x:int,y:int,dur:int = 20):
  • 参数
参数类型是否必填说明
xint要点击的屏幕X坐标
yint要点击的屏幕Y坐标
durfloat点击持续时间,默认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)
  • 参数
参数类型是否必填说明
xint滑动起始点X坐标
yint滑动起始点Y坐标
x1int滑动结束点X坐标
y1int滑动结束点Y坐标
durfloat点击持续时间,默认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)
  • 参数
参数类型是否必填说明
msgstr输入的内容
selectorSelector控件检索规则 当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)
  • 参数
参数类型是否必填说明
xint触摸X点坐标
yint触摸Y点坐标
durfloat动作持续时间,默认20毫秒

移动

模拟 手指移动

action.Touch.move(x, y, dur: int = 20)
  • 参数
参数类型是否必填说明
xint触摸X点坐标
yint触摸Y点坐标
durfloat动作持续时间,默认20毫秒

抬起

模拟 手指抬起

action.Touch.up(x, y, dur: int = 20)
  • 参数
参数类型是否必填说明
xint触摸X点坐标
yint触摸Y点坐标
durfloat动作持续时间,默认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_timeint延迟执行时间
durationint路径执行时常
will_continuebool执行完毕后,是否抬起手指 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

支持的绘制方法如下
moveTorCubicTo
lineTorMoveTo
quadToreset
rCubicTorewind
rQuadToaddArc
addCircleaddOval
addRectaddRoundRect
arcTocubicTo
setLastPointrLineTo

多指操作

  • 函数
action.gesture(paths:List[Path],listener=None)
  • 参数
参数类型是否必填说明
pathsPath[]要执行的一组手指路径
listenerclass手势回调对象, 函数需包含两个函数
手势执行完毕回调: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)



虚拟外设

模拟 外设触控 , 类似于在Android设备上插一个 鼠标 ,从而进行 模拟操作 .

info

在自动化测试中. 当前应用设置,无障碍点击无效时. 可以使用此函数模拟鼠标点击.

  • 优势:点击,滑动,输入等不可被屏蔽
  • 劣势:需要Android设备与PC电脑 Usb线连接,设置为充电模式,并下载Hid客户端,在app中绑定Id
#class
action.Hid

外设点击

模拟鼠标 点击

action.Hid.click(x:int,y:int,dur:int=20)
  • 参数
参数类型是否必填说明
xint点击的屏幕X坐标
yint点击的屏幕Y坐标
durint点击时常 默认20毫秒

外设滑动

模拟鼠标 拖拽滑动

action.Hid.slide(x:int,y:int,x1:int,y1:int,dur:int=20):
  • 参数
参数类型是否必填说明
xint滑动的起始点X坐标
yint滑动的起始点Y坐标
x1int滑动的结束点X坐标
y1int滑动的结束点Y坐标
durint滑动时长 默认20毫秒

外设按键

模拟键盘按键

action.Hid.key(**keycode):
  • 参数
参数类型是否必填说明
keycodestr 可变参数按键值
key值
  • 类型:

    • 字母键:

      • a - A键
      • b - B键
      • c - C键 ...
      • z - Z键
    • 数字键:

      • 1 - 数字1键
      • 2 - 数字2键 ...
      • 0 - 数字0键
    • 功能键:

      • enter - 回车键
      • esc - ESC键
      • backspace - 退格键
      • tab - Tab键
      • space - 空格键
      • capsLock - 大写锁定键
      • f1 - F1功能键 ...
      • f12 - F12功能键
      • printScreen - 打印屏幕键
      • scrollLock - 滚动锁定键
      • pause - 暂停键
    • 导航键:

      • insert - 插入键
      • home - Home键
      • pageUp - 上翻页键
      • delete - 删除键
      • end - End键
      • pageDown - 下翻页键
      • rightArrow - 右箭头键
      • leftArrow - 左箭头键
      • downArrow - 下箭头键
      • upArrow - 上箭头键
    • 符号键:

      • minus - 减号键
      • equal - 等号键
      • leftBracket - 左方括号键
      • rightBracket - 右方括号键
      • backslash - 反斜杠键
      • semicolon - 分号键
      • quote - 单引号键
      • grave - 重音符键
      • comma - 逗号键
      • period - 句号键
      • slash - 斜杠键
    • 小键盘:

      • numLock - 小键盘锁定键

      • keypadDivide - 小键盘除号键

      • keypadMultiply - 小键盘乘号键

      • keypadSubtract - 小键盘减号键

      • keypadAdd - 小键盘加号键

      • keypadEnter - 小键盘回车键

      • keypad1 - 小键盘1键 ...

      • keypad9 - 小键盘9键

      • keypad0 - 小键盘0键

      • keypadDecimal - 小键盘小数点键

      • 描述: 要发送的按键值。

    • Shift:

      • 类型: Boolean | undefined
      • 描述: Shift键的状态,表示是否按下。不传默认为 false。
    • Ctrl:

      • 类型: Boolean | undefined
      • 描述: Ctrl键的状态,表示是否按下。不传默认为 false。
    • Alt:

      • 类型: Boolean | undefined
      • 描述: Alt键的状态,表示是否按下。不传默认为 false。
    • Command:

      • 类型: Boolean | undefined
      • 描述: Command键的状态,表示是否按下。不传默认为 false。
    • id:

      • 类型: String
      • 描述: 要操作的设备的唯一标识符。

捕获点击

捕获用户点击屏幕的坐标

  • 函数
action.catch_click(msg: str = None, shine: bool = True):
  • 参数
参数类型是否必填说明
msgstr捕获屏幕坐标时,要显示的文字.默认无文字显示
shinebool是否闪烁屏幕提示用户. 默认闪烁,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)