首页 > 编程语言 >Python+uiautomator2实现手机锁屏解锁功能

Python+uiautomator2实现手机锁屏解锁功能

时间:2023-12-25 20:33:48浏览次数:28  
标签:Python 锁屏 times python 手机 uiautomator2 u2 设备


业务需求:需要测试手机滑动解锁失败时事件的次数及等待的时间,本来想利用Python+Appium实现,但是Appium运行时自动给我解锁了....

部分解释摘抄自:https://testerhome.com/topics/11357

python-uiautomator2是一个自动化测试开源工具,仅支持Android平台的原生应用测试

python-uiautomator2封装了谷歌自带的uiautomator2测试框架,提供便利的python接口。他允许测试人员直接在PC上编写Python的测试代码,操作手机应用,完成自动化,大大提高了自动化代码编写的效率

以下图片使用Windows画图软件

Python+uiautomator2实现手机锁屏解锁功能_接口测试

如图所示,python-uiautomator2主要分为两个部分,python客户端,移动设备

  • python端: 运行脚本,并向移动设备发送HTTP请求
  • 移动设备:移动设备上运行了封装了uiautomator2的HTTP服务,解析收到的请求,并转化成uiautomator2的代码。

整个过程

  1. 在移动设备上安装atx-agent(守护进程), 随后atx-agent启动uiautomator2服务(默认7912端口)进行监听
  2. 在PC上编写测试脚本并执行(相当于发送HTTP请求到移动设备的server端)
  3. 移动设备通过WIFI或USB接收到PC上发来的HTTP请求,执行制定的操作

安装工具

  • Python2或者Python3均可。(也可以尝试使用Android上Python客户端:QPython)
  • 移动设备

环境搭建

安装adb

如命令行可以执行adb devices,则跳过此步骤
从谷歌官网下载Android Platform Tools https://developer.android.com/studio/releases/platform-tools.html,解压,并加包含adb.exe的目录加入到系统的PATH中。

安装python-uiautomator2

pip install --pre -U uiautomator2

设备安装atx-agent

首先设备连接到PC,并能够adb devices发现该设备。

# 从github下载atx-agent文件,并推送到手机。在手机上安装包名为`com.github.uiautomator`的apk
$ python -m uiautomator2 init
success

最后提示success,代表atx-agent初始化成功。

应用及操作

调用uiautomator2的过程

  1. 配置手机设备参数,设置具体操作的是哪一台手机
  2. 抓取手机上应用的控件,制定对应的控件来进行操作
  3. 对抓取到的控件进行操作,比如点击、填写参数等。

配置手机设备参数

python-uiautomator2连接手机的方式有两种,一种是通过WIFI,另外一种是通过USB。两种方法各有优缺点。
WIFI最便利的地方要数可以不用连接数据线,USB则可以用在PC和手机网络不在一个网段用不了的情况。

1,使用WIFI连接

手机获取到手机的IP,并确保电脑可以PING通手机。手机的IP可以在设置-WIFI设置里面获取到。
比如手机的IP是192.168.0.100,连接设备的代码为

import uiautomator2 as u2
d = u2.connect('192.168.0.100')

2.使用USB连接

手机的序列号可以通过adb devices获取到,假设序列号是123456f,连接代码为

import uiautomator2 as u2
d = u2.connect_usb('123456f')

抓取手机上应用的控件

我这里使用的weditor,

1.终端中输入 pip install weditor安装weditor

2.终端中输入python -m weditor启动weditor

下图为网页的截图

Python+uiautomator2实现手机锁屏解锁功能_接口测试_02

然后再选取元素定位就可以完成本次需求

代码如下:

#_*_ coding:utf-8_*_
import uiautomator2 as u2
import re
import time
 
STOP_COUNT=150
d = u2.connect()
 
#输入滑动解锁码
def do_password(count):
#通过weditor获取到的图案位置
d.swipe_points([(0.304, 0.431), (0.507, 0.435), (0.5, 0.636)], 0.1)
 
 
#检验是否输入正确
def do_check():
#检查输入密码是否达到现在
if d(resourceId="android:id/message").exists:
message = d(resourceId="android:id/message").get_text()
#取得输密码的次数
times = re.findall('\d+', message)[0]
#需要等待的时间
timeout = re.findall('\d+', message)[1]
print("暂时不能输入密码,这是第$s次输入,需要等待%s才可以再次输入" % (times, timeout))
return True, times, timeout
else:
print("可以输入")
return False, 0, 0
 
 
count = 0
 
