安卓UI自动化--解决控件元素被遮挡的问题

背景:在做移动端UI自动化的时候,可能会碰到某目标控件元素被遮挡的情况,我们知道自动化的点击操作是点击控件元素的中心位置,这就给我们提供了思路。在采用PO(Page Object)模式的情况下,自己所负责的项目的APP页面大的框架一般不会有大的变动,以“今日头条”举例说明。
一、确定页面上下遮挡的组件
在这里插入图片描述

对于头条的首页,可以看到顶部的导航栏和底部的导航栏是固定位置的,页面滑动时会被这两个导航栏遮住,但是页面获取的XML中还是会有对应的控件,这就导致了我们点不到,比如途中底部的三张图片
在这里插入图片描述

二、获取上下边界的Y坐标与目标点击元素的中心Y坐标
显然,元素被遮挡无法点击是因为目标元素的中心点的Y坐标对于我们“不可见”,顶部遮挡时,是目标元素中心Y坐标小于顶部导航栏的下边界,底部遮挡时是目标元素中心Y坐标大于底部导航栏的上边界。
使用uiautomatorviewer可以看到导航栏的边界坐标
在这里插入图片描述
在这里插入图片描述
这两个坐标代表着起始坐标(左上角),尾坐标(右下角),那么我们在顶部遮挡元素要的就是他的右下角坐标的Y坐标(320),或者用起始坐标的Y坐标加上控件的高度也可以。
同理底部元素就简单一些,只需要起始坐标的Y坐标即可(2064)。
在这里插入图片描述
在这里插入图片描述

所以实现的时候比对一下Y坐标,如果是顶部遮挡,就下滑页面,底部遮挡,就上滑页面。一般的导航栏遮挡元素控件高度是确定的,剩下的就是滑动操作的输入值问题了。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值