利用AirTest实现自动安装APK-跳过vivo手机安装验证

这篇具有很好参考价值的文章主要介绍了利用AirTest实现自动安装APK-跳过vivo手机安装验证。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

利用AirTest实现自动安装APK-跳过vivo手机安装验证

利用AirTest实现自动安装APK-跳过vivo手机安装验证

前言

最近在帮测试组看个问题,他们在自动化测试的时候,通过adb install 命令在vivo手机上安装apk的时候出现”外部来源应用,未经vivo安全性和兼容性检测,请谨慎安装“的提示页面,需要手动点击”继续安装“才可以成功安装apk。提示界面如下:

利用AirTest实现自动安装APK-跳过vivo手机安装验证

我们希望可以在安装apk的时候,自动跳过该验证页面。经过调研,发现利用Airtest可以实现该需求。

环境配置

本人的开发环境是Windows 10 , python3.11

  1. 安装python3.x

  2. 安装AirTest IDE https://airtest.netease.com/

  3. 安装AirTest脚本环境

    1. //  安装Airtest框架
      pip install airtest
      
    2. // 安装Poco框架;编写了Poco语句就需要安装
      pip install pocoui
      
    3. // 安装airtest-selenium框架;编写了airtest-selenium语句就需要安装
      pip install airtest-selenium
      

如果在通过pip install 的时候出现错误,可以尝试加 ”–user“ 后缀。

Note: 通过AirTest IDE的录制生成脚本功能,可以帮我们快速生成脚本框架,然后在此基础上根据自己的需求结合 airtest脚本文档,来实现具体功能。

实现

airtest 的脚本是air文件,其实本质上是python文件。

# -*- encoding=utf8 -*-
__author__ = "bigsponge"

from airtest.core.api import *
import threading


def fun1(threadName, apkPath):
    print(f'start install apk by airtest , thread name: {threadName}, apkPath:{apkPath}')
    install(apkPath)

auto_setup(__file__)

init_device("Android")

t = threading.Thread(target=fun1, args=("thread-install-apk", xxx\xxx\test.apk,))
t.start()

# 根据个人情况调整
sleep(12)

touch(Template(r"tpl1673425386842.png", record_pos=(-0.004, 0.956), resolution=(1080, 2400)))


t.join()

print("install apk by Airtest finished!!")


这里重点看下touch方法,通过touch方法可以安装页面上找到“继续安装” 按钮,然后模拟点击“继续安装”,从而实现自动安装。touch方法中,Template的第一个参数是一张图片,这张图片会作为匹配的目标区域。

利用AirTest实现自动安装APK-跳过vivo手机安装验证

这个时候,在命令行执行如下命令即可

python.exe -m airtest run "xxx\Desktop\installApk.air" --device Android:///ip:port

上面的脚本中,apk地址是内部写死的,如果想要把apk的地址通过命令参数传进来该怎么做呢?

airtest 支持的命令很少,通过

python.exe -m airtest run -h

python.exe -m airtest -h

发现没有传递自定义参数的选项。

AirTest自定义参数

通过自定义Airtest启动器可以实现添加自定义参数。

具体实现:

launcher.py

from airtest.cli.runner import AirtestCase, run_script
from airtest.cli.parser import runner_parser


class CustomAirtestCase(AirtestCase):

    def setUp(self):
        # 在air脚本运行之前获取这个自定义的参数
        if self.args.apkpath:
            self.scope['apkpath']=self.args.apkpath

    # def tearDown(self):
    #     pass
    #     super(CustomAirtestCase, self).tearDown()


if __name__ == '__main__':
    ap = runner_parser()
    # 添加自定义的命令行参数
    ap.add_argument(
        "--apkpath", help="install apk path")
    args = ap.parse_args()
    run_script(args, CustomAirtestCase)

launcher.py 放在airtest脚本文件内,和 airtest的py文件处于同一级下。

airtest脚本也需要做相应的改动

# -*- encoding=utf8 -*-
__author__ = "bigsponge"

from airtest.core.api import *
import threading


def fun1(threadName, apkPath):
    print(f'start install apk by airtest , thread name: {threadName}, apkPath:{apkPath}')
    install(apkPath)

auto_setup(__file__)

print("apk安装路径是:"+apkpath)
print('参数个数为:'+str(len(sys.argv))+'个参数')
print('参数列表:'+str(sys.argv))

init_device("Android")

t = threading.Thread(target=fun1, args=("thread-install-apk", apkpath,))
t.start()


sleep(12)

# touch方法通过指定目标截图来匹配目标
touch(Template(r"tpl1673425386842.png", record_pos=(-0.004, 0.956), resolution=(1080, 2400)))


t.join()

print("install apk by Airtest finished!!")


执行如下命令:

python.exe C:\xxx\Desktop\installApk.air\launcher.py C:\xxx\Desktop\installApk.air --device Android:///ip:port --apkpath 'C:\xxx\Desktop\APK Installer_8.6.2_Apkpure.apk'

运行结果:

利用AirTest实现自动安装APK-跳过vivo手机安装验证

封装bat脚本

因为不同的厂商app安装的流程不一样,有的设备不需要经历上面这一通操作,只需要通过adb install就能成功安装,所以我们对不同的手机需要做区分,通过命令行操作不是很方便,封装后的bat脚本:

@echo off

set deviceIp=%1
set devicePort=%2
set airtestScriptPath=%3
set apkPath=%4

echo %deviceIp%
echo %devicePort%
echo %airtestScriptPath%
echo %apkPath%

