前言:

前几天有人问我,手势登陆如何做?于是我找了一个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 sleep

from appium import webdriver

from appium.webdriver.common.touch_action import TouchAction

cap = {

"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 sleep

from appium import webdriver

from appium.webdriver.common.touch_action import TouchAction

cap = {

"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/2

action.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()

以上,对你有帮助的话,请点赞吧❤️~~

Appium 解决手势密码 java

if(driver.getPageSource().contains("绘制解锁图案")){//检测是否是有手势密码出现 List el ...

appium 中手势密码的定位坐标

php手势解锁,Appium-实现手势密码登陆相关推荐

  1. iOS指纹解锁和手势解锁

    前言 一直想写博客来着,一来可以记录一些自己学习和研究的东西,二来也可以将自己写的一些东西分享出去,给他人参考,还可能收到他人的一些建议,从而完善自己的项目和提升自己的技术,这也是一种很好的技术交流方 ...

  2. 微信小程序项目实例——手势解锁

    微信小程序项目实例--手势解锁 文章目录 微信小程序项目实例--手势解锁 一.项目展示 二.设置手势.手势解锁 三.手势重置 文末:项目代码 项目代码见文字底部 一.项目展示 这是一款简单实用的手势解 ...

  3. Appium-实现手势密码登陆

    前言: 前几天有人问我,手势登陆如何做?于是我找了一个APP试了试,所以本文来总结使用Python+Appium来实现手势密码登陆APP. 环境: MacOS:10.13.4 Appium-deskt ...

  4. appium自动化之手势操作总结(附带手势解锁)

    说说常用appium做自动化经常会用到的手势操作.声明:所有的手势操作都会用到这个模块   from appium.webdriver.common.touch_action import Touch ...

  5. canvas实现H5手势密码设置以及手势解锁

    前言 这段时间遇到了一个需求,'我的' 页面有一个快捷登录,用户可以设置手势密码.指纹.以及面部,这篇文章主要是说说手势密码,以前也没有接触过,真是人都麻了,上网查到了一些案例,但是终归和自己需求有所 ...

  6. Vue2 手势解锁密码 / 支付宝手势解锁

    Vue2 手势解锁密码 / 支付宝手势解锁 项目名称: vue-Lock Github地址:https://github.com/guntertien/vue-lock

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

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

  8. 触摸事件练习 -- 手势解锁

    Main.storyboard <?xml version="1.0" encoding="UTF-8" standalone="no" ...

  9. 自定义手势解锁锁控件

    一.控件的使用 模仿市面上app的手势解锁功能,实现的小控件,将控件封装到了一个UIView上 二.核心原理技术 1.触摸事件 (1)UIView的触摸三个触摸响应事件:开始.移动.结束 (2)CGR ...

最新文章

  1. MySQL搭建主从复制架构实战
  2. window oracle 只有bak文件怎么恢复_Oracle 11g R2 RAC数据库备份通过RMAN恢复到单实例数据库实现...
  3. Javascript知识——事件
  4. 巡逻机器人用应用的pc端车牌识别
  5. ssl初一组周六模拟赛【2018.3.10】
  6. ehcache缓存的详细配置
  7. JVM 性能调优监控工具
  8. mysql显示表已存在_「Docker系列」 如何在Docker中部署MySQL数据库?
  9. 如何选择数据可视化工具?
  10. 下列描述中 哪些符合java语言的特征_coreJavaBasic试题带答案
  11. 2018年内蒙古开出4.93亿环保罚单
  12. 谷粒商城:07. pms_catelog.sql
  13. Javascript 高级程序设计第三版理解
  14. 通过PS抠出透明的玻璃瓶
  15. 解析微信小程序码的地址scene
  16. 苹果电脑上可以转化照片格式的几个小工具
  17. mysql用户定义的完整性_Mysql(数据库完整性)
  18. 简析JavaScript 事件绑定、事件冒泡、事件捕获和事件执行顺序
  19. 冒泡排序及其三种写法
  20. java判定成绩等级_Java编程判断一组学生成绩等级

热门文章

  1. 设计师必收藏!!!让你灵感迸发的配色网站
  2. 2020流行的液态风格PNG免扣素材,竟然被我找到了!
  3. MySQl中文1001无标题_Mysql中字段类型不一致导致索引无效的处理办法
  4. OSI参考模型和TCP/IP参考模型-详解
  5. O-RAN Work Group WG工作组划分
  6. pt5 mysql预处理_技术分享 | MySQL 监控利器之 Pt-Stalk
  7. unity小技巧总结
  8. android界面设计所用中文什么字体,「界面」手机界面设计字体大小知多少
  9. centos+gitlab+mysql_centos7安装配置gitlab(使用外部nginx)
  10. OpenShift 4 Tekton - Tekton实现包含Gogs+SonaQube+Nexus+Report+WebHook的Pipeline