美文网首页
Appium ios 移动端App手势指纹解锁

Appium ios 移动端App手势指纹解锁

作者: abrila | 来源:发表于2018-09-12 17:33 被阅读0次

      功能简介:苹果手机离开app界面一分钟,或者熄屏一分钟。如果开启手势密码锁,未开启指纹密码锁回到app界面时会出现手势密码解锁界面。
      已解决问题:已实现可以设置四个点进行手势解锁,找到第一个点的中点坐标,第八个点与第一个点的相对坐标。利用press-moveto-release-perform方法进行手势锁的设置。实际路径为第1个点-第4个点-第5个点-第8个点,我觉着可能是从第1个点无法直接滑到第8个点导致的。不过恰巧也解决了我想要设置四个点的需求。
      未解决问题:因为appium已经不支持press-moveto-moveto-release-perform方法,即多个moveto,在app上实现四个点进行指纹解锁完全是功能探索实现上的一次巧合,并非从根本上解决了这个问题。

    import io.appium.java_client.touch.offset.PointOption;
    public List getLocationn(IOSElement button){
            int startX = button.getLocation().getX();//获取元素的起始点x坐标
            int startY = button.getLocation().getY();//获取元素的起始点y坐标
            int height =  button.getSize().getHeight();//获取元素的高
            int width = button.getSize().getWidth();//获取元素的宽
            int x = startX+width/2;
            int y = startY+height/2;
            List<Integer>al = new ArrayList<Integer>();
            al.add(x);
            al.add(y);
            return al;
        }
    

    这段代码是为了获得每个点的中心坐标

    public void paintPwd() {
            List<IOSElement> UI = findElementsByName("circle normal");
            int x1 = getlocationn(UI.get(0)).indexOf(0);
            int y1 = getlocationn(UI.get(0)).indexOf(1);
            int x2 = getlocationn(UI.get(7)).indexOf(0);
            int y2 = getlocationn(UI.get(7)).indexOf(1);
            TouchAction go = new TouchAction(driver);
            go.press(PointOption.point(x1-0,y1-0))
                    .moveTo(PointOption.point(x2-x1,y2-y1)).release().perform();
        }
    

      这段代码就是实现手势解锁的过程,结果如下


    image.png

      这仅仅只是实现了功能,希望大家有解决不能连续moveto的问题的根本方法的话多多交流。

    相关文章

      网友评论

          本文标题:Appium ios 移动端App手势指纹解锁

          本文链接:https://www.haomeiwen.com/subject/yocvgftx.html