Appium-实现手势密码登陆
前言:
前几天有人问我,手势登陆如何做?于是我找了一个APP试了试,所以本文来总结使用Python+Appium来实现手势密码登陆APP。
环境:
MacOS:10.13.4
Appium-desktop:1.6.1
Xcode:9.3.1
APP:众安保险-iOS版
----
一、Appium API -- TouchAction
Appium的辅助类,主要针对手势操作,比如滑动、长按、拖动等。
1、按压控件
方法:press()
开始按压一个元素或坐标点(x,y)。通过手指按压手机屏幕的某个位置。
举例:
TouchAction(driver).press(x=0,y=308).release().perform()release() 结束的行动取消屏幕上的指针。
Perform() 执行的操作发送到服务器的命令操作。
2、长按控件
方法:longPress()
开始按压一个元素或坐标点(x,y)。 相比press()方法,longPress()多了一个入参,既然长按,得有按的时间吧。duration以毫秒为单位。1000表示按一秒钟。其用法与press()方法相同。
举例:
TouchAction(driver).longPress(x=1 ,y=302,duration=1000).perform().release();
3、移动
方法:moveTo()
将指针(光标)从过去指向指定的元素或点。
举例:
TouchAction(driver).moveTo(x=0,y=308).perform().release();
4、暂停
方法:wait()
暂停脚本的执行,单位为毫秒。
举例:
TouchAction(driver).wait(1000);
二、通过触摸多点坐标进行解锁
根据上面API解释,我们可以得出按压和移动来实现手势解释,大概思路如下:
TouchAction.press(beginX,beginY).moveTo(xStep,yStep).moveTo(xStep,yStep).release().perform();
打开Appium-Inspector来查看手势对应的各个点的坐标。
选择[Swipe By Coordinates],可查看任意点的坐标。可选择手势触摸点的中心位置。如下图所示:作者分别选择左上角的4个点,即可模拟手势来执行登陆操作。
代码如下:
# -*- coding: utf-8 -*-
# @Time : 2018/5/22 下午10:33
# @Author : WangJuan
# @File : appium-ios.py
from time import sleepfrom appium import webdriver
from appium.webdriver.common.touch_action import TouchActioncap = {"platformName": "iOS","platformVersion": "11.4","bundleId": "com.zhongan.insurance","automationName": "XCUITest","udid": "3e8325a7c0d*******************a7e","deviceName": "****Iphone"
}host = "http://0.0.0.0:4728/wd/hub"
driver = webdriver.Remote(host, cap)
sleep(3)
action = TouchAction(driver)
action.press(x=98, y=321).wait(100).move_to(x=208, y=321).wait(100).move_to(x=206, y=432).wait(100).move_to(x=98, y=432).perform().release()
三、兼容不同分辨率
直接用坐标点找会有一些问题,比如手机屏幕大小不同,找点的位置可能会有偏差,如何解决呢?
由下图可见,先获取第一个触摸点的坐标location及size。分别定义为start_height、start_width、start_x、start_y
(其中start_x、start_y
为触摸点左上角的坐标);
即可计算出第一个触摸点的中心点坐标分别为:
start_x + start_width/2
, start_y + start_height/2
然后在计算出第二个触摸点的中心点大致坐标为:
start_x+start_width*2
, y=start_y+start_height*2
其他坐标均可按照此计算方式,详情见具体例子。
# -*- coding: utf-8 -*-
# @Time : 2018/5/22 下午10:33
# @Author : WangJuan
# @File : appium-ios.py
from time import sleepfrom appium import webdriver
from appium.webdriver.common.touch_action import TouchActioncap = {"platformName": "iOS","platformVersion": "11.4","bundleId": "com.zhongan.insurance","automationName": "XCUITest","udid": "3e8325a7c0***************62bd4a7e","deviceName": "My@Iphone"
}host = "http://0.0.0.0:4728/wd/hub"
driver = webdriver.Remote(host, cap)
sleep(3)
action = TouchAction(driver)
# action.press(x=98, y=321).wait(100).move_to(x=208, y=321).wait(100).move_to(x=206, y=432).wait(100).move_to(x=98, y=432).perform().release()
start = driver.find_element_by_xpath('//XCUIElementTypeApplication[@name="众安保险"]/XCUIElementTypeWindow[1]/XCUIElementTypeOther\/XCUIElementTypeOther/XCUIElementTypeOther/XCUIElementTypeOther/XCUIElementTypeOther/XCUIElementTypeOther/XCUIElementTypeOther[1]')
start_height = start.size['height']
start_width = start.size['width']
start_x = start.location['x']
start_y = start.location['y']
begin_x = start_x + start_width/2
begin_y = start_y + start_height/2action.press(x=start_x, y=start_y).wait(100).move_to(x=start_x+start_width*2, y=begin_y).wait(100).move_to\(x=start_x+start_width*2, y=start_y+start_height*2).wait(100).move_to(x=begin_x,y=start_y+start_height*2).perform().release()
以上,对你有帮助的话,请点赞吧️~~
作者:搁浅
出处: http://www.cnblogs.com/xiaoxi-3-/
如果对您有帮助,请关注我的同名简书:https://www.jianshu.com/u/da1677475c27
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
Appium-实现手势密码登陆相关推荐
- php手势解锁,Appium-实现手势密码登陆
前言: 前几天有人问我,手势登陆如何做?于是我找了一个APP试了试,所以本文来总结使用Python+Appium来实现手势密码登陆APP. 环境: MacOS:10.13.4 Appium-deskt ...
- Appium之手势密码
最近在做自动化测试安卓软件,需要测试到手势密码 由于我也是第一次做测试,就上网搜了搜现有的方法,大概是这样的 int startX = welem.getLocation().getX();int s ...
- Appium 解决手势密码 (java篇)
if(driver.getPageSource().contains("绘制解锁图案")){//检测是否是有手势密码出现 List<AndroidElement> el ...
- 九宫格手势密码、指纹密码
九宫格手势密码 项目Github地址 GesturePassword项目 九宫格密码的使用一般分为两种场景: 系统级别的锁屏密码 App级别的登录.启动验证 本篇文章主要介绍的是App级别的启动验证, ...
- 小白也能学会的模拟屏幕滑动与手势密码绘制
前言 App自动化测试中有两个很重要的操作,屏幕滑动与绘制手势密码.目前很多App在启动时,都存在启动时的引导动画或者加载上下文内容时需要手动上滑或者下滑加载页面,所以在自动化测试的过程中模拟手的滑动 ...
- linux屏幕滑动效果实现代码,使用swipe方法模拟屏幕滑动与手势密码绘制
前言 App自动化测试中有两个很重要的操作,屏幕滑动与绘制手势密码.目前很多App在启动时,都存在启动时的引导动画或者加载上下文内容时需要手动上滑或者下滑加载页面,所以在自动化测试的过程中模拟手的滑动 ...
- 支付宝手势密码安全吗?
看微博一条新闻:IOS版支付宝手势密码爆漏洞,然后一堆人利用这个漏洞炒作,攻击支付宝!本着为消费者考虑的角度,本文分析一下这个问题. 这个漏洞应该是逻辑上被绕过了,需要业务逻辑设计者用理论体系去遍历. ...
- ubuntu的SSH的安装和免密码登陆
2019独角兽企业重金招聘Python工程师标准>>> 1.安装SSH $ sudo apt-get install ssh$ sudo apt-get install rsync ...
- 将数据库改为使用登录名密码登陆
如果使用身份验证登陆: 打开左边数据库的安全性.再打开登录名,找到sa 右键 属性 密码修改为自己想要的密码 然后选择左边的状态,将登陆选择启用 连接选择授予 然后在最外层数据库右键 属性 左边选择安 ...
最新文章
- Go 学习笔记(3)— 包概念、包特点、包名约束、main 包、包的声明、包的引用、包初始化
- 第六章 ppp协议实验
- centos vscode安装到指定目录_win10 WSL构建vscode+centos开发环境
- 【ijkplayer】编译 Android 版本的 ijkplayer ④ ( 安装 make yasm 软件 | 执行 compile-ffmpeg.sh all 命令编译 ffmpeg )
- java web容器原理_javaWeb工作原理
- 服务器系统日志有哪些centos,CentOS 分析服务器日志命令
- linux 内核文件结构,linux-011内核文件结构图
- java教务管理系统数据库设计_新手可以学习的教务管理系统详细设计(一)
- 特斯拉第四季度生产超30.5万台车 全年交付近百万台
- 网易将在三亚设立海南总部 建设元宇宙产业基地
- 免费的东东真给力:轻松实现代码变更与缺陷,任务和需求的紧密关联.
- 光纤光信号闪红灯_激光放大器在光纤领域的应用
- python项目报告怎么写_python项目
- 最简单易懂的SpringCloudSleuth教程(spring cloud体系的链路追踪系统)
- 计算几何 - 你绝对找不到比这更好的计算几何
- 第三阶段应用层——1.7 数码相册—电子书(3)—轮询方式支持多输入
- 加一(Java求解)
- C++之重载:函数名的鱼塘
- Java自带的性能监测工具之jstack
- el-submenu中.el-submenu__title选中后背景色不变