python + uiautomator2编译平板语言工具并切换打包exe可执行文件
初版:
- 在命令行输入 adb shell am monitor
- 点击打开要获取包名的应用
- 在命令行则会显示当前启动的应用的包名
设备端需要安装atx-agent
1.进入到对应的sitpackage(uiautomator2所在的地方),在命令行输入 python -m uiautomator2 init,则会自动给设备安装好对应的apk等配置
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)
- 下载所push到的都在设备的 /data/local/tmp(所有的东西都在设备的这个文件夹里面),可以通过adb shell 进入这个文件夹查看
- 把这些东西拉到电脑上
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)
4.根据cmd命令显示可以看出,它的操作步骤是在下载文件,安装文件,给ATX授权等操作直接封装成bat命令
:: 预置文件 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: 实现通过读取表格的信息,进行单语言切换,把读取的信息写入到表格