Appium自动化测试实现九宫格解锁

目录
  • 背景
  • 高级手势
    • 轻敲(tap)
    • 短按 (press)
    • 长按 (long_press)
    • 等待 (wait)
    • 移动到 (moveTo)
    • 释放 (release)
    • 执行 (perform)
  • 九宫格解锁

背景

我们在操作APP密码解锁里面就有一个九宫格滑动解锁,这时候我们就需要手动连续滑动进行操作,前面提到的swipescrolldrag_and_drop 这些就无法实现解锁操作,我们就需要学会使用高级手势操作

高级手势

高级手势TouchAction可以实现一些针对手势的操作,比如滑动、长按、拖动等。我们可以将这些基本手势组合成一个相对复杂的手势。
想要使用TouchAction,必须要创建TouchAction对象,通过对象调用想要执行的手势,通过perform()执行动作。
使用手势操作,需要导入 TouchAction

from appium.webdriver.common.touch_action import TouchAction

轻敲(tap)

模拟手指对某个元素或坐标按下并快速抬起。比如点击(200, 200)的位置。

方法:

TouchAction(driver).tap(element=None, x=None, y=None)

参数可以是元素,也可以是x,y坐标。

短按 (press)

模拟手指一直按下。

方法:

TouchAction(driver).press(el=None, x=None, y=None)

参数可以是元素,也可以是x,y坐标。

长按 (long_press)

模拟手指长按几秒。

方法:

TouchAction(driver).long_press(el=None, x=None, y=None,duration: int = 1000)

参数可以是元素,也可以是x,y坐标,默认长按 1 秒,单位毫秒

等待 (wait)

模拟手指等待,比如按下后等待5秒之后再抬起。

方法:

TouchAction(driver).wait(ms=0)

参数是暂停的毫秒数。

移动到 (moveTo)

模拟手指移动操作,比如,手势解锁需要先按下,再移动。

方法:

TouchAction(driver).move_to(el=None, x=None, y=None)

参数可以是元素,也可以是x,y坐标。

释放 (release)

模拟手指抬起

方法:

TouchAction(driver).release()

模拟手指对元素或坐标的抬起操作。

执行 (perform)

执行手势操作,相当于发送手势操作命令到手机执行

方法:

TouchAction(driver).perform()

九宫格解锁

现在大部分九宫格就是一整个元素,所以无法通过每个点的元素坐标进行操作,只能通过先获取元素坐标位置,再获取元素大小,然后切割图片,分别计算出每个点的坐标

下图

实现代码

from appium.webdriver.common.touch_action import TouchAction
from appium.webdriver.common.appiumby import AppiumBy
from appium import webdriver
import time

desc = {
    "platformName": "Android",
    "platformVersion": "7.1.2",
    "deviceName": "127.0.0.1:62001",
    "appPackage": "com.android.settings",
    "appActivity": "com.android.settings.ChooseLockPattern",
    "noReset": True,
    "unicodeKeyboard": True,
    "resetKeyboard": True
}
driver = webdriver.Remote("http://127.0.0.1:4723/wd/hub", desc)
driver.implicitly_wait(5)

#获取起始坐标-九宫格左上顶点
loc = driver.find_element(AppiumBy.ID, "com.android.settings:id/lockPattern").location

# 获取九宫格元素大小
loc_size = driver.find_element(AppiumBy.ID, "com.android.settings:id/lockPattern").size

# 获取分割后的均值,即下面要用到的九宫格的步长
step = loc_size["width"] / 6
step_x = loc_size["width"] / 6
step_y = loc_size["height"] / 6

# 计算出每个点的坐标
point1 = (loc["x"] + step, loc["y"] + step)
point2 = (point1[0] + step * 2, point1[1])
point3 = (point2[0], point2[1] + step * 2)
point4 = (point3[0] + step * 2, point3[1])

# 进行滑动操作
TouchAction(driver).press(x=point1[0], y=point1[1]).wait(500). \
    move_to(x=point2[0], y=point2[1]). \
    move_to(x=point3[0], y=point3[1]). \
    move_to(x=point4[0], y=point4[1]). \
    release().perform()

time.sleep(10)
driver.quit()

说明

在计算各个点的坐标时,为什么是 6 等分,我们可以大概画一下线估算出来,或者找UI设计图可以计算

