appium-手势密码实现-automationName 是Appium的情况
1. 红色区域的范围为:[66,575][1014,1523], 由于这块是一个整块,所以无法使用每个点的数据;因此只能使用LockPatternView对象拿到左上角的坐标值

2. 原理, 将九宫格分割为6块, 左上角顶部坐标为[66,575], 我们假设为【startX,startY】, 整个区域的高度为height, 宽度为width, 则Xstep = width / 6, Ystep = height / 6. 其中Xstep和Ystep分别表示被分割为6块后,每一块的宽度和高度。
根据上述的变量,我们可以推算出:
第一个点的坐标为【startX+Xstep, startY + Ystep】; 第二个点的坐标为【startX+3*Xstep, startY + Ystep】; 第三个点的坐标为【startX+5*Xstep,startY + Ystep】
第四个点的坐标为【startX+Xstep, startY + 3*Ystep】;依次类推则可获取到9宫格9个点的坐标;

3. 代码如下:这边完成的是一个从中间起点开始的L的手势密码
public void setLockPattern(String id) throws Exception {
if (driver.getPageSource().contains("设置手势密码")) {//检测是否是有手势密码出现
List<AndroidElement> element = driver.findElements(By.xpath(Constant.XPATH_VIEW + "[contains(@resource-id,'" + id + "')]"));
Thread.sleep(1000);//触摸前要等待1秒
AndroidElement gelemt = element.get(0);//获取到这个元素把它当做一个对象来做
int startX = gelemt.getLocation().getX();//获取元素的起始点x坐标
int startY = gelemt.getLocation().getY();//获取元素的起始点y坐标
int height = gelemt.getSize().getHeight();//获取元素的高
int width = gelemt.getSize().getWidth();//获取元素的宽
int xStep = width / 6;//把宽分成6份
int yStep = height / 6;//把高分成6份
int beginX = startX + 3*xStep;//计算触摸起始点x坐标
int beginY = startY + yStep;//计算触摸点y坐标
TouchAction ta = new TouchAction(driver); //初始化TouchAction
//ta.press(beginX, beginY).waitAction(5000).moveTo(0, beginY + 2*yStep).waitAction(5000).moveTo(0, beginY + 4*yStep).waitAction(5000).moveTo((beginX + 2*xStep), beginY + 4*yStep).waitAction(5000).perform();
ta.press(beginX, beginY).moveTo(0, beginY + 2*yStep).moveTo(0, beginY + 4*yStep).moveTo(beginX + 2*xStep, beginY + 4*yStep).release().perform();
sleep(2000);
ta.press(beginX, beginY).moveTo(0, beginY + 2*yStep).moveTo(0, beginY + 4*yStep).moveTo(beginX + 2*xStep, beginY + 4*yStep).release().perform();
logger.info("手势密码设置完毕");
}
}
1) ta.press(beginX,beginY),为从[beginX,beginY]坐标开始; moveTo【x,y】为相对于[beginX,beginY]坐标移动[x,y]的距离, 即最终的坐标为【beginX+x, beginY+y】;
2)waitAction(int ms), 指的是停留多少毫秒;
3)release()方法,指的是释放当前的手势;
4)perform()方法,显示整个手势链条;
5)一般设置手势密码都是要两次才能完成设置操作;
以上情况限于automationName 是Appium的情况;
当automationName 是automator2时, 我的用例就失败了。 坐标整个是乱掉的。解决方法请看下面的博客。原因是底层的实现发生了变化。
appium-手势密码实现-automationName 是automator2
appium-手势密码实现-automationName 是Appium的情况的更多相关文章
- Appium手势密码滑动之Z字形走势(java篇)
1.直接使用负的偏移量appium会报错,在后面加上moveto(1,1)就行了 2.直接看图说话 废话少说看代码如: List<AndroidElement> element = dri ...
- appium-手势密码实现-automationName 是automator2
上一篇博客已经说了 appium-手势密码实现-automationName 是Appium的情况 下面就说一下automator2的情况: 手势密码的moveTo方法的参数进行了改变. 参数是相对于 ...
- Appium 解决手势密码 java
if(driver.getPageSource().contains("绘制解锁图案")){//检测是否是有手势密码出现 List<AndroidElement> el ...
- appium 中手势密码的定位坐标
原文地址http://www.cnblogs.com/smallTestKK/p/5408143.html 1.press方法中的坐标为绝对坐标,moveTO方法中的坐标都是相对坐标,具体来说第一个m ...
- Appium-实现手势密码登陆
前言: 前几天有人问我,手势登陆如何做?于是我找了一个APP试了试,所以本文来总结使用Python+Appium来实现手势密码登陆APP. 环境: MacOS:10.13.4 Appium-deskt ...
- appium_python 实现手势密码
直接上代码吧: from appium.webdriver.common.touch_action import TouchAction from driver import AppiumTest # ...
- appium入门(1)__ appium介绍
摘自:http://www.testclass.net/appium/appium-base-summary/ 1.特点 appium 是一个自动化测试开源工具,支持 iOS 平台和 Android ...
- appium入门级教程(1)—— appium介绍
appium介绍 官方网站与介绍 1.特点 appium 是一个自动化测试开源工具,支持 iOS 平台和 Android 平台上的原生应用,web应用和混合应用. “移动原生应用”是指那些用iOS或者 ...
- Appium笔记(一) 丶Appium的自我介绍
一.我是谁,我的特点是什么 Appium是一款开源测试自动化框架,可用于原生.混合和移动Web应用程序.它使用WebDriver协议驱动iOS,Android和Windows应用程序.重要的是,App ...
随机推荐
- gearman安装实录
花了5个小时装好了gearman,问题不断,坑爹的服务器yum还坏了,悲催. 服务器系统:centos5.3 64位 gearman版本:1.1.8 安装包(相关依赖)下载 1.gearman安装包 ...
- python 删除空白
Python能够找出字符串开头和末尾多余的空白.要确保字符串末尾没有空白,可使用方法rstrip() . >>> favorite_language = 'python ' > ...
- 卷积神经网络CNN在自然语言处理的应用
摘要:CNN作为当今绝大多数计算机视觉系统的核心技术,在图像分类领域做出了巨大贡献.本文从计算机视觉的用例开始,介绍CNN及其在自然语言处理中的优势和发挥的作用. 当我们听到卷积神经网络(Convol ...
- 【洛谷P1962】斐波那契数列
斐波那契数列 题目链接:https://www.luogu.org/problemnew/show/P1962 矩阵A 1,1 1,0 用A^k即可求出feb(k). 矩阵快速幂 #include&l ...
- centos 6.5 配置nginx环境
1.卸载系统中默认的php和httpd [root@x ~]# yum remove httpd* php* Loaded plugins: fastestmirror Setting up Remo ...
- 第34-2题:LeetCode113. Path Sum II
题目 给定一个二叉树和一个目标和,找到所有从根节点到叶子节点路径总和等于给定目标和的路径. 说明: 叶子节点是指没有子节点的节点. 示例: 给定如下二叉树,以及目标和 sum = 22, 5 / \ ...
- 返回固定数据的web服务器
import socket def handle_client(socket_con): """ 接收来自客户端的请求,并接收请求报文,解析,返回 "" ...
- idea中使用逆向工程----三部曲
逆向工程小伙伴可能都知道,可以根据公司大佬的数据库简单创建实体类和dao接口以及mapper的映射文件,逆向工程可能在数据库字段比较少的时候体现不会方便,但是当参与到数据库字段比较多的时候,我们不可能 ...
- PHP常用的自定义函数
PHP常用的自定义函数 目录 php常用自定义函数类下载 php 设置字符编码为utf-8 路径格式化(替换双斜线为单斜线) 转码 打印输出 api返回信息 字符串截取 方法一: 方法二: 数组 字符 ...
- B1005 继续(3n+1)猜想 (25分)
B1005 继续(3n+1)猜想 (25分) 卡拉兹(Callatz)猜想已经在1001中给出了描述.在这个题目里,情况稍微有些复杂. 当我们验证卡拉兹猜想的时候,为了避免重复计算,可以记录下递推过程 ...