Python+uiautomator2实现手机锁屏解锁功能 您所在的位置:网站首页 屏幕锁屏解锁 Python+uiautomator2实现手机锁屏解锁功能

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

2024-05-31 13:27| 来源: 网络整理| 查看: 265

业务需求:需要测试手机滑动解锁失败时事件的次数及等待的时间,本来想利用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的代码。

整个过程

在移动设备上安装atx-agent(守护进程), 随后atx-agent启动uiautomator2服务(默认7912端口)进行监听在PC上编写测试脚本并执行(相当于发送HTTP请求到移动设备的server端)移动设备通过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

1

pip install --pre -U uiautomator2

设备安装atx-agent

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

1

2

3

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

$ python -m uiautomator2 init

success

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

应用及操作

调用uiautomator2的过程

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

配置手机设备参数

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

1,使用WIFI连接

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

1

2

import uiautomator2 as u2

d = u2.connect('192.168.0.100')

2.使用USB连接

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

1

2

import uiautomator2 as u2

d = u2.connect_usb('123456f')

抓取手机上应用的控件

我这里使用的weditor,

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

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

下图为网页的截图

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

代码如下:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

#_*_ 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)

效果图:

​现在我也找了很多测试的朋友,做了一个分享技术的交流群,共享了很多我们收集的技术文档和视频教程。 如果你不想再体验自学时找不到资源,没人解答问题,坚持几天便放弃的感受 可以加入我们一起交流。而且还有很多在自动化,性能,安全,测试开发等等方面有一定建树的技术大牛 分享他们的经验,还会分享很多直播讲座和技术沙龙 可以免费学习!划重点!开源的!!! qq群号:485187702【暗号:csdn11】

最后感谢每一个认真阅读我文章的人,看着粉丝一路的上涨和关注,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走! 希望能帮助到你!【100%无套路免费领取】



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有