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

 更新时间:2021年04月30日 09:41:05   作者:limingyong92  
python-uiautomator2封装了谷歌自带的uiautomator2测试框架,提供便利的python接口,这篇文章给大家介绍使用Python+uiautomator2实现手机锁屏解锁(期望输入的锁屏密码,基于滑动解锁),感兴趣的朋友一起看看吧

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

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

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

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

以下图片使用Windows画图软件

如图所示,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

下图为网页的截图

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

代码如下:

#_*_ 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实现手机锁屏解锁功能的文章就介绍到这了,更多相关python uiautomator2手机锁屏解锁内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • kafka监控获取指定topic的消息总量示例

    kafka监控获取指定topic的消息总量示例

    今天小编就为大家分享一篇kafka监控获取指定topic的消息总量示例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-12-12
  • python numpy创造图像矩阵示例详解

    python numpy创造图像矩阵示例详解

    这篇文章主要为大家介绍了python numpy创造图像矩阵示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-08-08
  • 浅析Python中压缩zipfile与解压缩tarfile模块的使用

    浅析Python中压缩zipfile与解压缩tarfile模块的使用

    Python 提供了两个标准库模块来处理文件的压缩和解压缩操作:zipfile和tarfile,本文将分享 这两个模块的使用方法,感兴趣的小伙伴可以跟随小编一起学习一下
    2023-10-10
  • Python实现SSH远程登陆,并执行命令的方法(分享)

    Python实现SSH远程登陆,并执行命令的方法(分享)

    下面小编就为大家带来一篇Python实现SSH远程登陆,并执行命令的方法(分享)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-05-05
  • Python读取英文文件并记录每个单词出现次数后降序输出示例

    Python读取英文文件并记录每个单词出现次数后降序输出示例

    这篇文章主要介绍了Python读取英文文件并记录每个单词出现次数后降序输出,涉及Python文件读取、字符串替换、分割以及字典遍历、排序等相关操作技巧,需要的朋友可以参考下
    2018-06-06
  • python中logging库的使用总结

    python中logging库的使用总结

    Python的logging模块提供了通用的日志系统,可以方便第三方模块或者是应用使用,下面这篇文章主要给大家介绍了关于python中logging库使用的一些知识总结,文中给出了详细的示例代码,需要的朋友可以参考借鉴,下面来一起看看吧。
    2017-10-10
  • python3 字符串/列表/元组(str/list/tuple)相互转换方法及join()函数的使用

    python3 字符串/列表/元组(str/list/tuple)相互转换方法及join()函数的使用

    这篇文章主要介绍了python3 字符串/列表/元组(str/list/tuple)相互转换方法及join()函数的使用 ,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-04-04
  • Python读取文件的三种方式总结

    Python读取文件的三种方式总结

    Python的文本处理是经常碰到的一个问题,非常重要的,这篇文章主要和大家分享的是3个Python读取文本文件内容的常用方法,希望对大家深入学习Python有所帮助
    2023-07-07
  • Python3 pandas 操作列表实例详解

    Python3 pandas 操作列表实例详解

    这篇文章主要介绍了Python3 pandas 操作列表实例详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-09-09
  • Python中的流程控制详解

    Python中的流程控制详解

    这篇文章主要介绍了Python中的流程控制的相关资料,帮助大家更好的理解和学习使用python,感兴趣的朋友可以了解下
    2021-02-02

最新评论