@rem 添加需要AirTest执行安装的测试手机型号
set specialDeviceList=V2157A
@rem 获取设备型号
for /f "delims=" %%a in ('adb -s %deviceIp%:%devicePort% -d shell getprop ro.product.model') do set deviceType=%%a

echo %deviceType%

for %%i in (%specialDeviceList%) do (
	if %%i==%deviceType% (set findTarget=true) else set findTarget=false
)
echo "test"
if %findTarget%==true (
	python.exe %airtestScriptPath%\launcher.py  %airtestScriptPath% --device Android:///%deviceIp%:%devicePort% --apkpath %apkPath%
) ^
else (
	echo "normal install"
	adb -s %deviceIp%:%devicePort% install %apkPath%
)

参考

https://airtest.readthedocs.io/en/latest/all_module/airtest.core.api.html#airtest.core.api.connect_device

https://airtest.doc.io.netease.com/IDEdocs/3.4run_script/1_useCommand_runScript/

https://www.cnblogs.com/AirtestProject/p/14606581.html文章来源地址https://www.toymoban.com/news/detail-500162.html

到了这里,关于利用AirTest实现自动安装APK-跳过vivo手机安装验证的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 利用MSF打包加固APK对安卓手机进行控制

    由于经典的MSF生成apk安装包控制,版本较低,高版本安卓手机可能会出现版本不支持或无法使用的现象,而且apk无法正常使用,没有图形化界面,比较假。 相比于原始的msf远控,此版本app在进行远控时,被注入的app可以正常运行,原始msf生成的app程序,只在桌面上有一个图标

    2024年01月16日
    浏览(42)
  • 安卓手机(荣耀/vivo)下载以及安装Charles证书

    1.charles—help–SSL Proxying 2.在手机浏览器搜索http://chls.pro/ssl,下载charles证书 1.打开WLAN,点击更多WLAN设置 2.点击安装证书 3.选择你下载的证书,会让你输入锁屏密码,填写弹框内容,安装完毕。 4.1.荣耀手机查看是否安装成功 点击安全–更多安全设置----加密和凭证—受信任的

    2024年02月11日
    浏览(50)
  • 用Airtest快速实现手机文件读写与删除功能

    此文章来源于项目官方公众号:“AirtestProject” 版权声明:允许转载,但转载必须保留原链接;请勿用作商业或者非法用途 前几天有同学留言,能不能安排“读写手机文件”的示例。我们今天就来实现这个小功能。 当然,熟悉adb的同学,看到这个需求,肯定很开心,不就是

    2024年02月10日
    浏览(33)
  • Android 加固包之后,vivo手机安装时出现解析包错误的情况

    原因 :因为我们跑的 run apk都是 debug 版本,也就是测试版本,而 vivo就不支持这个测试apk。 解决办法: gradle.properties文件中添加 此时,未加固的包可以在vivo手机上安装,但是在经过加固并重新签名后又会出现之前的情况,解决办法如下: 加固之后需要先对齐,否则可能会出

    2024年02月11日
    浏览(205)
  • 安卓手机怎样安装apk应用

    以华为手机为例 首先手机要关闭纯净模式,方法: 设置–系统和更新–纯净模式–关闭 然后下载/接收apk文件 (如果是从浏览器下载的,可以直接安装,如果是从其他渠道下载,则安装方法如下) 打开手机自带的文件管理app 通过来源找到该文件 单击后在弹出界面选择打开

    2024年02月13日
    浏览(52)
  • 不用编程超简单的自动化测试工具:Airtest安装使用入门篇

    很多刚入行或从其他行业转行做测试的同学,日复一日每天做点工已经点得疲惫和麻木,觉得做测试和在厂子里打螺丝没太大区别。也想着做一做自动化测试,奈何自己看着代码就头痛,当初就是因为不喜欢编程才选择的做测试。亦或者由于从其他行业转行过来的,隔行如隔

    2024年02月04日
    浏览(55)
  • ChatGPT APK 安卓手机 安装包

    ChatGPT APK 安卓手机 安装包 2023官方最新版是全新上线的ai智能对话软件,你可以通过声音匹配自己喜欢的队友,在这里参与到体验中来下载地址:https://download.csdn.net/download/qq_24529345/87427760

    2024年02月12日
    浏览(55)
  • 【利用宝塔WebHook插件、SmsForwarder(短信转发器)、quicker实现电脑端自动输入手机短信验证码登录】

    最近公司各种系统有一些小改动,闲置几分钟就得重新登录,然后每次登录得:打开手机→查看验证码短信→在电脑上手动输入,实在是太影响 效率 (心情)。为了更好地 搬砖 (摸鱼),利用一些小工具实现了手机验证码转发并自动输入。 服务器设定weebhook——手机验证码

    2024年03月27日
    浏览(66)
  • 安卓studio的APK包安装到手机

    建立APK密钥等信息          2. 创建新的apk信息  3.选择版本,两个都勾选,考虑兼容性  4.导包完成,进入文件所在位置  5.将文件到QQ,自行安装   出错时考虑版本兼容 打开AndroidManifest.xml文件   再次导包,安装成功     

    2024年02月11日
    浏览(50)
  • 如何用ADB命令安装apk包到手机

    1. 手机开启开发者模式 测试手机:华为mate40Pro (设置-关于手机-HarmobyOS版本,点击7下,弹出‘您正处于开发者模式!’)          2.假设需要安装的包是 a.apk 3.用USB线缆连接手机和电脑,手机弹出一个调试选项页面,选择。 如果未弹出该页面,可能会有以下几种原因:

    2024年02月17日
    浏览(48)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包