分析九宫格定位

整个九宫格是一个 view

 
self.driver.find_element_by_id("com.elc:id/gesturepwd_create_lockview")

屏幕大小 x 720, y 1280

九宫格定位 x 80, y 488, width 640 height 1048

计算出大小 x 80 y 488

width = 640-80 width 等于 560 
height = 1048-488 height 等于 560
九宫格是正方形

计算出第一个坐标 为了好计算,就把坐标的值全部用整数来计算

p11 = int(x + width / 6), int(y + height / 6)
    (173, 581)

计算所有的坐标值

定位方式存在一个字典中

a = {
    "解锁提示": "com.elc:id/gesturepwd_create_text",
    "九宫格": "com.elc:id/gesturepwd_create_lockview",
    "继续": "com.elc:id/right_btn",
}
lock_pattern = self.driver.find_element_by_id(a["九宫格"])
x = lock_pattern.location.get('x')
y = lock_pattern.location.get('y')
width = lock_pattern.size.get('width')
height = lock_pattern.size.get('height')
print(x, y, width, height)
offset = width / 6
p11 = int(x + width / 6), int(y + height / 6)
p12 = int(x + width / 2), int(y + height / 6)
p13 = int(x + width - offset), int(y + height / 6)
p21 = int(x + width / 6), int(y + height / 2)
p22 = int(x + width / 2), int(y + height / 2)
p23 = int(x + width - offset), int(y + height / 2)
p31 = int(x + width / 6), int(y + height - offset)
p32 = int(x + width / 2), int(y + height - offset)
p33 = int(x + width - offset), int(y + height - offset)
print(p11, p12, p13)
print(p21, p22, p23)
print(p31, p32, p33)

80 488 560 560 # 九宫格坐标值 与上面计算的一样
(173, 581) (360, 581) (546, 581)
(173, 768) (360, 768) (546, 768)
(173, 954) (360, 954) (546, 954)

计算滑动偏移量(做的效果图是 7)

p3 = p13[0] - p11[0] # 偏移的值是 373

滑动方法 TouchAction

TouchAction(self.driver).press(x=p11[0], y=p11[1]).move_to(x=p3, y=0).wait(1000).move_to(x=0, y=p3).wait(
        1000).release().perform()

说明 滑动方法

# 横向滑动
从 173 滑动到 546 坐标的偏移量是 546-173 = 373
第一个值不变 press(x=p11[0], y=p11[1]).move_to(x=373, y =0),因为y 的值是相同的,就不变
# 纵向滑动
move_to(x=0, y=373) 因为x的值不变,移动y 的值 
九宫格是正方的形,所以 从第1点到3点是 373, 从3点到9点也是 373

九宫格解锁完毕

这样的写法,不需要固定坐标值,根据不同的设备屏幕大小自动获取到--偏移值

我遇到的坑-- 之前一直以为 TouchAction 的 move_to 是从x y 坐标移动到另一个坐标,而不是偏移量,没有理解清楚,所以这里掉坑里了

最后附上完整的函数

def login_unlock(self):
       a = {
           "解锁提示": "com.elc:id/gesturepwd_create_text",
           "九宫格": "com.elc:id/gesturepwd_create_lockview",
           "继续": "com.elc:id/right_btn",
       }
       unlock_text = self.driver.find_element_by_id(a["解锁提示"])
       lock_pattern = self.driver.find_element_by_id(a["九宫格"])
       x = lock_pattern.location.get('x')
       y = lock_pattern.location.get('y')
       width = lock_pattern.size.get('width')
       height = lock_pattern.size.get('height')
       print(unlock_text.text)
       print(x, y, width, height)
       offset = width / 6
       p11 = int(x + width / 6), int(y + height / 6)
       p12 = int(x + width / 2), int(y + height / 6)
       p13 = int(x + width - offset), int(y + height / 6)
       p21 = int(x + width / 6), int(y + height / 2)
       p22 = int(x + width / 2), int(y + height / 2)
       p23 = int(x + width - offset), int(y + height / 2)
       p31 = int(x + width / 6), int(y + height - offset)
       p32 = int(x + width / 2), int(y + height - offset)
       p33 = int(x + width - offset), int(y + height - offset)

       p3 = p13[0] - p11[0]
       sleep(3)

       TouchAction(self.driver).press(x=p11[0], y=p11[1]).move_to(x=p3, y=0).wait(1000).move_to(x=0, y=p3).wait(
           1000).release().perform()

效果视频

Vimeo

https://v.youku.com/v_show/id_XMjk4NjY0MjQwMA==.html?spm=a2hzp.8244740.0.0

