Android自动化巡检环境搭建

Android自动化巡检

  • 一、环境配置
    • 1、jdk配置
    • 2、python环境配置
    • 3、android sdk配置
    • 4、node配置
    • 5、allure配置
    • 6、scrcpy录屏工具配置
    • 7、appium配置
    • 8、模拟器安装
  • 二、项目配置
    • 1、python项目设置虚拟环境,迁移至另一台机器:
    • 2、目录结构
    • 3、项目运行步骤
    • 4、自动化巡检告警配置
  • jenkins配置
    • 1、新建jenkins执行机节点
    • 2、新建自由风格项目

一、环境配置

1、jdk配置

  • 下载jdk解压
  • 新增环境变量
JAVA_HOME  D:\tool\jkd1.8 #jdk安装路径
CLASSPATH  ".;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar"
  • PATH配置
%JAVA_HOME%\bin
%JAVA_HOME%\jre\bin

2、python环境配置

  • 安装python
  • 安装Pycharm

3、android sdk配置

  • 下载sdk配置系统环境变量
  • 新增变量ANDROID_HOME
ANDROID_HOME D:\tool\Android\android-sdk
  • PATH配置
%ANDROID_HOME%\platform-tools
%ANDROID_HOME%\tools

4、node配置

  • 安装node.js
  • PATH配置 node安装目录

5、allure配置

  • 环境变量PATH配置新增
  • 将allure下bin文件配置到环境变量
D:\python\allure-commandline-2.9.0\allure-2.9.0\bin

6、scrcpy录屏工具配置

  • 测试报告中可配置录屏附件
  • 环境变量PATH配置新增
D:\tool\scrcpy_871759\scrcpy_v2.1.1_64bit_portable\scrcpy_v2.1.1_64bit_portable

7、appium配置

  • 安装Appium-windows-1.15.1.exe 客户端版本 可查询app页面元素进行调试 或者安装 Appium服务端版本 命令行版本
  • 选择安装位置自定义安装
  • 要求程序运行时启动appium服务

8、模拟器安装

如果需要开启webview 可切换其他模拟器如夜神 雷电等等 mumu模拟器暂时未找到开启webview方法 一开始可不选择mumu模拟器

  • 模拟器选择 当前项目使用mumu模拟器
  • 当前项目未使用webview页面元素,都是android原生页面,未做特殊配置,如需要使用webview页面需要打开webview的debug模式。
  • 对于webview页面要求
    • 1.android版本等于低于6.0 默认开启
    • 2.开发打包时一打开webview开关,生成测试包
    • 3.使用xposed框架+WebViewDebugHook 模块 强制开启,目前xposed框架只支持android7.0 32bit的app 可以使用夜神模拟器 64bit的app暂时不支持
  • 安装mumu模拟器
    • 安装启动之后 cmd运行 adb connect 127.0.0.1:7555 将模拟器与adb进行连接
    • 运行adb devices 查询当前已连接设备
  • 将需要自动化运行的apk安装至模拟器 adb install xx.apk

二、项目配置

1、python项目设置虚拟环境,迁移至另一台机器:

  • 1.安装相同版本的python环境(直接在pycharm中project interpreter,版本识别会出错,需要进行下一步操作) 当前项目使用版本为3.7.7
  • 2.python项目venv目录下,修改pyvenv.cfg文件,其余配置都删除
home = 本机python安装目录
include-system-site-packages = false
version = 本机python安装版本

2、目录结构

- base* basepage 底层元素封装* xx_app   业务app定制配置 保护登录操作等
- chromedriver webview页面需要使用的driver驱动
- images 
- logs
- page* mainpage.py    页面元素对应操作 根据po模式 可新增页面* mainpage.yaml 页面元素
- report 测试报告
- scrcpy app录屏工具 需要配置环境变量
- testcase 测试用例
- utils 
- config.json app启动配置项
- config.yaml 数据库  接口、邮件告警配置
- conftest.py  需要录屏附件 使用时将autouse=True
- main.py 启动文件
- start.bat 启动文件

3、项目运行步骤

  • 1、运行appium
  • 2、启动mumu模拟器
    • cmd运行 adb connect 127.0.0.1:7555
    • adb devices 获取设备id
  • 3、修改项目的config.json 中的设备id与包名
  • 4、运行main.py 或 启动start.bat 文件运行
  • 5、测试报告最终生成在report/allure下

