首先,在解锁状态下,建立一个Session,打开APP。然后,调用press_keycode()方法传入整型数值"26",锁定屏幕。通过implicitly_wait()方法等待两秒后,再次调用press_keycode()方法按下电源键,点亮屏幕。这时候看到的手机界面如下所示:

此时,我们需要调用login_unlock()方法绘制图案解锁手机(预先设置好的解锁图形如上图所示)。

login_unlock()方法的详细介绍如下:

1、通过find_element_by_id()方法找到九宫格的View。

lock_pattern = self.driver.find_element_by_id("com.android.keyguard:id/lockPatternView")

2、通过lock_pattern变量获取View的初始坐标值和宽度高度。

x = lock_pattern.location.get('x')

y = lock_pattern.location.get('y')

width = lock_pattern.size.get('width')

height = lock_pattern.size.get('height')

3、通过宽度计算偏移量。

offset = width / 6

4、通过偏移量计算九宫格内九个点各自的x,y坐标值。

p11 = int(x + width / 6), int(y + height / 6)

p12 = int(x + width / 2), int(y + height / 6)

p13 = int(x + width - offset), int(y + height / 6)

p21 = int(x + width / 6), int(y + height / 2)

p22 = int(x + width / 2), int(y + height / 2)

p23 = int(x + width - offset), int(y + height / 2)

p31 = int(x + width / 6), int(y + height - offset)

p32 = int(x + width / 2), int(y + height - offset)

p33 = int(x + width - offset), int(y + height - offset)

5、计算从当前点移动到下一个点的偏移量。

p3 = p13[0] - p11[0]

6、执行移动操作。

TouchAction(self.driver).press(x=p11[0], y=p11[1]).move_to(x=p3, y=0).wait(1000).move_to(x=0, y=p3).wait(1000).release().perform()

完整代码如下:

import unittest

from appium import webdriver

from appium.webdriver.common.touch_action import TouchAction

from time import sleep

# 图形解锁

class unlockTest(unittest.TestCase):

def test_unlock(self):

desired_caps = {}

desired_caps['platformName'] = 'Android'

desired_caps['platformVersion'] = '4.4.4'

desired_caps['app'] = '/Users/a140/Downloads/test.apk'

desired_caps['deviceName'] = '03083025d0250909'

self.driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps)

# 按电源键,锁屏

self.driver.press_keycode(26)

self.driver.implicitly_wait(2)

# 按电源键,解锁

self.driver.press_keycode(26)

# 调用解锁的方法

self.login_unlock()

# 解锁

def login_unlock(self):

# 通过ID找到九宫格的View

lock_pattern = self.driver.find_element_by_id("com.android.keyguard:id/lockPatternView")

# 获取View的x,y坐标值

x = lock_pattern.location.get('x')

y = lock_pattern.location.get('y')

# 获取View的宽度和高度

width = lock_pattern.size.get('width')

height = lock_pattern.size.get('height')

# 偏移量

offset = width / 6

# 计算九宫格内九个点的x,y坐标值

p11 = int(x + width / 6), int(y + height / 6)

p12 = int(x + width / 2), int(y + height / 6)

p13 = int(x + width - offset), int(y + height / 6)

p21 = int(x + width / 6), int(y + height / 2)

p22 = int(x + width / 2), int(y + height / 2)

p23 = int(x + width - offset), int(y + height / 2)

p31 = int(x + width / 6), int(y + height - offset)

p32 = int(x + width / 2), int(y + height - offset)

p33 = int(x + width - offset), int(y + height - offset)

# 计算移动到下一个点的偏移量

p3 = p13[0] - p11[0]

sleep(3)

# 执行移动操作

TouchAction(self.driver).press(x=p11[0], y=p11[1]).move_to(x=p3, y=0).wait(1000).move_to(x=0, y=p3).wait(

1000).release().perform()

if __name__ == '__main__':

suite = unittest.TestLoader().loadTestsFromTestCase(unlockTest)

unittest.TextTestRunner(verbosity=2).run(suite)