Appium 九宫格 手势解锁的更多相关文章

  1. Appium九宫格滑动解锁

    1.适配各种机型,首先获取整个解锁元素的坐标 2.代码实现 WebElement lockPattern = driver.findElement(By.id("com.android.se ...

  2. appium 九宫格解锁招商银行手机客户端app

    之前研究了一段时间的appium for native app 相应的总结如下:                                            appium测试环境搭建 :ht ...

  3. iOS-高仿支付宝手势解锁(九宫格)

    概述 高仿支付宝手势解锁, 通过手势枚举去实现手势密码相对应操作. 详细 代码下载:http://www.demodashi.com/demo/10706.html 基上篇[TouchID 指纹解锁] ...

  4. [iOS UI进阶 - 5.0] 手势解锁Demo

    A.需求 1.九宫格手势解锁 2.使用了绘图和手势事件   code source: https://github.com/hellovoidworld/GestureUnlockDemo     B ...

  5. 【Android - 自定义View】之自定义九宫格手势解锁控件

    首先来介绍一下这个自定义View: (1)这个自定义View的名称叫做 LockView ,继承自View类: (2)这个自定义View实现了应用中常见的九宫格手势解锁功能,可以用于保证应用安全: ( ...

  6. Swift 简简单单实现手机九宫格手势密码解锁

    原文:Swift 简简单单实现手机九宫格手势密码解锁 大家可以看到我之前的文章[HTML5 Canvas简简单单实现手机九宫格手势密码解锁] 本文是使用苹果语言对其进行了移植 颜色配色是拾取的支付宝的 ...

  7. HTML5 Canvas简简单单实现手机九宫格手势密码解锁

    原文:HTML5 Canvas简简单单实现手机九宫格手势密码解锁 早上花了一个半小时写了一个基于HTML Canvas的手势解锁,主要是为了好玩,可能以后会用到. 思路:根据配置计算出九个点的位置,存 ...

  8. iOS--开发之手势解锁

    本文主要介绍通过手势识别实现手势解锁功能,这个方法被广泛用于手机解锁,密码验证,快捷支付等功能实现.事例效果如下所示. 首先,我们先分析功能的实现过程,首先我们需要先看大致的实现过程: 1.加载九宫格 ...

  9. APP九宫格滑动解锁的处理

    写手机自动化测试脚本关于APP九宫格滑动解锁方面采用了appium API 之 TouchAction 操作. 先是用uiautomatorviewer.bat查询APP元素坐标: 手工计算九宫格每个 ...

随机推荐

  1. Linux下安装PCRE

    原文链接:https://www.linuxidc.com/Linux/2015-03/114986.htm PCRE(Perl Compatible Regular Expressions)是一个轻 ...

  2. springboot配置server相关配置&整合模板引擎Freemarker、thymeleaf&thymeleaf基本用法&thymeleaf 获取项目路径 contextPath 与取session中信息

    1.Springboot配置server相关配置(包括默认tomcat的相关配置) 下面的配置也都是模板,需要的时候在application.properties配置即可 ############## ...

  3. 【转】python模块分析之hashlib加密(二)

    [转]python模块分析之hashlib加密(二) hashlib模块是用来对字符串进行hash加密的模块,明文与密文是一一对应不变的关系:用于注册.登录时用户名.密码等加密使用.一.函数分析:1. ...

  4. mac配置supervisor

    mac配置supervisor 安装 brew install supervisor 启动 一种是手动 supervisord -c /usr/local/etc/supervisord.ini 让s ...

  5. window10 matlabR2015b 安装minGw

    第一步:下载TDM-GCC(注意看清是32位还是64位),TDM-GCC的安装路径不要包括空格: http://tdm-gcc.tdragon.net/download 第二步:点击“我的电脑”右键“ ...

  6. dmp文件的导入导出

    一.dmp文件的导入 方法一(需安装PLSQL) 1.运行PLSQL,在oracle登陆窗口输入用户名和密码登陆到数据库 2.运行工具>导入表,弹出导入对话框 3.单击下方选择文件按钮,在弹出对 ...

  7. 设计模式C++学习笔记之十八(Visitor访问者模式)

      18.1.解释 概念:表示一个作用于某对象结构中的各元素的操作.它使你可以在不改变各元素的类的前提下定义作用于这些元素的新操作. main(),客户 IVisitor,访问者接口 CBaseVis ...

  8. Python Web开发框架Django

    花了两周时间,利用工作间隙时间,开发了一个基于Django的项目任务管理Web应用.项目计划的实时动态,可以方便地被项目成员查看(^_^又重复发明轮子了).从前台到后台,好好折腾了一把,用到:HTML ...

  9. codeforces 38G - Queue splay伸展树

    题目 https://codeforces.com/problemset/problem/38/G 题意: 一些人按顺序进入队列,每个人有两个属性,地位$A$和能力$C$ 每个人进入时都在队尾,并最多 ...

  10. percona mysql server5.7基于gtid的主从复制

    配置mysql基于gtid主从复制架构 一.二进制安装mysql [root@node5 data]# --Linux.x86_64.ssl101.tar.gz [root@node5 data]# ...