4、自动化巡检告警配置

  • 十分钟运行一次脚本 jenkins配置时间 每次运行有失败用例都会发生邮件告警
  • 告警创建 进行时间判断 上一次失败时间与当前时间是否已经过去一小时 已经过去一小时 调用告警接口获取告警id 数据库新增一条告警记录 状态为1 成功状态0 失败状态1

jenkins配置

1、新建jenkins执行机节点

  • 执行机节点中配置好运行环境

2、新建自由风格项目

  • 执行节点选择已经配置好的节点
  • 关联远程代码仓库
  • 构建触发器 - 定时构建
    • 每隔10分钟构建一次 H/10 * * * *
  • 选择执行windows批处理命令
    • 方式一: python mian.py
    • 方式二: start start.bat
  • 构建后操作选择allure
    • Path: report/xml
    • 选择高级 Report path: report/allure
adb  connect 127.0.0.1:7555 mumu模拟器连接
{"platformName": "Android","deviceName": "KVJF6XZ9PVYHDIR8","udid": "KVJF6XZ9PVYHDIR8","appPackage": "com","appActivity": "com","skipDeviceInitialization": "true","autoGrantPermissions": "true","noReset": "true"
}
# adb shell dumpsys window | findstr mCurrentFocus 获取当前最顶端的包名和活动名

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

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

相关文章

Fast R-CNN

Fast R-CNN算法流程 对比与R-CNN其在第二步时并没有将所有的候选区域进行逐个的CNN特征提取,而是直接将整个图片进行一次CNN特征提取,让后再将候选区映射到feature map上。可想而知速度得到了提升。这里的ROI pooling层缩放到7x7就是将候选区域对应的特征…

通过聚道云软件连接器实现销帮帮软件与i人事软件的智能对接

客户介绍 某软件行业公司是一家专业从事软件技术服务、软件开发、应用解决方案、业务流程优化、专业服务的高科技企业。公司拥有一支经验丰富、技术精湛的服务团队,具备多年的软件开发和应用解决方案经验。他们不断追求技术的创新和进步,以满足客户不断…

Sectigo与Geotrust ov多域名证书的区别

Sectigo和Geotrust都是比较知名的CA认证机构。其中,Sectigo原名Comodo,在2018年整合SSL证书业务,改名为Sectigo,旗下的SSL证书产品根证书也变为Sectigo。Geotrust则是另一个备受信任的数字证书品牌,现在是Digicert旗下…

C语言注意点(4)

1、void *a是什么意思 答&#xff1a;泛型指针&#xff0c;但不规定其类型(就是地址确定&#xff0c;但数据长度不确定)在动态分配内存时&#xff0c;malloc的返回值就是该类型&#xff0c;方便用户进行强制转换。 2、VS怎么一键规范格式 for(i0;i<10;i)enter后&#xff0c;…

JUC AQS(AbstractQueuedSynchronizer)

文章目录 AQS &#xff08;AbstractQueuedSynchronizer^1.5^&#xff09;CLH 锁队列AbstractQueuedSynchronizer 成员变量说明AbstractQueuedSynchronizer.Node 源码CLH 队列原理图入队逻辑方法出队逻辑方法 继承 AQS 需要实现的几个方法AQS 对象序列化ReentrantLock 源码解析R…

环境监测LoRa网关解决方案应用空气质量监控

随着全球工业化和城镇化的快速发展&#xff0c;空气质量问题越来越受到关注。环境监测技术的发展&#xff0c;可以有效地帮助我们监测和改善空气质量。而LoRa网关则是一种可以帮助我们实现远距离、低功耗通信的无线通信技术&#xff0c;它的应用可以为空气质量监测提供解决方案…

java常见编程题

1.已知有一个父类 Person&#xff0c;包含两个属性 name 和 age&#xff0c;还有带两个参数的构造方法 Person()和一个打印信息的info()方法。 public class Person{ protected String name; protected int age; public Person(String name, int age){ this.name name; this.…

Golang是什么?它有什么功能和特性?它值不值得我们去学习?我们该如何去学习呢?

Golang&#xff08;也称为Go&#xff09;是一种开源的编程语言&#xff0c;由Google开发并于2009年发布。它是一种静态类型、并发性强、编译型的语言&#xff0c;旨在提高程序员的生产力和代码的可读性。 Golang的设计目标是简单、高效、可靠的编程语言&#xff0c;它具有以下…

Python使用subprocess模块执行shell命令且自动退出命令

exec_command()函数不能实现在1秒后自动退出。要实现这个功能&#xff0c;您需要使用subprocess模块的另一个函数——timeout。下面是一个示例&#xff1a; import subprocess import sysarg_1 sys.argv[1] arg_2 sys.argv[2] arg_3 sys.argv[3]def exec_command(command, …

