每个测试人都会遇到的批量安装,你真的会操作吗?

news2024/12/25 12:08:23

♥  前  言

能不能通过脚本来实现多台设备同时安装 App?

实现过程

核心技术解决方案:

adb 命令 + 多进程/多线程

采用的脚本语言:

Java、Python、Shell、bat 都可

因为 Shell 与 bat 直接可以与 adb 命令交互,效率更高,笔者所用的是 Windows 平台机器,所以本篇文章采用的 bat 脚本实现。

如果你想学习自动化测试,我这边给你推荐一套视频,这个视频可以说是B站播放全网第一的自动化测试教程,同时在线人数到达1000人,并且还有笔记可以领取及各路大神技术交流:798478386    

【已更新】B站讲的最详细的Python接口自动化测试实战教程全集(实战最新版)_哔哩哔哩_bilibili【已更新】B站讲的最详细的Python接口自动化测试实战教程全集(实战最新版)共计200条视频,包括:1、接口自动化之为什么要做接口自动化、2、接口自动化之request全局观、3、接口自动化之接口实战等,UP主更多精彩视频,请关注UP账号。icon-default.png?t=N7T8https://www.bilibili.com/video/BV17p4y1B77x/?spm_id_from=333.337

Step1、识别多设备信息

要想要在多台设备上执行,我们需要得到对应的设备信息,而由于 adb install 命令可以通过-s 参数指定设备:

adb -s deviceName install XXApk

所以我们这里需要得到设备的 deviceName。

思路:adb devices 命令结果保存在本地文件中

adb devices > devices.txt

Step2、获取当前目录下所有的 APK 文件

这里通过 bat 脚本实现非常简单,对应的脚本如下:

dir *.apk /b > apks.txt

同时我们也选择将所有的 apk 文件信息保存到本地的 apks.txt 文件中。

Step3、循环遍历设备列表执行安装

for /f  "skip=1 delims=device" %%i in (devices.txt) do (
start adb_install %%i
)

解释:

for /f in (devices.txt)

表示循环遍历 devices.txt 文件中的文本内容

"skip=1 delims=device"

  • skip=1 表示跳过第一行,因为 adb devices 输出的结果中第一行为 List of devices attached,我们需要跳过处理;

  • delims=device 表示通过 device 分隔符切分字符串,比如 127.0.0.1:62001 device 切分之后的结果为 127.0.0.1:62001

%%i

表示对每一行的文本内容切分之后的结果,如 127.0.0.1:62001,即设备名

start adb_install %%i

这里我们通过 start 命令重新启动一个单独的命令行窗口,然后在里面执行 adb_install.bat 脚本,并且携带设备名参数

Step4:安装过程(adb_install.bat)

对应的脚本内容如下:

@echo off

echo --------------start install apks to %1--------------------
for /f %%i in (apks.txt) do (
echo install %%i to %1...
adb -s %1 install -r %%i
)
echo -----------------%1 finished install----------------------

这里我们通过循环遍历所有的 apk 文件进行安装,调用 adb install 命令,其中-r 参数表示如果应用已安装,还是会再强制安装。

对应的脚本文件及使用方式

目录结构如下:

图片

multi_install.bat 文件对应的脚本内容:

@echo off

echo ------------multi install apks start--------------------
echo get all devices...
adb devices > devices.txt

echo get all apks...
dir *.apk /b > apks.txt

for /f  "skip=1 delims=device" %%i in (devices.txt) do (
start adb_install %%i
)

exit

adb_install.bat 文件对应的脚本内容:

@echo off

echo --------------start install apks to %1--------------------
for /f %%i in (apks.txt) do (
echo install %%i to %1...
adb -s %1 install -r %%i
)
echo -----------------%1 finished install----------------------

使用步骤:

  1. 确保设备已经通过 adb 连接上(adb devices 命令能够检测到设备)

  2. 将所需安装的 apk 文件放置与脚本同目录下

  3. 双击执行 multi_install.bat 即可

执行效果:

图片

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1045491.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

分布式并行训练(DP、DDP、DeepSpeed)

[pytorch distributed] 01 nn.DataParallel 数据并行初步 数据并行 vs. 模型并行 数据并行:模型拷贝(per device),数据 split/chunk(对batch切分) 每个device上都拷贝一份完整模型,每个device分…

Android实现二维码扫描功能(一)ZXing插件接入

简介 关于Android扫描二维码的功能实现,网上有很多相关资料。在对比之后,选用了前辈了修改过的ZXing直接接入到项目中,特制作此demo,介绍整个过程。 (最新更新)本篇文章讲解的接入方法对部分开发者新人来说…

Molecular Cancer|CDK9抑制诱导表观遗传重编程,揭示了规避淋巴瘤耐药性的策略

细胞周期蛋白依赖性激酶(CDK)蛋白家族在细胞周期进程(如CDK1/2/4/6)和RNA转录(如CDK7/8/9/11)的调控中起着不可或缺的作用。由于染色体区域易位或基因扩增导致的CDKs表达失调与肿瘤发生有关。在淋巴瘤细胞中…

无线通信——Mesh自组网的多跳性

Mesh的多跳性 Mesh网络具备多跳性。什么是多跳性呢?上面说过,每一个具备Mesh网络的设备都是独立的节点。因此,当我发出一条数据时,这些数据会通过跳跃到达不同的网络节点,数据从一个节点跳到另一个节点,直到…