python图案绘制解锁_PythonAppium实现安卓手机图形解锁详解相关推荐

  1. python图案绘制解锁_PythonAppium实现安卓手机图形解锁

    首先,在解锁状态下,建立一个Session,打开APP.然后,调用press_keycode()方法传入整型数值"26",锁定屏幕.通过implicitly_wait()方法等待两 ...

  2. python图案绘制解锁_PythonAppium实现安卓手机图形解锁案例

    首先,在解锁状态下,建立一个Session,打开APP.然后,调用press_keycode()方法传入整型数值"26",锁定屏幕.通过implicitly_wait()方法等待两 ...

  3. 手机OTG 我的世界_【新品教程】GP100安卓手机OTG功能详解

    GP-100已经上市一段时间了,大家在享受它带来的美妙音色的同时也在探索着它的其他功能,比如OTG连接功能.最近我们也收到了很多朋友的私信询问OTG功能的一些问题,很多问题都是关于GP-100怎么在安 ...

  4. Python Matplotlib绘制柱状图(bar和barh函数)详解

    前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理. PS:如有需要Python学习资料的小伙伴可以加点击下方链接自行获取 python免费学习资 ...

  5. excel打开密码忘记了_安卓手机忘记解锁密码怎么办?三招教你打开手机

    安卓手机忘记解锁密码怎么办?三招教你打开手机 手机忘记了解锁密码?某些马虎或记性不好的用户,把密码设的过于复杂,可能就会遇到此类情况.拿去手机店,一般都会给你刷机,但是这种方法处理后里面的联系人,短信 ...

  6. 安卓系统的指纹解锁_安卓手机指纹解锁 手机指纹解锁怎么用 无良小偷的克星 好好玩...

    现在人都比较在乎空间和安全,安全就不用说了,不管什么的安全都特别在意,越安全越好.就拿手机来说,现在的人都离不开的一个物件,哪怕自己不小心把手机遗忘在什么地方,也不希望别人看到自己手机中的任何个人信息 ...

  7. python怎么安装myqr模块-python二维码操作:对QRCode和MyQR入门详解

    python是所有编程语言中模块最丰富的 生活中常见的二维码功能在使用python第三方库来生成十分容易 三个大矩形是定位图案,用于标记二维码的大小.这三个定位图案有白边,通过这三个矩形就可以标识一个 ...

  8. 圆形界面 开启相机_「基础篇三」手机摄影拍照界面详解

    ​[基础篇三]手机摄影拍照界面详解 手机拍照对我们来说已习以为常,每天我们都会用手机相机功能或多或少的拍出几张照片.故手机拍照界面对我们来说也不陌生,但手机拍照界面上的那些按钮,那些功能你都用过吗?你 ...

  9. python统计csv行数_对Python 多线程统计所有csv文件的行数方法详解

    如下所示: #统计某文件夹下的所有csv文件的行数(多线程) import threading import csv import os class MyThreadLine(threading.Th ...

最新文章

  1. windows消息队列。DispatchMessage。 PostMessage
  2. spring:《spring实战》读后感一
  3. 在使用.Net Reflector时发现了一个Bug:)
  4. PMAboutView
  5. brand.php dnfire.cn_能美火灾报警_能美西科姆消防报警主机如何屏蔽故障点_滁州气象...
  6. 理解并取证:DLS网络架构和PPPOE数据帧
  7. [XSY] 绿色(圆方树、树形DP、树上差分)
  8. 分布式文件系统-HDFS(   HDFS全称是Hadoop Distributed System)
  9. mysql关键字及其用法_mysql的优化-explain
  10. Mac电脑如何调整鼠标灵敏度
  11. 所谓周末,就是在家好好做饭、好好睡觉、好好玩游戏
  12. 【路径大全】iphone所有文件路径。CYDIA
  13. Win10+Ubuntu+Deepin+macOS+PhoenixOS+FydeOS+centOS+openSUSE+Kylin+ChromeOS+RedFlag等多系统安装(包含rEFind引导)
  14. python+selenium h5新浪微博自动点赞
  15. 对学计算机学生礼仪,计算机系学生分会社团部主持人和礼仪队选拔大赛计划1.doc...
  16. 那个经常加班的人后来怎么样了?
  17. 气“疯”了!| 经济学人全球早读精选
  18. 小知识点:抛物线的顶点式方程
  19. (AI)人工智能导论实验【A* 算法】
  20. vue+elementui Table组件splice删除表格总是删除最后一行

热门文章

  1. ✖ 48 problems (48 errors, 0 warnings) 45 errors and 0 warnings potentially fixable with the `--fix
  2. 高德地图截屏、标记鼠标跟随示例
  3. PHP中.=和+=是什么意思详解
  4. WIN32,GetBitmapBits与GetPixel
  5. Java做图片上传、文件上传、 批量上传、 Base64图片上传 。附上源码
  6. 读javascript高级程序设计-目录
  7. linux常用命令(包含系统命令)
  8. 千万别再乱点黄色APP了!
  9. win7 安装openssh_Windows安装OpenSSH服务
  10. HHDBCS及HHDESK的资源加密功能