• Poco UI对象 API汇总


    上期回顾:Poco元素定位和脚本编写顺序


    以下基于
    python3.8;airtestIDE1.2.13;airtest1.2.4;pocoui1.0.85

    注意:Poco框架和Airtest框架很多API是同名的,但使用方法完全不一样!!!一定不要搞混了,我初学时也经常搞混,这点一定要注意!
    具体Poco框架和Airtest框架是什么关系,可以看之前文章:Airtest Project——UI自动化利器介绍

    上期讲了Poco框架的元素定位,今天我们就接着讲元素定位成功后,都有哪些API可以用。想熟练使用Poco框架,以下API必须熟记。

    当元素定位后,实际上是实例化了一个UIObjectProxy类,该类源码在:
    your_python_path/site-packages/poco/proxy.py


    1.child(name=None, **attrs)
    返回第1个符合条件的子元素

    参数:
    name - name属性值
    **attrs - 其他属性值

    返回:
    新的UIObjectProxy实例

    示例:

    poco("android:id/title").child()  # 返回title下的第1个子元素
    poco("android:id/title").child("name")  # 返回title下的第1个叫"name"的子元素

    2.children()
    返回所有子元素

    参数:
    因为是返回所有,所以无需参数

    返回:
    新的UIObjectProxy实例


    3.offspring(name=None, **attrs)
    返回符合条件的子孙元素

    参数:
    name - name属性值
    **attrs - 其他属性值

    返回:
    新的UIObjectProxy实例


    4.sibling(name=None, **attrs)
    返回符合条件的兄弟元素

    参数:
    name - name属性值
    **attrs - 其他属性值

    返回:
    新的UIObjectProxy实例


    5.parent()
    返回父元素

    参数:
    父元素只有一个,所以无需参数

    返回:
    新的UIObjectProxy实例


    6.click(focus=None, sleep_interval=None)
    单击元素,如果UI对象是一组元素则点击第1个

    参数:
    focus - 元素相对坐标,如[0.1,0.1],指元素长、宽各10%的位置,即元素左上角,取值范围0~1
    sleep_interval - 休息间隔

    异常:
    PocoNoSuchNodeException:元素不存在

    示例:

    poco("btn_start").click()  # 点击元素中心
    poco("btn_start").click([0.1,0.1])  # 点击元素左上角
    poco("btn_start").click([0.9,0.9], sleep_interval=3)  # 点击元素右下角,之后休息3秒

    7.rclick(focus=None, sleep_interval=None)
    右击,这个应该只在Windows上有,手机没有。如果UI对象是一组元素则点击第1个

    参数:
    focus - 元素相对坐标,如[0.1,0.1],指元素长、宽各10%的位置,即左上角,取值范围0~1
    sleep_interval - 休息间隔

    异常:
    PocoNoSuchNodeException:元素不存在


    8.double_click(focus=None, sleep_interval=None)
    双击。不知为啥实际官方在Unity Poco中并未实现double_click,所以直接运行会报错。可以自己封装一个,方法为先用get_position()获取元素在屏幕上的相对坐标点,再乘以屏幕长宽得到绝对坐标点,再调用Airtest框架的touch()方法,其参数有一个times设成2即可。

    参数:
    focus - 元素相对坐标,如[0.1,0.1],指元素长、宽各10%的位置,即左上角,取值范围0~1
    sleep_interval - 休息间隔

    异常:
    PocoNoSuchNodeException:元素不存在


    9.long_click(duration=2.0)
    长按

    参数:
    duration - 持续时间,默认2秒


    10.swipe(direction, focus=None, duration=0.5)
    滑动

    参数:
    direction - 滑动方向,可以是屏幕相对坐标或是指定方向'up', 'down', 'left', 'right'。'up'=[0, -0.1], 'down'=[0, 0.1], 'left'=[-0.1, 0], 'right'=[0.1, 0]。如[0, -0.1],指元素长的方向不动,整个屏幕宽-10%的位置,即基于元素中心点垂直向上。
    focus - 元素相对坐标,如[0.1,0.1],指元素长、宽各10%的位置,即左上角,取值范围0~1
    duration - 滑动时长,默认0.5秒

    异常:
    PocoNoSuchNodeException:元素不存在

    示例:

    poco('Scroll').swipe([0, -0.1])  # 从元素中心向上滑动屏幕宽10%的距离
    poco('Scroll').swipe('up')  # 从元素中心向上滑动屏幕宽10%的距离
    # 从元素左上角向上滑动屏幕宽10%的距离,滑动过程持续3秒
    poco('Scroll').swipe(direction='up', focus=[0.1,0.1], duration=3)

    11.drag_to(target, duration=2.0)
    将一个元素拖到另一个元素位置。类似于swipe,但swipe是滑动到一个指定方向,而drag_to则是滑动到一个点。

    参数:
    target - 一个元素对象或屏幕相对坐标
    duration - 滑动时长,默认2秒

    异常:
    PocoNoSuchNodeException:元素不存在

    示例:

    poco('star').drag_to(poco('shell'))  # 将元素star拖到元素shell
    poco('star').drag_to([0.1,0.1])  # 将元素star拖到屏幕左上角

    12.scroll(direction='vertical', percent=0.6, duration=2.0)
    滚动。在可以滚动的元素上进行滚动。

    参数:
    direction - 滚动方向,"vertical" or "horizontal",默认'vertical'
    percent - 滚动距离,该距离是相对于此元素的高或宽的比例,默认0.6
    duration - 滚动时长,默认2秒

    异常:
    PocoNoSuchNodeException:元素不存在

    示例:

    poco('scroll').scroll()  # 向下垂直滚动0.6的比例,持续2秒
    poco('scroll').scroll(direction='vertical', percent=-0.6)  # 向上垂直滚动0.6的比例,持续2秒
    poco('scroll').scroll('horizontal',0.3,1)  # 向右横向滚动0.3的比例,持续1秒

    13.pinch(direction='in', percent=0.6, duration=2.0, dead_zone=0.1)
    缩放

    参数:
    direction - "in"缩 or "out"放,默认"in"
    percent - 缩放距离,该距离是相对于此元素的比例,默认0.6
    duration - 缩放时长,默认2秒
    dead_zone - 缩放内圈半径,不能大于percent,默认0.1

    异常:
    PocoNoSuchNodeException:元素不存在

    示例:

    poco('picture').pinch()  # 图片向里缩小
    poco('picture').pinch("out")  # 图片向外放大

    14.start_gesture()
    滑动手势。可用于解锁等复杂手势操作。

    返回:
    PendingGestureAction实例

    示例:

    ui1 = poco('xxx')
    ui2 = poco('yyy')
    # 按住元素ui1 1秒,滑到ui2,等待1秒,滑到屏幕中心,等待1秒,抬起
    ui1.start_gesture().hold(1).to(ui2).hold(1).to([0.5,0.5]).hold(1).up()

    15.focus(f)
    为元素重新聚焦。作用同click()等操作中的focus参数。一般定位到元素后默认焦点是该元素的中心点[0.5,0.5],使用
    focus()可以重新聚焦。
    参数:
    f - 元素相对坐标,如[0.1,0.1],指元素长、宽各10%的位置,即左上角,取值范围0~1

    返回:
    新的UIObjectProxy实例

    示例:

    poco('star').focus([0.1,0.1])  # 将焦点设为元素的左上角

    16.get_position(focus=None)
    获取元素在屏幕上的相对坐标

    参数:
    focus - 元素相对坐标,如[0.1,0.1],指元素长、宽各10%的位置,即左上角,取值范围0~1

    返回:
    相对坐标,如[0.498,0.35555]

    异常:
    PocoNoSuchNodeException:元素不存在


    17.wait(timeout=3)
    等待元素X秒,等到提前结束,等不到继续往下

    参数:
    timeout - 等待时间,默认3秒

    返回:
    自身

    示例:

    # 等待star元素10秒。因为返回自身,所以可以继续操作
    poco('star').wait(10).click()

    18.wait_for_appearance(timeout=120)
    等待元素出现,等到提前结束,等不到报错

    参数:
    timeout - 等待时间,默认120秒

    异常:
    PocoTargetTimeout:等待元素超时

    示例:

    star = poco('star')
    star.wait_for_appearance(10)
    star.click()

    19.wait_for_disappearance(timeout=120)
    等待元素消失,消失则提前结束,否则报错

    参数:
    timeout - 等待时间,默认120秒

    异常:
    PocoTargetTimeout:等待元素超时

    示例:

    poco('star').wait_for_disappearance(10)

    20.attr(name)
    获取元素属性值

    参数:
    name - 属性名称,如name、type、text、visible、pos、clickable等

    返回:
    属性值,如果属性不存在返回None

    异常:
    PocoNoSuchNodeException:元素不存在

    示例:

    poco('star').attr("name")

    21.setattr(name, val)
    设置元素的属性的值。需要注意的是并不是所有属性都可以修改。

    参数:
    name - 属性名称,如name、type、text、visible、pos、clickable等
    val - 值

    异常:
    InvalidOperationException:非法操作。当设置失败时抛出。

    示例:

    # 给输入框设置值为"测试工程师小站"
    poco('input').setattr("text", "测试工程师小站")

    22.exists()
    判断元素是否存在。

    返回:
    True if exists otherwise False

    示例:

    poco('input').exists()

    23.get_text()
    获取元素'text'属性值

    返回:
    'text'属性值,没有时返回None

    示例:

    poco('input').get_text()

    24.set_text(text)
    设置元素'text'属性值

    参数:
    text - 文本内容

    异常:
    InvalidOperationException:非法操作。当无法设置时抛出。

    示例:

    poco('input').set_text("测试工程师小站")

    25.get_name()
    获取元素'name'属性值

    返回:
    'name'属性值

    示例:

    poco('input').get_name()

    26.get_size()
    获取元素在屏幕相对坐标中的大小

    返回:
    [width, height] in range of 0 ~ 1

    示例:

    poco('input').get_size()

    27.get_bounds()
    获取元素在屏幕相对坐标系中的边界

    返回:
    [top, right, bottom, left] in range of 0 ~ 1

    示例:

    poco('input').get_bounds()

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

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

  • 相关阅读:
    django 我的博客 (慕课网视频)笔记
    读 django 中文文档投票例子笔记
    django的安装和初步使用
    Debug模式自定义NSlog
    重写NSString的setter方法
    iOS 常用代码之 UICollectionView
    生成100个 "20180520" 这样的时间字符串 写入txt文件
    WRNavigationBar 使用记录
    关于iphone设置显示模式为标准模式和放大模式时的区别
    CGContextRef 使用小记
  • 原文地址:https://www.cnblogs.com/songzhenhua/p/16001060.html
Copyright © 2020-2023  润新知