如何用坐标定位非原生控件?

        项目做小程序自动化,我们用的是Appium+maven+testng框架来实现的,但做小程序自动化测试时遇到一个问题,在进行支付操作时用UIutomator定位数字键盘只能定位一行的整个模块,并不能精确定位,且尝试了下在模块后面加个二维数组定位模块里的元素,还是不行。最后咨询了一下前端的大神告诉我可以试试用坐标来定位Android的原生控件。


首先,我们把整个屏幕看成一个坐标轴


可以在UIAutomator上看到每个模块都有坐标点,如下图,我们可以直接得到该模块左上和右下的x值及y值,现在我们想获取数字1到3就很轻松了,只需找到数字的中心点即可。如想获取数字1,那1的x值约为180(计算方式:(1079-1)/3/2),y值约为81(计算方式:(1546-1385)/2),其他元素举一反三就都能定位到了。


但坐标定位的方法有一定的缺陷,如果换一个手机,屏幕大小不一样坐标会发生变化,这种方法定位也不够稳定,而且如果遇到数字键盘的排列随机变化的话,这种方案也行不通,可以通过图像识别的方式来定位,目前只接触过Airtest,不过感觉对于文字和数字,Airtest的识别并不是很准确。下来可以再调研一下OpenCV的matchTemplate 方法,可以在模板块和输入图像之间寻找匹配,获得匹配结果图像

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  •   JavaScript 与 HTML 之间的交互是通过事件实现的。   事件,就是文档或浏览器窗口中发生的一些特...
    霜天晓阅读 3,538评论 1 11
  • 第一部分 HTML&CSS整理答案 1. 什么是HTML5? 答:HTML5是最新的HTML标准。 注意:讲述HT...
    kismetajun阅读 27,695评论 1 45
  • ¥开启¥ 【iAPP实现进入界面执行逐一显】 〖2017-08-25 15:22:14〗 《//首先开一个线程,因...
    小菜c阅读 6,523评论 0 17
  • 文/葱葱 她在一幅画里 画了好山、好水、好酒 却画不好一个孤独的人 半边喧哗 半边寂寥的脸 岑寂的夜 她的心里长出...
    葱葱_阅读 368评论 21 15
  • 我着急的等待着 你的风化为秋天的露水 不要问我为什么 因为你的心早已没有了回忆 想起那时北风吹雪落满山 你无言立树...
    衰草连天阅读 173评论 0 0