到此这篇关于Appium自动化测试实现九宫格解锁的文章就介绍到这了,更多相关Appium 九宫格解锁内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Appium Python自动化测试之环境搭建的步骤

    Appium简介 Appium是一个自动化测试开源工具,支持IOS和Android平台上的移动原生应用.移动Web应用和混合应用.所谓的"移动原生应用"是指那些用IOS或者Android SDK写的应用:所谓的"移动Web应用"是指使用移动浏览器方位的应用(Appium支持IOS上的Safari和Android上的Chrome):所谓的"混合应用"是指原生代码封装网页视图(原生代码和Web内容交互).更重要的是,Appium是一个跨平台的工具,它

  • Python+appium框架原生代码实现App自动化测试详解

    step1:首先介绍下python+appium的框架结构,如下截图所示 (1):apk目录主要放置待测app的apk资源: (2):config目录主要放置配置文件信息,包含:数据库连接配置.UI自动化脚本中所需的页面元素信息及app启动信息.自动化报告邮件发送配置信息.接口请求的对应的url信息等[大家可根据待测app的功能添加或减少配置文件信息]. (3):report目录主要放置测试完成后生成的测试报告信息: (4):src目录下包含的目录如下 common目录:app启动方法的封装文件

  • Java进行Appium自动化测试的实现

    本文介绍如何在eclipse中使用Java进行Appium自动化测试 前提条件 1.配置好了java环境 2.安装了eclipse 3.安装了Maven 4.安装了Android模拟器.我用的夜神模拟器,下载地址:https://www.yeshen.com/ 5.能够正常连接Android模拟器 (1)模拟器进入开发者模式 在模拟器中,点击 设置->关于平板电脑->版本号(多次点击) (2)检查adb版本 cmd中输入 adb version查看Android SDK的adb版本 进入夜神模

  • Appium+Python+pytest自动化测试框架的实战

    菜鸟一枚,写的不好勿喷,大家一起学习 先简单介绍一下目录,再贴一些代码,代码里有注释 Basic目录下写的是一些公共的方法,Data目录下写的是测试数据,image存的是测试失败截图,Log日志文件,Page测试的定位元素,report测试报告,Test测试用例,pytest.ini是pytest启动配置文件,requirements.txt需要安装的py模块,run.py运行文件 Basic/base.py 里面封装了 一些方法,元素的点击,输入,查找,还有一些自己需要的公共方法也封装在里面,

  • Python与Appium实现手机APP自动化测试的示例代码

    目录 1.什么是Appium 2.启动一个app自动化程序的步骤 3.appium服务介绍 4. appium客户端使用 5.adb的使用 6.Appium启动过程分析 1.什么是Appium appium是一个开源的测试自动化框架,可以与原生的.混合的和移动的web应用程序一直使用.它使用WebDriver协议驱动IOS(内置的测试引擎xcuitest).Android(uiautomator2,Espresso)和Windows应用程序 原生应用程序:安卓程序是用JAVA或kotlin开发出

  • python+appium实现自动化测试的示例代码

    目录 1.什么是Appium 2.启动一个app自动化程序的步骤 3.appium服务介绍 4. appium客户端使用 5.adb的使用 6.Appium启动过程分析 1.什么是Appium appium是一个开源的测试自动化框架,可以与原生的.混合的和移动的web应用程序一直使用.它使用WebDriver协议驱动IOS(内置的测试引擎xcuitest).Android(uiautomator2,Espresso)和Windows应用程序 原生应用程序:安卓程序是用JAVA或kotlin开发出

  • 详解appium自动化测试工具(monitor、uiautomatorviewer)

    appium 是一个自动化测试开源工具,支持iOS和 Android平台上的原生应用,web应用和混合应用. 移动原生应用:单纯用ios或者android开发语言编写的.针对具体某类移动设备.可直接被安装到设备里的应用,一般可通过应用商店获取,比如某个游戏app: 移动web应用:使用移动浏览器访问的应用(appium支持iOS上的Safari和Android上的Chrome),不需要下载到设备上,而是通过浏览器直接访问,比如H5九曲封神游戏: 混合应用:同时使用网页语言与程序语言开发,通过应用

  • Python+Appium自动化测试的实战

    目录 一.环境准备 二.真机测试 一.环境准备 1.脚本语言:Python3.x IDE:安装Pycharm 2.安装Java JDK .Android SDK 3.adb环境,path添加E:\Software\Android_SDK\platform-tools 4.安装Appium for windows,官网地址http://appium.io/ 点击下载按钮会到GitHub的下载页面,选择对应平台下载 安装完成后,启动Appium,host和port默认的即可,然后设置Android

  • Appium自动化测试实现九宫格解锁

    目录 背景 高级手势 轻敲(tap) 短按 (press) 长按 (long_press) 等待 (wait) 移动到 (moveTo) 释放 (release) 执行 (perform) 九宫格解锁 背景 我们在操作APP密码解锁里面就有一个九宫格滑动解锁,这时候我们就需要手动连续滑动进行操作,前面提到的swipe.scroll.drag_and_drop 这些就无法实现解锁操作,我们就需要学会使用高级手势操作. 高级手势 高级手势TouchAction可以实现一些针对手势的操作,比如滑动.长

  • Android自定义控件实现九宫格解锁功能

    最终Android九宫格解锁效果如下 1.进行定义实体point点 public class Point { private float x; private float y; //正常模式 public static final int NORMAL_MODE = 1; //按下模式 public static final int PRESSED_MODE = 2; //错误模式 public static final int ERROR_MODE = 3; private int state

  • Android实现九宫格解锁的方法

    相信大家都有使用九宫格解锁,比如在设置手机安全项目中,可以使用九宫格解锁,提高安全性,以及在使用支付功能的时候,为了提高安全使用九宫锁,今天就为大家介绍Android实现九宫格的方法,分享给大家供大家参考.具体如下: 运行效果截图如下: 具体代码如下: 布局文件如下: <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas

  • 轻松实现安卓(Android)九宫格解锁

    效果图 思路 首先我们来分析一下实现九宫格解锁的思路:当用户的手指触摸到某一个点时,先判断该点是否在九宫格的某一格范围之内,若在范围内,则该格变成选中的状态:之后用户手指滑动的时候,以该格的圆心为中心,用户手指为终点,两点连线.最后当用户手指抬起时,判断划过的九宫格密码是否和原先的密码匹配. 大致的思路流程就是上面这样的了,下面我们可以来实践一下. Point 类 我们先来创建一个 Point 类,用来表示九宫格锁的九个格子.除了坐标 x ,y 之外,还有三种模式:正常模式.按下模式和错误模式.

  • Android 仿小米锁屏实现九宫格解锁功能(无需图片资源)

    最近公司要求做个九宫格解锁,本人用的是小米手机,看着他那个设置锁屏九宫格很好看,就做了该组件,不使用图片资源,纯代码实现. 尊重每个辛苦的博主,在http://blog.csdn.net/mu399/article/details/38734449的基础上进行修改 效果图: 关键代码类: MathUtil.Java /** * @author SoBan * @create 2016/12/5 15:52. */ public class MathUtil { public static dou

  • Android实现九宫格解锁的实例代码

    当年感觉九宫格解锁很是高大上,一脸懵逼,今天正好要做解锁这一块业务,回头来看九宫格,这特么简单啊 首先理清一下逻辑,我们要做NxN的九宫格 下图是3x3的简单图例 // -(--)-(--)-(--)- // -(--)-(--)-(--)- // -(--)-(--)-(--)- 我们就把九宫格分解成 外圆 .内圆.连线三部分 外圆半径Radius,内圆半径dp(5) 建立一个集合来放置 外圆的圆心( 内圆的圆心也一样) private ArrayList<Point> mListCircl

  • Appium自动化测试实现H5页面元素定位

    目录 简介 H5元素定位准备工作 Webview 调试模式是否开启检查 拿到H5页面地址和chrom版本信息 实战案例 简介   在现在的移动端App中,由于开发效率.需求频繁变更的需求情况下,经常有相关的运营需求,经常要进行更新,如果全部采用原生开发,需要的成本比较高,后来就出现了内嵌的H5页面.那么这些H5页面元素该如何进行定位操作呢?   针对这种H5场景直接使用前面所讲的方法来进行定位是不行,因为前面的都是基于Andriod原生控件进行元素定位,而Web网页是单独的B/S架构,两者的运行

随机推荐