奇技淫巧:移动端ui自动化中解决支付安全键盘无法获取的问题

问题的背景

  移动端ui自动化过程中,有时候我们经常会遇到安全支付输入的问题,尤其是笔者所在的金融公司;经常需要输入支付密码,而一般安全键盘往往是特殊绘制而成,隐藏了实现细节,无法通过Android SDK工具uiautomatorviewer获取到,ios更直接获取不到元素的层级关系:例如以下场景:


image.png

解决方法

  常规的解决方法有两类:

  1. 通过opencv图像识别获取,网上已有相关的代码,可以直接参考,然而受限于不同图片的分辨率及大小比例,要想保持一个较高的精确度需要较高的技术水平;
  2. 让开发打包,去除安全键盘的限制;代码入侵,不推荐;

笔者不成熟的解决方法

  由于所测APP安全键盘位置及顺序固定,其实可以通过一定的算法精确获取每个数字控件的坐标轴;分析项目源代码可知,每个数字元素的高度都为50dp,而我们只需要将其换算成像素即可大致算出每个数字在屏幕中的坐标位置,同时也解决了多分辨率的问题。因此我们可选取一个参照物,获取到该元素跟dp的比例作为分辨率;具体代码如下,笔者选取了登陆页面的姓名输入框作为参照物;


具体某个数字坐标轴的获取

根据密码点击坐标轴

欢迎随时交流,针对安全键盘,还没有一个通用的处理方法,例如考虑更复杂的情况,加入键盘上的元素每次都乱序排列又该如何解决?

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

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 174,118评论 25 709
  • 用到的组件 1、通过CocoaPods安装 2、第三方类库安装 3、第三方服务 友盟社会化分享组件 友盟用户反馈 ...
    SunnyLeong阅读 14,744评论 1 180
  • 转载:http://www.jianshu.com/p/e740196225a4本文为作者根据日常使用结合Gson...
    朝花夕拾不起来阅读 1,017评论 0 1
  • 周末的早晨,小鱼赖在被窝不起床。我要去买菜,让她留守。她跟我讲条件,要看手机,不许!要看电视,不许!“你看书吧!”...
    会走的乔木阅读 211评论 0 1