使用烧瓶的简单电子商务API

一、说明 让我们试一试烧瓶(Flask)这个模型框架,这个应用程序可让您管理和扩展您的云端业务;它允许管理人员浏览和计算商店的总销售额并从在线商店 - 服装。 二、什么是烧瓶? 什么是烧瓶?它是一个Web框架 -…

指数杠杆平台是什么?融资杠杆一般是多少?

指数杠杆平台是近年来兴起的一种金融投资工具,它通过使用杠杆效应,允许投资者以较少的资金投入获得较大的投资回报。指数杠杆平台交易的产品通常是股票指数,例如道琼斯工业平均指数、纳斯达克综合指数等。 在指数杠杆平台交易中,…

ChatGPT:让机器学习与深度学习变得轻松有趣

💂 个人网站:【工具大全】【游戏大全】【神级源码资源网】🤟 前端学习课程:👉【28个案例趣学前端】【400个JS面试题】💅 寻找学习交流、摸鱼划水的小伙伴,请点击【摸鱼学习交流群】 深度学习和机器学习是当…

互联网医院系统:数字时代医疗的未来

随着科技的迅速发展,互联网医院系统已经成为医疗领域的一大创新。这一数字化解决方案不仅为医疗保健提供了更多的便捷性,还在全球范围内推动了医疗服务的变革。本文将探讨互联网医院系统的定义、优势和未来潜力。 什么是互联网医院系统? 互…

5.外部中断

中断初始化配置步骤: IO口初始化配置 开启中断总允许EA 打开某个IO口的中断允许 打开IO口的某一位的中断允许 配置该位的中断触发方式 中断函数: #pragma vector PxINT_VECTOR __interrupt void 函数名(void){}#pragma vector PxINT_VECTOR __int…

PMP和ACP考哪个证书好,还是两个都考?

建议有条件都考,如果只能考一门,建议考PMP,PMP考试中会涉及敏捷管理的内容,特别是今年发布了新考纲,敏捷管理的内容已经增加到了50%。 先讲一下PMP PMP是美国PMI为考察项目管理人士的专业能力而设立的考试&#xff0…

使用Git下载大语言模型

在下载Huggingface和ModelScope上面的大语言预训练模型的时候,经常会因为网页无法访问或者文件太大无法下载的情况,是大家常常比较苦恼的事情,下面给出用Git下载模型到本地的方法,可以轻松解决上述问题。 目录 一、下载和安装Gi…

如何使用Etherscan Remix插件验证智能合约

在Moonbeam上验证合约的方式有很多,使用Etherscan Remix插件是最快、最简单的方式。 此示例中,我们展示如何在Remix上激活Etherscan插件并验证简单的增量智能合约。开始之前,请准备以下内容: MetaMask钱包 存有DEV的账户 将验证…

Linux 基础入门

目录 一、计算机 1、组成 2、功能 二、操作系统 1、定义 2、主要工作 3、操作系统内核功能 4、常见的操作系统 三、Linux的组成 四、搭建Linux学习环境 五、安装远程连接Linux的软件 1、安装xshell 2、安装mobaxterm 六、Linux操作系统学习大纲 一、计算机 1、组…

Multisim14.0仿真(二十三)施密特触发器构成的多谐振荡器

一、仿真原理图: 二、仿真效果图:

JVM111

JVM1 字节码与多语言混合编程 字节码 我们平时说的java字节码, 指的是用java语言编译成的字节码。准确的说任何能在jvm平台上执行的字节码格式都是一样的。所以应该统称为:jvm字节码。不同的编译器,可以编译出相同的字节码文件,字节码文件…

外卖订餐系统:数字时代的美食点餐新体验

在数字时代,外卖订餐系统已经成为现代生活的一部分。它不仅改变了我们点餐的方式,还为餐饮业带来了巨大的变革。本文将深入探讨外卖订餐系统的崭新世界,探讨它的发展历程、优势和未来趋势。 从电话点餐到外卖订餐系统 许多人还记得过去打电…

LeetCode 1194.锦标赛优胜者

数据准备 Create table If Not Exists Players (player_id int, group_id int); Create table If Not Exists Matches (match_id int, first_player int, second_player int, first_score int, second_score int); Truncate table Players; insert into Players (player_id, g…

python进制转换

""" 基数:有几个数 0b 2进制: 0、1 基数是:2 0o 8进制: 0、1、2、3、4、5、6、7 基数是:8 0d 10进制: 0到9 基数是:10 0x 16进制: 0、1、2、3、4、5、6、7、8、9、A、B、C、D、E、F 基数是:16十进制转二进制: bin() 十进制转八进…

那么国内比较好用的ai写作助手?

在过去的几年里,人工智能(AI)已经取得了巨大的进步,其中之一就是AI写作助手。这些工具基于先进的自然语言处理技术,可以生成多种类型的文本,包括文章、博客、广告文案、新闻稿等。它们不仅可以提供高质量的…

canvas绘制基本图形——矩形

我们在初识canvas的时候已经用它画过矩形了,今天我们就总结下矩形的绘画方式 rect rect就是简单最基本的矩形绘制方法。它拥有四个参数,第一二两个参数表示他的x,y坐标,注意这是确定矩形左上角的坐标。第三和第四两个参数则表示…