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手机锁屏解锁内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • 详解python uiautomator2 watcher的使用方法

    该方是基于uiautomator2如下版本进行验证的: PS C:\windows\system32> pip show uiautomator2 Name: uiautomator2 Version: 1.2.2 Summary: Python Wrapper for Android UiAutomator2 test tool Home-page: https://github.com/codeskyblue/uiautomator2 Author: codeskyblue Author-e

  • Python中Selenium模拟JQuery滑动解锁实例

    本文介绍了Python中Selenium模拟JQuery滑动解锁实例,分享给大家,也给自己留个笔记 滑动解锁一直做UI自动化的难点之一,我补一篇滑动解锁的例子,希望能给初做Web UI自动化测试的同学一些思路. 首先先看个例子. 当我手动点击滑块时,改变的只是样式: 1.slide-to-unlock-handle 表示滑块,滑块的左边距在变大(因为它在向右移动嘛!) 2.Slide-tounlock-progress 表示滑过之后的背景黄色,黄色的宽度在增加,因为滑动经过的地方都变黄了. 除些

  • 利用Python批量提取Win10锁屏壁纸实战教程

    前言 相信使用Win10的朋友会发现,每次开机锁屏界面都会有不一样的漂亮图片,这些图片通常选自优秀的摄影作品,十分精美. 但是由于系统会自动更换这些图片,所以就算再好看的图片,也许下次开机之后就被替换掉了. 借助Python,我们可以用简单的几行代码,批量提取这些精美的锁屏图片.把喜欢的图片设置成桌面背景,就不用担心被替换掉啦. 下面话不多说了,来一起看看详细的介绍吧. 提取原理 Win10系统会自动下载最新的锁屏壁纸,并将他们保存在一个系统文件夹中,路径是C:\Users\[用户名]\AppD

  • python 使用uiautomator2连接手机设备的实现

    1. 安装ADB 地址:https://developer.android.google.cn/studio/releases/platform-tools?hl=en 下载对应环境的工具 解压 之后设置环境变量 右键我的电脑->属性 然后按下图顺序 最后添加platform-tools的路径保存即可 设置好后cmd打开命令行 输入adb version 可以查看adb版本信息 ok~ 2. 安装uiautomator2 python下载uiautomator2包 pip install --p

  • Python+uiautomator2实现自动刷抖音视频功能

    工具准备 Python3.7.7 adb(Android debug bridge) uiautomatorviewer 安装adb 官网地址:https://developer.android.google.cn/studio/command-line/adb 下载好解压后设置环境变量即可 安装uiautomatorviewer 参照此篇文章:https://www.cnblogs.com/corsacsherry/p/10609339.html 调试工具 手机通过USB连接到电脑上开启开发者

  • python UIAutomator2使用超详细教程

    一.环境要求 python 3.6+ android 4.4+ 二.介绍 uiautomator2 是一个可以使用Python对Android设备进行UI自动化的库.其底层基于Google uiautomator,Google提供的uiautomator库可以获取屏幕上任意一个APP的任意一个控件属性,并对其进行任意操作. 三.库地址 GitHub地址: https://github.com/openatx/uiautomator2 https://github.com/openatx/uiau

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

    业务需求:需要测试手机滑动解锁失败时事件的次数及等待的时间,本来想利用Python+Appium实现,但是Appium运行时自动给我解锁了.... 部分解释摘抄自:https://testerhome.com/topics/11357 python-uiautomator2是一个自动化测试开源工具,仅支持Android平台的原生应用测试 python-uiautomator2封装了谷歌自带的uiautomator2测试框架,提供便利的python接口.他允许测试人员直接在PC上编写Python的

  • python实现windows倒计时锁屏功能

    python实现windows倒计时锁屏功能 # 倒计时锁屏 import time from ctypes import * def closewindows(closetime): while closetime>0: print(closetime) time.sleep(1) closetime-=1 user32 = windll.LoadLibrary('user32.dll') user32.LockWorkStation() if __name__ == "__main__

  • Android手机屏幕敲击解锁功能代码

    1.前言 现在市面上有不少Android手机支持敲击屏幕解锁,敲击屏幕解锁是一项很实用的功能,但一来只支持敲击屏幕,二来只能用于解锁或锁屏,再者我们应用层的开发者切不进去,完全无法玩起来.开发者,开发者,我们既然身为开发者何不搞点大新闻,那么这次我来教教各位如何用代码来实现手机的敲击识别,听起来是不是很有趣,有些跃跃欲试呢.事实上在ios上已经有实现这个功能的应用:Knock,一款敲击来解锁Mac电脑的应用,售价4.99美元,约为33人民币.有时候真想去做ios开发,可以开心的为自己的应用定价,

  • iOS监听手机锁屏状态

    iPhone的锁屏监测分为两种方式监听: 1. 程序在前台,这种比较简单.直接使用Darwin层的通知就可以了: #import <notify.h> #define NotificationLock CFSTR("com.apple.springboard.lockcomplete") #define NotificationChange CFSTR("com.apple.springboard.lockstate") #define Notifica

  • js实现类似iphone的网页滑屏解锁功能示例【附源码下载】

    本文实例讲述了js实现类似iphone的网页滑屏解锁功能.分享给大家供大家参考,具体如下: iphone 的出现,打破了人们的用户体验,这一用户体验也延伸到了网页设计上.最近看到很多blog的评论都用类似iphone滑动解锁的方式实现.只有滑动解锁之后才能评论,或者做其他的事情.这个功能的实现,其实并不麻烦,关键是要有好的美工,做出好的滑动图片,然后javascript配合CSS就可以完成,我在这里也简单实现了一个,基本功能如下 1. 打开页面时隐藏评论框,你可以做成disable形式,下载源码

  • 用vue 实现手机触屏滑动功能

    功能:iview Carousel 走马灯,我需要在phone上实现滑动切换功能. <div class="phone" @touchstart="phone_mouseS" @touchend="phone_mouseE"> <Carousel :autoplay-speed="5000" v-model="phone_mouseMIndex" autoplay :value="

  • 实现一个Android锁屏App功能的难点总结

    自定义一个漂亮实用的锁屏app,如果能赢得用户的认可,替换系统自带的锁屏,绝对是一个不小的日活入口.这段时间正好总结一下最近调研的Android平台的锁屏app开发中的难点. 一.前言 锁屏的大概实现原理都很简单.监听系统的亮屏广播,在亮屏的时候展示自己的锁屏界面,用户在锁屏界面上进行一系列的动作才能解锁.有的手机启动锁屏界面的过程会很卡,所以会明显看到亮屏之后锁屏界面的启动有延时,因此也可以选择监听系统灭屏的广播,屏幕关掉的时候就将锁屏界面准备好,直接亮屏展示(灭屏后你的app会比较容易被杀死

  • Android仿手机QQ图案解锁功能

    本文实例为大家分享了Android仿手机QQ图案解锁的具体代码,供大家参考,具体内容如下 ps:请不要再问我,为什么导入之后会乱码了. 其实,代码基本上都是从原生系统中提取的:LockPatternView.加密工具类,以及解锁逻辑等,我只是稍作修改,大家都知道,原生系统界面比较丑陋,因此,我特意把QQ的apk解压了,从中拿了几张图案解锁的图片,一个简单的例子就这样诞生了. 好了,废话不多说,我们来看看效果(最后两张是最新4.4系统,炫一下,呵呵): 1.最关健的就是那个自定义九宫格View,代

  • js+html5实现手机九宫格密码解锁功能

    HTML5真的是很强大,前端时间看到一个canvas实现九宫格的密码解锁.今天抽出时间模仿了一个,特定分享一下! 效果截图如下: 效果看起来还不错吧! 源码如下: <!DOCTYPE html> <html> <head lang="zh-CN"> <meta content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0"

随机推荐