python + uiautomator2编译平板语言工具并切换打包exe可执行文件(上)

简介: python + uiautomator2编译平板语言工具并切换打包exe可执行文件(上)

python + uiautomator2编译平板语言工具并切换打包exe可执行文件


初版:

  1. 在命令行输入 adb shell am monitor
  2. 点击打开要获取包名的应用
  3. 命令行则会显示当前启动的应用的包名

image.pngimage.png

设备端需要安装atx-agent

1.进入到对应的sitpackage(uiautomator2所在的地方),在命令行输入 python -m uiautomator2 init,则会自动给设备安装好对应的apk等配置

image.png

image.png

Microsoft Windows [版本 10.0.18363.1198]
(c) 2019 Microsoft Corporation。保留所有权利。
D:\K_Learning\pythonFiles\airtest_script\venv\Lib\site-packages>python -m uiautomator2 init
[I 201118 16:48:37 init:155] uiautomator2 version: 2.12.0
[I 201118 16:48:37 init:352] Install minicap, minitouch
[D 201118 16:48:37 init:62] Download https://tool.appetizer.io/openatx/stf-binaries/raw/0.2.2/node_modules/minitouch-prebuilt-beta/prebuilt/arm64-v8a/bin/minitouch
minitouch |⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿| 34.1 KB/34.1 KB
[?25h[D 201118 16:48:38 init:232] Push to /data/local/tmp/minitouch:0755
[D 201118 16:48:38 init:62] Download https://tool.appetizer.io/openatx/stf-binaries/raw/0.2.2/node_modules/minicap-prebuilt-beta/prebuilt/arm64-v8a/lib/android-29/minicap.so
minicap.so |⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿| 28.4 KB/28.4 KB
[?25h[D 201118 16:48:38 init:232] Push to /data/local/tmp/minicap.so:0755
[D 201118 16:48:38 init:62] Download https://tool.appetizer.io/openatx/stf-binaries/raw/0.2.2/node_modules/minicap-prebuilt-beta/prebuilt/arm64-v8a/bin/minicap
minicap |⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿| 526.5 KB/526.5 KB
[?25h[D 201118 16:48:39 init:232] Push to /data/local/tmp/minicap:0755
[D 201118 16:48:39 init:250] apk-debug package-info: None
[D 201118 16:48:39 init:251] apk-debug-test package-info: None
[I 201118 16:48:39 init:367] Install com.github.uiautomator, com.github.uiautomator.test 2.3.1
[D 201118 16:48:39 init:162] Shell: ('pm', 'uninstall', 'com.github.uiautomator')
[D 201118 16:48:39 init:162] Shell: ('pm', 'uninstall', 'com.github.uiautomator.test')
[D 201118 16:48:39 init:62] Download https://tool.appetizer.io/openatx/android-uiautomator-server/releases/download/2.3.1/app-uiautomator.apk
app-uiautomator.apk |⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿| 2.1 MB/2.1 MB
[?25h[D 201118 16:48:40 init:232] Push to /data/local/tmp/app-uiautomator.apk:0644
[D 201118 16:48:40 init:162] Shell: ('pm', 'install', '-r', '-t', '/data/local/tmp/app-uiautomator.apk')
[I 201118 16:48:47 init:332] - app-uiautomator.apk installed
[D 201118 16:48:47 init:62] Download https://tool.appetizer.io/openatx/android-uiautomator-server/releases/download/2.3.1/app-uiautomator-test.apk
app-uiautomator-test.apk |⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿| 1.2 MB/1.2 MB
[?25h[D 201118 16:48:48 init:232] Push to /data/local/tmp/app-uiautomator-test.apk:0644
[D 201118 16:48:48 init:162] Shell: ('pm', 'install', '-r', '-t', '/data/local/tmp/app-uiautomator-test.apk')
[I 201118 16:48:49 init:332] - app-uiautomator-test.apk installed
[I 201118 16:48:49 init:340] Install atx-agent 0.9.5
[D 201118 16:48:49 init:62] Download https://tool.appetizer.io/openatx/atx-agent/releases/download/0.9.5/atx-agent_0.9.5_linux_armv7.tar.gz
atx-agent_0.9.5_linux_armv7.tar.gz |⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿| 4.1 MB/4.1 MB
[?25h[D 201118 16:48:49 init:232] Push to /data/local/tmp/atx-agent:0755
[D 201118 16:48:50 init:162] Shell: ('/data/local/tmp/atx-agent', 'server', '--stop')
[D 201118 16:48:51 init:162] Shell: ('/data/local/tmp/atx-agent', 'server', '--nouia', '-d')
[D 201118 16:48:51 init:162] Shell: ('/data/local/tmp/atx-agent', 'server', '--nouia', '-d')
[I 201118 16:48:51 init:377] Check atx-agent version
[D 201118 16:48:51 init:390] Forward: local:tcp:53075 -> remote:tcp:7912
[D 201118 16:48:52 init:390] Forward: local:tcp:53075 -> remote:tcp:7912
[D 201118 16:48:52 init:390] Forward: local:tcp:53075 -> remote:tcp:7912
[D 201118 16:48:52 init:393] atx-agent version 0.9.5
Successfully init AdbDevice(serial=HA12G0GW)
  1. 下载所push到的都在设备的 /data/local/tmp(所有的东西都在设备的这个文件夹里面),可以通过adb shell 进入这个文件夹查看
  2. 把这些东西拉到电脑上
D:\G_Working\自动化小工具需求\语言切换判断\截图\设备所需安装apk和文件>adb pull /data/local/tmp
/data/local/tmp/: 7 files pulled, 0 skipped. 10.0 MB/s (14026373 bytes in 1.334s)

image.png

4.根据cmd命令显示可以看出,它的操作步骤是在下载文件,安装文件,给ATX授权等操作直接封装成bat命令

image.png

:: 预置文件
adb push ./tmp/dalvik-cache /data/local/tmp
adb push ./tmp/minicap  /data/local/tmp
adb push ./tmp/minicap.so  /data/local/tmp
adb push ./tmp/minitouch  /data/local/tmp
adb push ./tmp/uidump.xml  /data/local/tmp
adb push ./tmp/app-uiautomator.apk  /data/local/tmp
adb push ./tmp/app-uiautomator-test.apk  /data/local/tmp
adb push ./tmp/atx-agent  /data/local/tmp
adb install ./tmp/app-uiautomator.apk 
adb install ./tmp/app-uiautomator-test.apk
adb shell /data/local/tmp/atx-agent server --stop
adb shell chmod 775 /data/local/tmp/atx-agent   #给atx-agent授权
adb shell /data/local/tmp/atx-agent server --nouia -d #添加-d表示在后台启动tx-agent

该工具网盘链接:

链接:https://pan.baidu.com/s/1xLlHzTev1uSEL11avLKJog  

提取码:xznb  

复制这段内容后打开百度网盘手机App,操作更方便哦


import uiautomator2
import time
import uiautomator2 as u2
#连接手机
print("正在连接设备")
d = u2.connect(r"HA169RPZ")   #HA12FYBL\HA12G0GW\HA169RPZ填入设备的SN号即可
print("设备连接成功,先回到主页面")
d.press('home')
print("回到主页面成功,正在启动应用")
d.implicitly_wait(20)
#启动应用
d.app_start("com.android.settings")
print("应用启动成功")
#创建session连接对象,建议与设置应用的绑定连接
s = d.session('com.android.settings',attach=True)
time.sleep(3)
#获取设备的尺寸
print(d.window_size())
sizeTuple = d.window_size()
x = sizeTuple[0]
y = sizeTuple[1]
print("屏幕的宽为:"+str(x) +",屏幕的高为:"+str(y)) #获取屏幕的宽高
#1.进入设置之后,划动屏幕找到System
d.swipe(x/5 * 4,y/5 * 4,x/5*4,y/5*1,1,50)
d.swipe(x/5 * 4,y/5 * 4,x/5*4,y/5*1,1,50)
d.implicitly_wait(5)
#2.通过class和下标点击系统(开发者模式)
d(className = 'android.widget.LinearLayout',index = '18').click()
time.sleep(1)
#3.点击语言和输入法
d(className = 'android.widget.LinearLayout',index = '1').click()
time.sleep(2)
#4.点击语言
d(className = 'android.widget.RelativeLayout',index = '1').click()
time.sleep(2)
#5.点击添加语言(此时页面仅可存在一个语言,其他语言需提前删除)(需判断目前显示的语言是否和要搜索的一致)
d(resourceId = 'com.android.settings:id/add_language').click()
#6.点击搜索
d(resourceId = 'android:id/locale_search_menu').click()
#7.输入需要更换的语言(此时要注意一个语言下面还有分支的情况)
Changelanguage = 'Čeština'  #Suomi Akan
d(resourceId = 'android:id/search_src_text').send_keys(Changelanguage)
d.implicitly_wait(5)
#8.选择更换的语言
d(resourceId = 'android:id/locale').click()
time.sleep(2)
print("准备点击小点")
#9.选择右上角的三个小点,remove
d(className = 'android.widget.ImageButton',index='1').click()
print("点好了")
#10.点击移除(把选择之前的语言移除掉)
d(resourceId = 'android:id/content').click()
time.sleep(3)
#11.勾选之前的语言(也就是第一个),这样把第一个删除之后,现在的语言就是需要更换的语言
d(className = 'android.widget.RelativeLayout',index = '0').click() #点击第一个语言
d(className = 'android.widget.TextView',index = '0').click() #点击删除
#12.由于点击第一个删除会触发系统提示弹窗,则勾选ok就好
d(resourceId = 'android:id/button1',index = '1').click()
time.sleep(1)
d.press("back") #返回到语言和输入法界面
time.sleep(1)
d.press("back") #返回到系统界面(开始进入系统更新对比)
print("-------------------------开始进入系统更新对比------------------")
#13.进入系统更新界面
d(className = 'android.widget.LinearLayout',index = '8').click()
#14.获取提示信息
WaringText = d(resourceId = 'com.lenovo.ota:id/text_new_version_content').get_text(timeout=5)
print(WaringText)
#15.使用获取到的信息和表格里面的信息进行对比


语言切换识别对比warning信息进度:
目前以实现基本流程操作,读取并写入EXCEL部分还未开始
 ①Uiautomator2所需相关配置可通过bat一键安装到设备并正常启动
 ②可自动获取设备SN号并进行连接
 ③可切换单语言的切换(语言下还有语言的切换还未实现)
 ④可正常读取系统更新界面的Warning的text信息
 next step:
 实现通过读取表格的信息,进行单语言切换,把读取的信息写入到表格



相关文章
|
5月前
|
存储 JavaScript Java
(Python基础)新时代语言!一起学习Python吧!(四):dict字典和set类型;切片类型、列表生成式;map和reduce迭代器;filter过滤函数、sorted排序函数;lambda函数
dict字典 Python内置了字典:dict的支持,dict全称dictionary,在其他语言中也称为map,使用键-值(key-value)存储,具有极快的查找速度。 我们可以通过声明JS对象一样的方式声明dict
355 2
|
5月前
|
算法 Java Docker
(Python基础)新时代语言!一起学习Python吧!(三):IF条件判断和match匹配;Python中的循环:for...in、while循环;循环操作关键字;Python函数使用方法
IF 条件判断 使用if语句,对条件进行判断 true则执行代码块缩进语句 false则不执行代码块缩进语句,如果有else 或 elif 则进入相应的规则中执行
764 1
|
6月前
|
数据可视化 Linux iOS开发
Python脚本转EXE文件实战指南:从原理到操作全解析
本教程详解如何将Python脚本打包为EXE文件,涵盖PyInstaller、auto-py-to-exe和cx_Freeze三种工具,包含实战案例与常见问题解决方案,助你轻松发布独立运行的Python程序。
1575 2
|
6月前
|
数据采集 机器学习/深度学习 人工智能
Python:现代编程的首选语言
Python:现代编程的首选语言
800 102
|
6月前
|
人工智能 自然语言处理 算法框架/工具
Python:现代编程的首选语言
Python:现代编程的首选语言
331 103
|
5月前
|
监控 机器人 编译器
如何将python代码打包成exe文件---PyInstaller打包之神
PyInstaller可将Python程序打包为独立可执行文件,无需用户安装Python环境。它自动分析代码依赖,整合解释器、库及资源,支持一键生成exe,方便分发。使用pip安装后,通过简单命令即可完成打包,适合各类项目部署。
998 68
|
6月前
|
机器学习/深度学习 人工智能 数据挖掘
Python:现代编程的首选语言
Python:现代编程的首选语言
271 82
|
6月前
|
人工智能 数据安全/隐私保护 异构计算
桌面版exe安装和Python命令行安装2种方法详细讲解图片去水印AI源码私有化部署Lama-Cleaner安装使用方法-优雅草卓伊凡
桌面版exe安装和Python命令行安装2种方法详细讲解图片去水印AI源码私有化部署Lama-Cleaner安装使用方法-优雅草卓伊凡
919 8
桌面版exe安装和Python命令行安装2种方法详细讲解图片去水印AI源码私有化部署Lama-Cleaner安装使用方法-优雅草卓伊凡
|
5月前
|
存储 Java 索引
(Python基础)新时代语言!一起学习Python吧!(二):字符编码由来;Python字符串、字符串格式化;list集合和tuple元组区别
字符编码 我们要清楚,计算机最开始的表达都是由二进制而来 我们要想通过二进制来表示我们熟知的字符看看以下的变化 例如: 1 的二进制编码为 0000 0001 我们通过A这个字符,让其在计算机内部存储(现如今,A 字符在地址通常表示为65) 现在拿A举例: 在计算机内部 A字符,它本身表示为 65这个数,在计算机底层会转为二进制码 也意味着A字符在底层表示为 1000001 通过这样的字符表示进行转换,逐步发展为拥有127个字符的编码存储到计算机中,这个编码表也被称为ASCII编码。 但随时代变迁,ASCII编码逐渐暴露短板,全球有上百种语言,光是ASCII编码并不能够满足需求
249 4

推荐镜像

更多