touch(v, times=1,duration=0.01,right_click=False):点击

v:截图对象-图片 或者坐标(x,y) 通过框选按钮来获取v的值 此(x,y)类似(1024,768)的坐标值

times:点击次数

duration:点击持续时间

right_click:如果是windows平台,则=True表示鼠标右键点击,Android/IOS无用

【注意】:

1.times和duration可以组合使用,表示点击times次,每次间隔duration秒,这就可以实现双击效果:duration=0.01 times=2
touch([x1, y1],times=10)
2.使用方式:点击方法后,在右边设备窗口设备界面上扩选要操作的对象就可以;
如:点击屏幕中间可以使用以下两句完成:
w,h=device().get_current_resolution() #获取手机分辨率
touch([0.5*w, 0.5*h])

click():点击操作

def click(self, focus=None, sleep_interval=None):

    focus:值为:(x,y)或“anchor”或“center”。(x,y)意思是距元素左上角的偏移点,值必须在0~1范围内。“center”是指点击ui元素边界框的中心。“anchor”是指监视器中UI包围盒的小红点。

    sleep_interval:点击操作后等待的秒数。默认值为无,这里默认睡眠间隔。这个值可以通过POCO初始化进行配置。

    示例:

    poco('home_bottom_navigator').click() #无参数默认点中间位置无间隔时间

    poco('home_bottom_navigator').click([0.5, 0.5]) #相当于点中间位置  

    poco('home_bottom_navigator').click([0.5, 0.5],3) #传参,点击元素中间红点后等待3秒

    poco('home_bottom_navigator'').focus([0.5, 0.5]).click()  #点击元素中间红点位置

    备注:官方说明:点击默认点在 anchorPoint 上,每个UI都会有一个 anchorPoint ,也就是检视器(Inspector)中UI包围盒的那个红点,大部分情况下 anchorPoint 都在UI包围盒的正中央。如果想指定其他的点击位置,可以传一个参数到 click 方法中,这个参数是一个用list或tuple表示的2维向量,其 [x, y] 值分别表示相对于包围盒左上角的偏移量,左上角为 [0, 0] ,右下角为 [1, 1] 
————————————————

touch和click不同点

touch通过绝对坐标来点击目标,使用相对坐标无效果

click是通过相对坐标点击


airtest 获取分辨率 绝对坐标 相对坐标
airtest 获取当前屏幕分辨率
width = G.DEVICE.display_info['width']
height = G.DEVICE.display_info['height']
print(width,height)
 
 
已知相对坐标 [0.12,0.709],转换成绝对坐标
x1 = 0.12*width
y1 = 0.709*height
touch([x1,y1]) # touch点击绝对坐标
 
已知绝对坐标[88.1060],转换成相对坐标
x2 = 88/width
y2 = 1060/height
poco.click([x2,y2]) # click点击相对坐标

rclick():右键点击    

def rclick(self, focus=None, sleep_interval=None):

    focus:同click方法

    sleep_interval:同click方法

3.double_click():双击操作    

def double_click(self, focus=None, sleep_interval=None):

    focus:同click方法

    sleep_interval:同click方法

ouble_click((x1,y1))   #(x1, y1)是绝对坐标

4.long_click():长按操作    

def long_click(self, duration=2.0):

    duration:整个动作持续时间

5.swipe():滑动操作 

def swipe(self, direction, focus=None, duration=0.5):

    direction:坐标,可以是(x,y)格式坐标,也可以是'up', 'down', 'left', 'right' (up=[0, -0.1],down=[0, 0.1],left=[-0.1, 0],right=[0, 0.1])

    focus:同click方法

    duration:间隔时间,float类型,默认0.5秒

示例:

    node= poco('home_bottom_navigator').child('point_img')

    node.swipe('up') #向上滑动

    node.swipe([0.2, -0.2])  # 以45度角向上和向右滑动sqrt(0.08)单位距离

    node.swipe([0.2, -0.2], duration=0.5)

    说明:swipe操作以 锚点anchor为起点,如果想改变起点可用 focus 方法,然后朝给定方向滑动,距离就是向量的长度。

 6.drag_to:拖拽   

 def drag_to(self, target, duration=2.0):

    target:拖动后的目标元素

    duration:间隔时间,float类型,默认2秒

    备注:与 swipe 不同的是, darg 是从一个UI拖到另一个UI,而 swipe 是将一个UI朝某个方向拖动。

    示例:

    poco(text='比赛').drag_to(poco(text='开始')) #把比赛元素拖动到开始元素上

7.scroll:卷动效果   

 def scroll(self, direction='vertical', percent=0.6, duration=2.0):

    direction:滚动方向。”垂直“或水平”,默认垂直

    percent:在指定元素上按高或宽的滚动百分比

    duration:间隔时间,float类型,默认2秒

9.focus:局部定位   

 def focus(self, f):

    f:同click()方法

    示例:       

    poco('比赛').focus('center').click()  #定位到元素中间点,进行点击

    poco('比赛').focus([0.5,1]).click()  #定位到元素最下边缘的中间点,进行点击

    备注:官方说明:所有UI相关的操作都默认以UI的 anchorPoint 为操作点,如果想自定义一个点那么可以使用 focus方法。调用此方法将返回新的设置了默认焦点 的UI,重复调用则以最后一次所调用的为准。focus 所使用的是局部坐标系,因此同样是UI包围盒的左上角为原点,x轴向右,y轴向下,并且包围盒长宽均为单位1。很显然中心点就是 [0.5, 0.5]

    将 focus 和 drag_to 结合使用还能产生卷动(scroll)的效果,下面例子展示了如何将一个列表向上卷动半页。 第9点中的scroll实现方式就是这样的

示例:poco("元素").focus([0.5, 0.8]).drag_to(poco(“元素”).focus([0.5, 0.2])) #从指定节点的中下方拖拽到中上方,比如手机端的从下往上滑动

10.start_gesture():移动设备手势分解方法,返回用于生成序列化手势操作的对象。    



    ui1=poco("ui1")

    ui2=poco("ui2")

    ui1.start_gesture().hold(1).to(ui2).hold(1).up() #在ui1元素上按下,等待1秒,拖拽到ui2元素上再等1秒,最后抬起释放

11.get_position():获取元素位置坐标,返回(x,y)相对坐标    

def get_position(self, focus=None)

    focus:同click()方法,默认空

12.wait():等待,直到超过timeout的时间,超时后返回元素对象    

def wait(self, timeout=3)

    说明:

    在给定时间内等待一个UI出现并返回这个元素,如果已经存在了那就返回这个元素。如果超时还没出现,同样也会返回,但是调用这个UI的操作时会报错。

    经验:结合exists()方法可以判断元素是否出现,比如:

    poco(“元素”).wait(4).exists() #如果结果是True则元素存在,如果False则元素不存在

13.wait_for_appearance():等待出现,若超时返回PocoTargetTimeout   

 def wait_for_appearance(self, timeout=120)

    备注:wait_for_appearance()同wait()的区别:前者超时没找到元素直接返回异常PocoTargetTimeout,后者超时后还未返回元素时会报错。

 

 

Logo

一站式 AI 云服务平台

更多推荐