Win11安卓应用自动化测试的准备

前言

    APP的自动化测试,前提从ADB连接设备,启动APK应用开始。Win 11自带的WSA的APP的测试,要完全自动化,需要解决几个问题。

1、 启动WSA

    此项有两步:

    i     启动WSA服务

    Python程序来启动服务,可以直接调用命令行工具,只要执行 net start wsaservice 成功就行,可以用:     

import os
os.system('net start wsaservice')

    ii   开启设备连接IP及端口

      当WSA服务启动后,直接用adb connect来连接还不行,因为设备的IP及端口并没有出来,如果是UI操作,可以手动点击运行 Windows Subsystem for andoird  Settings,打开开发者模式来启用IP及端口,但Python代码来实现,则需要迂回实现。

  Win11安卓应用自动化测试的准备_第1张图片

  问题:WSA Settings不同于一般的Windows 应用,不能在命令行直接输入命令来启动?

  解决方案: 通过协议来实现(来自网友的文章创意:在任意浏览器输入 wsa://com.android.settings,并点击打开弹出的控件),此处本人经过实验,可以通过 运行 (Win + R)来实现。

    要在Python程序中实现 Win + R 的效果,那我们需要调用第三方库来控制键盘,以达到快捷键的效果。

    首先,安装第三方库 pynput:    

pip install pynput

 注:如果遇到Read time out,可以更改源,或者加时间

pip install pynput -i https://pypi.tuna.tsinghua.edu.cn/simple --default-timeout=600

  完成后,即可用pynput的Controller,Key来实现Win + R打开 运行 窗口,以开启WSA的开发者模式,打开ADB连接的IP及端口,再使用adb connect IP:端口 来连接设备。

2、 安装及启动APP

    ADB连接设备后,即可用ADB命令来安装APK,并启动APP(需知道启动页面)。

   小知识:

        1、 查看已安装的应用        

adb shell pm list packages

       2、 查看应用的默认启动页面    

adb shell dumpsys package 

   Win11安卓应用自动化测试的准备_第2张图片

       3、 启动APP

adb shell am start 

最后代码如下:

# -*- coding: utf-8 -*-
"""
-------------------------------------------------
   File Name:     testCallWSA.py
   Author :        曾良均
   QQ:             277099728
   Date:          2/27/2023 10:45 AM   
   Description :
-------------------------------------------------
   Change Activity:
                   
-------------------------------------------------
"""
__author__ = 'ljzeng'

import os
from pynput.keyboard import Key, Controller
import time

kb = Controller()
with kb.pressed(Key.cmd_l):
    kb.press('r')
    kb.release('r')

os.system('net start wsaservice')

time.sleep(3)

# 控制键盘 按压释放、键入字符串、按下组合键
with kb.pressed(Key.cmd_l):  # Key.cmd_l 即为Win键
    kb.press('r')
    kb.release('r')
kb.type('wsa://com.android.settings')    # 输入命令
kb.press(Key.enter)
kb.release(Key.enter)

time.sleep(5)
# 连接设备
os.system('adb connect 127.0.0.1:58526')
time.sleep(2)
os.system('adb devices')
time.sleep(3)
# 安装APK
os.system('adb install -r APK文件')
time.sleep(5)
# 启动APP
os.system('adb shell am start APP的启动页')

# 准备工作完成

你可能感兴趣的:(Python,自动化测试,adb)