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

 更新时间:2022年02月15日 09:22:06   作者:测试之路king  
本文主要介绍了Appium自动化测试实现九宫格解锁,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

背景

我们在操作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 九宫格解锁内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 利用Python爬取微博数据生成词云图片实例代码

    利用Python爬取微博数据生成词云图片实例代码

    这篇文章主要给大家介绍了关于利用Python爬取微博数据生成词云图片的相关资料,文中通过示例代码介绍非常详细,对大家学习或者使用python具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧。
    2017-08-08
  • tensorflow基本操作小白快速构建线性回归和分类模型

    tensorflow基本操作小白快速构建线性回归和分类模型

    这篇文章主要介绍了tensorflow基本操作,快速构建线性回归和分类模型,图文代码示例非常详细,有需要的朋友可以借鉴参考下,希望可以对大家有所帮助
    2021-08-08
  • Python如何批量生成和调用变量

    Python如何批量生成和调用变量

    这篇文章主要介绍了Python如何批量生成和调用变量,帮助大家更好的理解和学习python,感兴趣的朋友可以了解下
    2020-11-11
  • 使用Python遍历文件夹实现查找指定文件夹

    使用Python遍历文件夹实现查找指定文件夹

    这篇文章主要为大家介绍了如何使用Python遍历文件夹从而实现查找指定文件夹下所有相同名称的文件、所有相同后缀名的文件,感兴趣的可以了解一下
    2022-07-07
  • 详解用Python调用百度地图正/逆地理编码API

    详解用Python调用百度地图正/逆地理编码API

    这篇文章主要介绍了详解用Python调用百度地图正/逆地理编码API,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-07-07
  • 10个Python常用的损失函数及代码实现分享

    10个Python常用的损失函数及代码实现分享

    损失函数是一种衡量模型与数据吻合程度的算法。损失函数测量实际测量值和预测值之间差距的一种方式。本文为大家总结了10个常用的损失函数及Python代码实现,需要的可以参考一下
    2022-09-09
  • tensorflow实现二维平面模拟三维数据教程

    tensorflow实现二维平面模拟三维数据教程

    今天小编就为大家分享一篇tensorflow实现二维平面模拟三维数据教程,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-02-02
  • python torch.utils.data.DataLoader使用方法

    python torch.utils.data.DataLoader使用方法

    这篇文章主要介绍了python torch.utils.data.DataLoader使用方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-04-04
  • python函数enumerate,operator和Counter使用技巧实例小结

    python函数enumerate,operator和Counter使用技巧实例小结

    这篇文章主要介绍了python函数enumerate,operator和Counter使用技巧,结合实例形式总结分析了python内置函数enumerate,operator和Counter基本功能、原理、用法及操作注意事项,需要的朋友可以参考下
    2020-02-02
  • Python字符串匹配之6种方法的使用详解

    Python字符串匹配之6种方法的使用详解

    这篇文章主要介绍了Python字符串匹配之6种方法的使用详解,在文末给大家提到了python正则表达的说明,感兴趣的朋友跟随小编一起学习吧
    2019-04-04

最新评论