Poco框架实操:对节点可实施的操作
一、前言
二、Poco节点操作详解
2.1 修改文本类属性值:setattr(typename, val)
setattr(typename, val) 这个方法,通过输入属性名以及需要修改进去的内容即可。但是需要注意的是,很多属性如: name 、 pos 等等是不推荐修改的,尤其是 editalbe 为** False **的节点,不建议修改该节点的所有属性,它们的修改可能会导致出现意外和误报错误。
poco("com.sonyericsson.conversations:id/conversation_edit_text").setattr("text","我要发短信")
2.2 输入文字:set_text()
set_text() 这个方法,但是在使用 set_text() 之前,需要先执行一遍 click 点击操作,激活文本框后,再执行输入操作。
poco("com.sonyericsson.conversations:id/conversation_edit_text").click()
poco("com.sonyericsson.conversations:id/conversation_edit_text").set_text("我要发短信")
set_text() 无法输入,或出现相关报错的话,可以更换使用Airtest的 text() 方法去进行输入即可。
poco("com.sonyericsson.conversations:id/conversation_edit_text").click()
text("我要发短信")
2.3 设置节点焦点:focus(f)
focus 所使用的是局部归一化坐标系,因此同样是UI框的左上角为原点,x轴向右,y轴向下,并且UI框长宽最大坐标均为1。所以一般节点默认的操作点坐标为 [0.5, 0.5] 。
2.3.1 内部偏移
focus 重新自定义一个操作点,也就是设置内部偏移量,偏移量在 大于0且小于1 的范围内。调用这个方法将返回已设置了新操作点的Poco节点,重复调用则以最后一次所调用的为准。
# 内部偏移
poco(texture="icon").focus([0.1,0.8]).long_click()
2.3.2 外部偏移
focus 去指定UI框外的偏移量,并且是会出现偏移量 小于0或者大于1 的情况,但是要注意的是,在考虑外部偏移量的同时,也要注意该偏移量坐标是否会 超出屏幕范围 ,否则会出现该报错: InvalidOperationException('Click position out of screen 。
# 外部偏移
poco(text="pearl").focus([0.5,-3]).long_click()
2.4 拖拽:drag_to(target, duration=2.0)
swipe() ,但是 swipe() 是单纯的从其中一个坐标,滑动到另一个坐标,但是 drag_to() 是完全不同的,首先拖动的是节点而不是普通的一个坐标点,其次,拖动的终点是可以是另一个节点、同一个节点的不同UI位置、或者是某个坐标点。
target :拖拽的终点(可以为节点,也可以为归一化坐标); duration=2.0 :默认拖拽的持续时间为2秒。
poco('star').drag_to(poco('shell'))
poco("音乐").drag_to([0.5,0.5])
2.5 长按:long_click(duration = 2.0)
click 类似, long_click() 是对节点进行长按操作,可以传入长按的持续时间参数 duration ,默认为2秒。
poco("音乐").long_click()
poco.pocofw module 下的 long_click(pos, duration=2.0) ,我们需要传入设备屏幕归一化坐标 pos 以及 长按的持续时间参数 duration 即可。
poco.long_click((0.5,0.5), duration=2.0)
2.6 双击:double_click(x, y)
poco 1.0.92 及以上版本均能使用,可以在括号内输入双击的偏移点坐标,不填写默认为双击节点的 anchorPoint ,如下:
poco("音乐").double_click([0.2,0.8])
三、实操小案例
# -*- encoding=utf8 -*-
__author__ = "Airtest"
from airtest.core.api import *
auto_setup(__file__)
from poco.drivers.android.uiautomation import AndroidUiautomationPoco
poco = AndroidUiautomationPoco(use_airtest_input=True, screenshot_each_action=False)
#打开网易云音乐
start_app("com.netease.cloudmusic")
sleep(2.0)
poco("com.netease.cloudmusic:id/skipBtn").click()
#点击进入搜索界面
poco("com.netease.cloudmusic:id/iconSearch").click()
sleep(1.0)
#【使用setattr】输入“汪苏泷”
poco("com.netease.cloudmusic:id/search_src_text").setattr("text","汪苏泷")
sleep(1.0)
#点击搜索按钮,进行搜索
poco("com.netease.cloudmusic:id/toSearch").click()
sleep(1.0)
#点击播放全部歌曲
poco("com.netease.cloudmusic:id/actionView").click()
sleep(1.0)
#【使用double_click】双击喜欢歌曲
poco("com.netease.cloudmusic:id/smallAlbumDisc0").double_click()
#退出歌曲播放详情界面
poco("转到上一层级").click()
sleep(1.0)
#【使用focus、drag_to】分别进行节点UI定位以及进行拖拽换歌
poco("com.netease.cloudmusic:id/tv_music").focus([0.8,0.3]).drag_to(poco("com.netease.cloudmusic:id/tv_music").focus([0.2,0.3]),duration = 1.0)
sleep(1.0)
#【使用long_click】长按复制歌曲名
poco(text="此生不换 (Live版)").long_click()
poco("com.netease.cloudmusic:id/copyBtn").click()
#点击上方搜索框
poco("com.netease.cloudmusic:id/search_close_btn").click()
#【使用set_text】将剪切板的内容粘贴在搜索框内
poco("com.netease.cloudmusic:id/search_src_text").set_text(get_clipboard())
#点击搜索
poco("com.netease.cloudmusic:id/toSearch").click()
四、小结
-
修改文本类属性值: setattr(typename, val) -
输入文字: set_text() -
设置节点焦点: focus(f) -
拖拽: drag_to(target, duration=2.0) -
长按: long_click(duration = 2.0) -
双击: double_click(x, y)


)
本文分享自微信公众号 - AirtestProject(AirtestProject)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。
