zoukankan      html  css  js  c++  java
  • Airtest核心API汇总

    上期回顾:Airtest框架源码目录结构解析


    以下基于airtest1.2.0(截止2021.7.12,最新版本)
    https://airtest.readthedocs.io/zh_CN/latest/all_module/airtest.core.api.html
    修改自以上链接,并更新适配到airtest1.2.0版本,翻译了部分英文说明

    想熟练使用Airtest,以下API必须熟记

    1.init_device(platform='Android', uuid=None, **kwargs)
    初始化设备,并设置为当前设备。

    参数:
    platform – Android, IOS or Windows
    uuid     – 目标设备的uuid,例如Android的序列号,Windows的窗口句柄,或iOS的uuid
    kwargs   – 可选的平台相关的参数,例如Android下的 cap_method=JAVACAP参数

    返回:
    device对象

    示例:

    init_device(platform="Android",uuid="songzhenhua", cap_method="JAVACAP")
    init_device(platform="Windows",uuid="123456")

    2.connect_device(uri)
    用URI字符串来初始化设备,并且设置为当前设备。

    参数:
    uri – 一个用于初始化设备的URI字符串,例如:
    android://adbhost:adbport/serialno?param=value&param2=value2

    返回:
    device对象

    示例:

    # 本地安卓设备默认参数
    connect_device("Android:///")  
    # 本地安卓设备ID为:SJE5T17B17,且使用参数
    connect_device("Android:///SJE5T17B17?cap_method=javacap&touch_method=adb")
    # 远程安卓设备 Android://adbhost:adbport/serialno
    connect_device("Android://127.0.0.1:5037/10.254.60.1:5555")
    # connect to the desktop
    connect_device("Windows:///") 
    # Connect to the window with handle 123456 
    connect_device("Windows:///123456")  
    # iOS device
    connect_device("iOS:///127.0.0.1:8100")  

    3.device()
    返回当前正在使用中的设备。

    返回:
    当前设备实例

    示例:

    dev = device()
    dev.touch((100, 100))

    4.set_current(idx)
    设置当前设备。

    参数:
    idx – uuid或已初始化的设备列表中的编号,从0开始

    引发:
    IndexError – 当查找不到设备时

    返回:
    None

    支持平台:
    Android, iOS, Windows

    示例:

    # 设置设备列表中的第1台设备为当前设备
    set_current(0)
    # 设置序列号为qasite的设备为当前设备
    set_current("qasite")

    5.auto_setup(basedir=None, devices=None, logdir=None, project_root=None, compress=None)
    自动配置运行环境,如果当前没有连接设备的话,就默认尝试连接Android设备。

    参数:
    basedir – 设置当前脚本的所在路径,也可以直接传 __file__ 变量进来
    devices – 一个内容为 connect_device uri 字符串的列表
    logdir  – 用于报告的日志目录,默认为None不输出日志, 设置为True时日志目录为/log
    project_root – 用于设置PROJECT_ROOT变量,方便 using 接口的调用
    compress – 屏幕截图的压缩比率,在[1, 99]范围内的整数,默认是10

    示例:

    auto_setup(__file__)
    auto_setup(__file__, devices=["Android://127.0.0.1:5037/SJE5T17B17"],
               logdir=True, project_root=r"D: estlogs", compress=90)

    6.shell(cmd)
    在目标设备上运行远程shell指令

    参数:
    cmd – 需要在设备上运行的指令,例如 ls /data/local/tmp

    返回:
    shell指令的输出内容

    支持平台:
    Android

    示例:

    # 在当前默认手机执行adb shell ls
    print(shell("ls"))
    # 在指定手机执行adb shell ls
    dev = connect_device("Android:///device1")
    dev.shell("ls")
    # 设置手机列表中的第1台手机为当前手机,并执行adb shell ls
    set_current(0)
    shell("ls")

    7.start_app(package, activity=None)
    在设备上启动目标应用

    参数:
    package  – 想要启动的应用包名package name,例如 com.netease.my
    activity – 需要启动的activity,默认为None,意为main activity

    返回:
    None

    支持平台:
    Android, iOS

    示例:

    start_app("com.netease.cloudmusic")
    start_app("com.apple.mobilesafari")  # on iOS

    8.stop_app(package)
    终止目标应用在设备上的运行

    参数:
    package – 需要终止运行的应用包名 package name,例如 com.netease.my

    返回:
    None

    支持平台:
    Android, iOS

    示例:

    stop_app("com.netease.cloudmusic")

    9.clear_app(package)
    清理设备上的目标应用数据

    参数:
    package – 包名 package name,例如 com.netease.my

    返回:
    None

    支持平台:
    Android

    示例:

    clear_app("com.netease.cloudmusic")

    10.install(filepath, **kwargs)
    安装应用到设备上

    参数:
    filepath – 需要被安装的应用路径(PC上的路径)
    kwargs   – 平台相关的参数 kwargs,请参考对应的平台接口文档

    返回:
    None

    支持平台:
    Android

    示例:

    install(r"D:demoqasite.apk")
    # adb install -r -t D:demo est.apk
    install(r"D:demoqasite.apk", install_options=["-r", "-t"])

    11.uninstall(package)
    卸载设备上的应用

    参数:
    package – 需要被卸载的包名

    返回:
    None

    支持平台:
    Android

    示例:

    uninstall("com.netease.cloudmusic")

    12.snapshot(filename=None, msg="", quality=None, max_size=None)
    对目标设备进行一次截图,并且保存到文件中。

    参数:
    filename – 保存截图的文件名,默认保存路径为 ST.LOG_DIR
    msg      – 截图文件的简短描述,将会被显示在报告页面中
    quality  – 图片的质量,[1,99]的整数,默认是10
    max_size – 图片的最大尺寸,例如 1200

    返回:
    截图文件的绝对路径

    支持平台:
    Android, iOS, Windows

    示例:

    snapshot(msg="index")
    # 设置保存文件名
    snapshot(filename="测试工程师小站.png", msg="test")

    #可以设置截图的画质和大小
    ST.SNAPSHOT_QUALITY = 30  # 设置截图质量为30
    ST.IMAGE_MAXSIZE = 600  # 设置最大尺寸不超过600*600
    # 此截图质量30,最大不超过600*600
    snapshot()  
    # 设置了全局参数,又额外设置单语句参数时,单语句优先,此截图质量90
    snapshot(filename="测试工程师小站.png", msg="test", quality=90)
    # 设置了全局参数,又额外设置单语句参数时,单语句优先,此截图最大不超1200*1200
    snapshot(filename="qasite.png", msg="test", quality=90, max_size=1200)

    13.wake()
    唤醒并解锁目标设备,在部分品牌手机上可能无法生效

    返回:
    None

    支持平台:
    Android

    示例:

    wake()

    14.home()
    返回HOME界面。

    返回:
    None

    支持平台:
    Android, iOS

    示例:

    home()

    15.touch(v, times=1, **kwargs)
    在当前设备画面上进行一次点击

    参数:
    v      – 点击位置,可以是一个 Template 图片实例,或是一个绝对坐标 (x, y)
    times  – 点击次数
    kwargs – 平台相关的参数 kwargs,请参考对应的平台接口文档

    返回:
    实际点击位置坐标 (x, y)

    支持平台:
    Android, Windows, iOS

    示例:

    # 点击绝对坐标:
    touch((100, 100))

    # 点击图片的中心位置:
    touch(Template(r"测试工程师小站.png", target_pos=5))

    # 点击两次:
    touch((100, 100), times=2)

    # 在Android和Windows下,可以设置点击持续时间:
    touch((100, 100), duration=2)

    # 右键点击(Windows):
    touch((100, 100), right_click=True)

    16.click(*args, **kwargs)
    touch()的别名,一样


    17.double_click(v)
    双击

    参数:
    v – 点击位置,可以是一个 Template 图片实例,或是一个绝对坐标 (x, y)

    返回:
    实际点击位置坐标 (x, y)

    示例:

    double_click((100, 100))
    double_click(Template(r"测试工程师小站.png"))

    18.swipe(v1, v2=None, vector=None, **kwargs)
    在当前设备画面上进行一次滑动操作。
    有两种传入参数的方式

    swipe(v1, v2=Template(...)) # 从 v1 滑动到 v2
    swipe(v1, vector=(x, y)) # 从 v1 开始滑动,沿着vector方向。

    参数:
    v1 – 滑动的起点,可以是一个Template图片实例,或是绝对坐标 (x, y)
    v2 – 滑动的终点,可以是一个Template图片实例,或是绝对坐标 (x, y)
    vector – 滑动动作的矢量坐标,可以是绝对坐标 (x,y) 或是屏幕百分比,例如 (0.5, 0.5)
    **kwargs – 平台相关的参数 kwargs,请参考对应的平台接口文档

    引发:
    Exception – 当没有足够的参数来执行滑动时引发异常

    返回:
    原点位置和目标位置

    支持平台:
    Android, Windows, iOS

    示例:

    swipe(Template(r"测试工程师小站.png"), vector=[-0.0316, -0.3311])
    swipe((100, 100), (200, 200))

    #自定义滑动持续时间1s和经过6步到达终点:
    swipe((100, 100), (200, 200), duration=1, steps=6)

    19.pinch(in_or_out='in', center=None, percent=0.5)
    在设备屏幕上执行一个双指pinch捏合操作

    参数:
    in_or_out – 向内捏合或向外扩大,在[“in”, “out”] 中枚举一个值
    center – pinch动作的中心位置,默认值为None则为屏幕中心点
    percent – pinch动作的屏幕百分比,默认值为0.5

    返回:
    None

    支持平台:
    Android

    示例:

    # 两指向屏幕中心点捏合:
    pinch()

    # 将(100, 100)作为中心点,向外扩张两指:
    pinch('out', center=(100, 100))

    20.keyevent(keyname, **kwargs)
    在设备上执行keyevent按键事件

    参数:
    keyname  – 平台相关的按键名称
    **kwargs – 平台相关的参数 kwargs,请参考对应的平台接口文档

    返回:
    None

    支持平台:
    Android, Windows, iOS

    示例:

    # 在Android上相当于执行了 adb shell input keyevent KEYNAME
    # 内部调用的android.adb.keyevent()
    # Android Keyevent详细文档:
    # https://developer.android.com/reference/android/view/KeyEvent#constants_1
    keyevent("HOME")
    keyevent("3")  # same as keyevent("HOME")
    keyevent("BACK")
    keyevent("KEYCODE_DEL")

    # 在Windows上内部调用的pywinauto.keyboard 进行按键点击
    # Windows Keyevent详细文档:
    # https://pywinauto.readthedocs.io/en/latest/code/pywinauto.keyboard.html
    keyevent("{DEL}")
    keyevent("%{F4}")  # close an active window with Alt+F4

    # iOS只支持 home/volumeUp/volumeDown:
    keyevent("HOME")
    keyevent("volumeUp")

    21.text(text, enter=True, **kwargs)
    在目标设备上输入文本,文本框需要处于激活状态。

    参数:
    text  – 要输入的文本
    enter – 是否在输入完毕后,执行一次 Enter ,默认是True

    返回:
    None

    支持平台:
    Android, Windows, iOS

    示例:

    text("公众号:测试工程师小站")  # 输入完毕后点回车
    text("公众号:测试工程师小站", enter=False)
    # 在Android上,有时你需要在输入完毕后点击搜索按钮:
    text("公众号:测试工程师小站", search=True)

    # 如果希望输入其他按键,可以用这个接口, code详情:
    # https://developer.android.com/reference/android/view/inputmethod/EditorInfo.html#constants_1
    text("公众号:测试工程师小站")
    device().yosemite_ime.code("3")  # 3 = IME_ACTION_SEARCH

    22.sleep(secs=1.0)
    设置一个等待sleep时间,它将会被显示在报告中

    参数:
    secs – sleep的时长

    返回:
    None

    支持平台:
    Android, Windows, iOS

    示例:

    sleep(1)

    23.wait(v, timeout=None, interval=0.5, intervalfunc=None)
    等待当前画面上出现某个匹配的Template图片

    参数:
    v – 要等待出现的目标Template实例
    timeout – 等待匹配的最大超时时长,默认为None即默认取 ST.FIND_TIMEOUT 的值
    interval – 尝试查找匹配项的时间间隔(以秒为单位)
    intervalfunc – 在首次尝试查找匹配失败后的回调函数

    引发:
    TargetNotFoundError – 在超时后仍未找到目标则触发

    返回:
    匹配目标的坐标

    支持平台:
    Android, Windows, iOS

    示例:

    wait(Template(r"测试工程师小站.png"))  # timeout after ST.FIND_TIMEOUT
    # 每3秒查找一次, 120秒超时
    wait(Template(r"测试工程师小站.png"), timeout=120, interval=3)

    # 你可以在每次查找目标失败时,指定一个回调函数:

    def notfound():
        print("No target found")
    wait(Template(r"测试工程师小站.png"), intervalfunc=notfound)

    24.exists(v)
    检查设备上是否存在给定目标

    参数:
    v – 要检查的目标

    返回:
    如果未找到目标,则返回False,否则返回目标的坐标

    支持平台:
    Android, Windows, iOS

    示例:

    if exists(Template(r"测试工程师小站.png")):
        touch(Template(r"测试工程师小站.png"))

    # 因为 exists() 会返回坐标,我们可以直接点击坐标来减少一次图像查找
    pos = exists(Template(r"测试工程师小站.png"))
    if pos:
        touch(pos)

    25.find_all(v)
    在设备屏幕上查找所有出现的目标并返回其坐标列表

    参数:
    v – 寻找目标

    返回:
    结果列表

    [{‘result’: (x, y), ‘rectangle’: ( (left_top, left_bottom, right_bottom, right_top) ), ‘confidence’: 0.9}, …]

    支持平台:
    Android, Windows, iOS

    示例:

    find_all(Template(r"测试工程师小站.png"))
    [{'result': (218, 468), 'rectangle': ((149, 440), (149, 496), (288, 496), (288, 440)),'confidence': 0.9999996423721313}]

    26.assert_exists(v, msg="")
    设备屏幕上存在断言目标

    参数:
    v   – 要检查的目标
    msg – 断言的简短描述,它将被记录在报告中

    引发:
    AssertionError – 如果断言失败

    返回:
    目标坐标

    支持平台:
    Android, Windows, iOS

    示例:

    assert_exists(Template(r"测试工程师小站.png"), "assert exists")

    27.assert_not_exists(v, msg="")
    设备屏幕上不存在断言目标

    参数:
    v   – 要检查的目标
    msg – 断言的简短描述,它将被记录在报告中

    引发:
    AssertionError – 如果断言失败

    返回:
    None.

    支持平台:
    Android, Windows, iOS

    示例:

    assert_not_exists(Template(r"测试工程师小站.png"), "assert not exists")

    28.assert_equal(first, second, msg="")
    断言两个值相等

    参数:
    first  – 第一个值
    second – 第二个值
    msg    – 断言的简短描述,它将被记录在报告中

    引发:
    AssertionError – 如果断言失败

    返回:
    None

    支持平台:
    Android, Windows, iOS

    示例:

    assert_equal(1, 1, msg="assert 1==1")

    29.assert_not_equal(first, second, msg="")
    断言两个值不相等

    参数:
    first  – 第一个值
    second – 第二个值
    msg    – 断言的简短描述,它将被记录在报告中

    引发:
    AssertionError – 如果断言异常

    返回:
    None

    支持平台:
    Android, Windows, iOS

    示例:

    assert_not_equal(1, 2, msg="assert 1!=2")

    ---------------------------------------------------------------------------------

    关注微信公众号即可在手机上查阅,并可接收更多测试分享~

  • 相关阅读:
    CDH 下线节点
    Linux下如何查看哪些进程占用的CPU内存资源最多
    CentOS7安装iptables防火墙
    Mysql 编译报错 g++: internal compiler error: Killed (program cc1plus) 解决办法
    Jenkins配置gitlab
    mysql连接卡死,很多线程sleep状态,导致CPU中mysqld占用率极高
    c++0.1-----基于对象知识大综合(非指针篇)
    c++0.0-----挖坑
    python0.16------构造函数/析构函数/self详解/重写/访问限制/对象属性和类属性/@property/运算符重载
    python0.15-----继承和多态
  • 原文地址:https://www.cnblogs.com/songzhenhua/p/15315212.html
Copyright © 2011-2022 走看看