Poco脚本的点击位置与点击偏移

此文章来源于项目官方公众号:“AirtestProject”
版权声明:允许转载,但转载必须保留原链接;请勿用作商业或者非法用途

1. 前言

上一期我们讲了 Airtest的点击位置与点击偏移,这期我们继续讲一下poco的点击位置与点击偏移。

2. Poco的点击位置

1)打开手机的显示触摸操作

以一个简单的Poco点击脚本为例:

poco(text="网易云音乐").click()

执行这条Poco脚本,会点在哪个位置上呢?同Airtest,我们可以在手机设置里面打开诸如“显示触摸操作”、“显示指针位置”的设置:

在这里插入图片描述

这样我们在运行脚本过程中,会非常清晰地看到点击位置的情况,有助于我们调试和优化脚本:

在这里插入图片描述

2)借助AirtestIDE的控件检索工具

除此之外,我们还可以借助AirtestIDE的poco检索工具,来查看控件的具体点击位置,还是以手机桌面的网易云音乐APP控件为例:

在这里插入图片描述

这里有2个属性需要我们注意的,一个是控件的 pos 属性,这个属性表示控件的点击位置,是一个相对坐标(Poco使用相对坐标系),通过这个属性,我们可以知道该控件在手机画面上的相对坐标,也就是执行控件点击时,点的相对坐标。

我们可以在IDE的选项设置中,同时勾选 实时坐标显示相对坐标 ,然后把鼠标移动到手机画面上查看控件对应的相对坐标:

在这里插入图片描述

另外一个值得关注的属性是 anchorPoint ,这个表示控件的锚点,目前执行Poco的点击操作时,就是点击的控件的锚点位置,[0.5,0.5]表示控件的锚点位于控件的中心点:

在这里插入图片描述

特别需要注意的是, 有些控件,也特别是部分游戏控件,锚点属性并不是[0.5,0.5],有的是[0,0],表示该控件的锚点在控件的左上角 ,依照现在Poco的点击规则,会点击在控件左上角的位置上,很大可能并不会触发有效的控件点击(意思是,点了个寂寞…)。

那这种情况我们该如何处理呢?不着急,等会往下看Poco的点击偏移就可以解决了!
(另外,该问题我们在下一个版本中也会修复,同学们可以期待下~)

3)借助运行报告

除了借助IDE的poco控件检索工具,我们还可以直接生成一份运行报告,来查看具体的点击情况:

在这里插入图片描述

3. Poco的点击偏移

刚才有提到,当控件的 anchorPoint 属性是[0,0],按照现在Poco的点击规则,会点到控件的左上角位置,未必能触发真正的点击,所以我们这时候可以巧妙地利用poco点击偏移,来修正我们的点击效果。

这个接口就是 focus。假设,目前我们有一个控件,它本身的 anchorPoint 为[0,0],我们希望能点击到这个控件的中心位置[0.5,0.5],就可以借助 focus 来实现:

poco("假设的控件").focus([0.5,0.5]).click()

我们来看一个使用 focus 的简单示例(为了更好的看到效果,这里使用了 long_click ):

在这里插入图片描述

另外,在部分全面屏设备下,可能会出现IDE检索控件的时候会发生偏移,或者执行poco点击脚本的时候,点击发生了偏移,这些情况,我们可以参考官方教程文档的内容:https://airtest.doc.io.netease.com/IDEdocs/device_connection/2_android_faq/#3 。

4. Poco点击的拓展

这里补充关于Poco点击的2个小知识点,一个是双击,一个是长按:

Poco的双击虽然提供了接口名 double_click,但实际是没有实现的:

poco(text="网易云音乐").double_click()

我们在运行的时候会报 NotImplementedError 的错误,当然我们还可以借助Airtest的双击,来实现对Poco控件的点击:

  • 利用get_position获取控件的相对坐标
  • 将控件的相对坐标转换成绝对坐标
  • 利用Airtest的double_click双击绝对坐标

关于Poco的长按,其实刚才我们也简单演示一下:

poco(text="网易云音乐").long_click()

5. 小结

关于Poco点击的内容我们就聊到这里,主要是分享了如何查看Poco的点击位置,如何主动做偏移点击,如何处理全面屏设备的poco点击问题等。感兴趣的同学可以收藏并且关注哦~


Airtest 官网:http://airtest.netease.com/
Airtest 教程官网:https://airtest.doc.io.netease.com/
搭建企业私有云服务:https://airlab.163.com/b2b

官方答疑 Q 群:117973773

呀,这么认真都看到这里啦,帮忙点个赞或者收藏支持下我把,灰常感谢~

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


学习编程是顺着互联网的发展潮流,是一件好事。新手如何学习编程?其实不难,不过在学习编程之前你得先了解你的目的是什么?这个很重要,因为目的决定你的发展方向、决定你的发展速度。
IT行业是什么工作做什么?IT行业的工作有:产品策划类、页面设计类、前端与移动、开发与测试、营销推广类、数据运营类、运营维护类、游戏相关类等,根据不同的分类下面有细分了不同的岗位。
女生学Java好就业吗?女生适合学Java编程吗?目前有不少女生学习Java开发,但要结合自身的情况,先了解自己适不适合去学习Java,不要盲目的选择不适合自己的Java培训班进行学习。只要肯下功夫钻研,多看、多想、多练
Can’t connect to local MySQL server through socket \'/var/lib/mysql/mysql.sock问题 1.进入mysql路径
oracle基本命令 一、登录操作 1.管理员登录 # 管理员登录 sqlplus / as sysdba 2.普通用户登录
一、背景 因为项目中需要通北京网络,所以需要连vpn,但是服务器有时候会断掉,所以写个shell脚本每五分钟去判断是否连接,于是就有下面的shell脚本。
BETWEEN 操作符选取介于两个值之间的数据范围内的值。这些值可以是数值、文本或者日期。
假如你已经使用过苹果开发者中心上架app,你肯定知道在苹果开发者中心的web界面,无法直接提交ipa文件,而是需要使用第三方工具,将ipa文件上传到构建版本,开...
下面的 SQL 语句指定了两个别名,一个是 name 列的别名,一个是 country 列的别名。**提示:**如果列名称包含空格,要求使用双引号或方括号:
在使用H5混合开发的app打包后,需要将ipa文件上传到appstore进行发布,就需要去苹果开发者中心进行发布。​
+----+--------------+---------------------------+-------+---------+
数组的声明并不是声明一个个单独的变量,比如 number0、number1、...、number99,而是声明一个数组变量,比如 numbers,然后使用 nu...
第一步:到appuploader官网下载辅助工具和iCloud驱动,使用前面创建的AppID登录。
如需删除表中的列,请使用下面的语法(请注意,某些数据库系统不允许这种在数据库表中删除列的方式):
前不久在制作win11pe,制作了一版,1.26GB,太大了,不满意,想再裁剪下,发现这次dism mount正常,commit或discard巨慢,以前都很快...
赛门铁克各个版本概览:https://knowledge.broadcom.com/external/article?legacyId=tech163829
实测Python 3.6.6用pip 21.3.1,再高就报错了,Python 3.10.7用pip 22.3.1是可以的
Broadcom Corporation (博通公司,股票代号AVGO)是全球领先的有线和无线通信半导体公司。其产品实现向家庭、 办公室和移动环境以及在这些环境...
发现个问题,server2016上安装了c4d这些版本,低版本的正常显示窗格,但红色圈出的高版本c4d打开后不显示窗格,
TAT:https://cloud.tencent.com/document/product/1340