【Matplotlib】基础设置之文本标签03

处理文本 import matplotlib.pyplot as plt import numpy as np %matplotlib inlinematplotlib 对文本的支持十分完善&#xff0c;包括数学公式&#xff0c;Unicode 文字&#xff0c;栅格和向量化输出&#xff0c;文字换行&#xff0c;文字旋转等一系列操作。 基础文本函数 …

pyqt样式表代码

背景图片圆角 图片圆角 //border-radius:45px; border-image: url(:/image/img/psc.jpg); border-top-left-radius :45px; border-bottom-left-radius :45px; border-top-right-radius :45px; border-bottom-right-radius :45px;最小化和关闭按钮 最小化 最大化按钮 frame下…

5.1 QThread的两种使用方式

5.1 QThread的两种使用方式 QThread类用于创建和管理线程,它并不是线程本身。通过使用QThread,我们可以在应用程序中实现并发执行的任务,从而提高应用程序的性能和响应能力,能够有效地利用CPU资源,提高程序运行效率。且QThread创建和管理线程的方式是独立于平台的,不管是…

学习笔记240102 --- 表单无法输入,是否data中没有提前声明导致的

前端框架 &#xff1a;vue2.x 第三方ui组件&#xff1a;ElementUI 操作系统&#xff1a;windows 浏览器&#xff1a;chrome 谷歌 问题描述 表单使用中&#xff0c;没有在data中提前声明参数&#xff0c;当数据回显时&#xff0c;表单无法输入 <el-form :model"queryPa…

【MySQL】窗口函数 Lead 和 Lag 的运用(MySQL版本8+)以及 时间差函数 TIMESTAMPDIFF 的运用

力扣题 1、题目地址 1939. 主动请求确认消息的用户 2、模拟表 表&#xff1a;Signups Column NameTypeuser_idinttime_stampdatetime user_id is the primary key for this table.每行包含有关 ID 为 user_id 的用户的注册时间的信息。 表&#xff1a;Confirmations Co…

制造企业如何打破“信息孤岛”,跑赢从制造到“智造”的破局之路?

随着工业4.0时代到来&#xff0c;制造业乘上了智能制造发展的快车&#xff0c;但“乘客”却偏少。普华永道发布的《2022年数字化工厂转型调研报告》中指出&#xff0c;来自23个国家和地区的700多家受访企业中&#xff0c;只有10%的企业已经完成数字化转型计划或处于转型最后阶段…

Sourcetree安装和配置

先了解Sourcetree是用来做什么的 简单说就是一个有可视化界面的Gti 用途&#xff1a; &#xff08;1&#xff09;克隆(clone)&#xff1a;从远程仓库URL加载创建一个与远程仓库一样的本地仓库 提交(commit)&#xff1a;将暂存文件上传到本地仓库&#xff08;我们在Finder中对本…

详细分析MybatisPlus中的orderBy、orderByDesc、orderByAsc函数

目录 前言1. 概念2. API示例3. 实战 前言 实战中学习并进行补充该类的源码以及应用 1. 概念 在 MyBatis-Plus 中&#xff0c;orderBy、orderByDesc 和 orderByAsc 是用于构建 SQL 查询语句中的 ORDER BY 子句的方法。 这些方法都是通过 QueryWrapper 类的实例来调用的&…

【Java】实验三 抽象类与接口

实验名称 实验三 抽象类与接口 实验目的 1. 深刻理解抽象类、接口的意义。 2. 熟练掌握抽象类和接口的定义、继承抽象类以及实现接口的方法。 3. 理解和掌握多态。 实验内容 &#xff08;一&#xff09;抽象类实验&#xff1a;项目源码中新建一个ahpu.shape的包&a…

低代码:实现数据可视化的强大助手

随着数据在企业中的价值越来越受到重视&#xff0c;数据可视化成为了决策者和业务专家们必备的工具。然而&#xff0c;传统的数据可视化开发过程常常繁琐且耗时&#xff0c;限制了其在应用中的广泛应用。低代码平台的出现&#xff0c;为实现高效的数据可视化提供了新的解决方案…

切换node.js不同版本

切换node.js不同版本 因新项目用到vite4创建项目&#xff0c;输入命令后报错&#xff0c;经查询得知是node版本过低导致&#xff0c;所以需要升级node版本&#xff0c;但是又有老的项目需要维护&#xff0c;因此需要多个版本的node使用需求。 流程&#xff1a; 卸载原有的node…