while True:
ret, times, timeout = do_check()
if ret:
d.screenshot(times + "times_" + timeout + "s.jpg")
if int(times) >= STOP_COUNT:
break
time.sleep(int(timeout))
d(resourceId="android:id/button3").click()
count = count + 1
do_password(count)

效果图:

Python+uiautomator2实现手机锁屏解锁功能_程序员_03


标签:Python,锁屏,times,python,手机,uiautomator2,u2,设备
From: https://blog.51cto.com/u_15333581/8971753

相关文章

  • python中的unittest框架实例详解
    在python中我们学习了不少理论知识,那么对相关的程序进行测试,就显得很重要了。本篇要讲的是unittest框架,我们可以用它来做一些测试工作,又或者是相关代码的编写。下面我们就unittest框架的说明、特性和4种字模块分别带来介绍,大家一起来看具体内容。1.unittest说明unittest是Python自......
  • Python 如何在测试中使用 Mock
    Mock概念mock的意思是模拟,也就是模拟接口返回的信息,用已有的信息替换它需要返回的信息,从实现对所依赖的模块的测试。一般有两种场景:前端对后端接口的mock,后端服务之间的测试中涉及的mock,常常发生在单元测试的时候。前端mock可以通过一些工具来完成:使用抓包工具Fiddler,Charles来......
  • Python内置语法手册
    一、引入​ 在Python中有很多不常见内置函数,内置语法,为了方便查阅使用。现在将它们进行归纳。二、内置函数#abs():返回数字的绝对值abs(-7)#>>>7#all():如果参数里的可迭代对象中所有值都是True,则返回True。空值为Falseall(['1','',1])#>>>False#any():如果可......
  • python测试框架unittest和pytest区别
    一、用例编写规则(1)unittest提供了testcases、testsuites、testfixtures、testrunner相关的类,让测试更加明确、方便、可控。使用unittest编写用例,必须遵守以下规则:测试文件必须先importunittest测试类必须继承unittest.TestCase测试方法必须以“test_”开头测试类必须要有un......
  • Python 中 key 参数的含义及用法
    哈喽大家好,我是咸鱼我们在使用sorted()或map()函数的时候,都会看到里面有一个key参数其实这个key参数也存在于其他内置函数中(例如min()、max()等),那么我们今天就来了解一下key参数的含义以及用途吧!原文:https://www.thepythoncodingstack.com/p/the-key-to-the-key-p......
  • pdm符合最新PEP标准的现代python 包以及依赖管理工具
    pdm符合最新PEP标准的现代python包以及依赖管理工具支持的特性简单快速的维护依赖解析,主要为了构建大的二进制分发PEP517构建后端PEP621项目元数据灵活强大的插件系统多功能用户脚本类似pnpm的中心化安装优化安装命令使用过的mac系统的 brewin......
  • 将Python转换为exe文件并更换图标的方法
    使用python语言可以很方便的编写一些脚本来帮助我们完成测试等工作,但是python的运行需要依赖于python库,如果没有python库就无法正常运行脚本完成工作。那么有没有什么办法,可以在不依赖库的前提下执行脚本?我们可以将python转换成exe可执行文件,这样生成的exe可执行文件就不需要以来p......
  • Python中的变量是什么?数据类型又有哪些?
    Python语言的基础构成要素:变量与数据类型。因为不仅是Python,变量与数据类型可以说是所有编程语言的核心。掌握了语言的变量与数据类型的体系,可以说就掌握了这门语言的一大半儿。1、什么是变量我们都知道应用程序在运行阶段的数据存放在内存中,那实现应用程序的编程语言是怎么操......
  • 随机幸运号码自动生成器之Python宝典【下】
    一、背景在随机幸运号码自动生成器之Python宝典【上】中,成功开发了一个能够展示幸运号码并且能够动态显示当前时间的浮动小工具,需要在有Python环境的电脑上运行。本文将介绍如何将小工具打包成exe并使其能够自动在windows电脑上运行二、步骤打包exe之前的文章中已经详细介绍过pyins......
  • Python——Html(HEAD头部)
    HTML中HEAD头部设置(了解)在HTML中,<head>元素是文档的头部部分,通常包含了一些关于文档的元信息和链接到外部资源的标签。以下是一些常见的<head>元素中使用的标签及其作用:<title>:设置网页的标题设置网页的标题,显示在浏览器的标题栏或标签页上。示例:<head><title>M......