APP自动化搭建与应用
APP自动化环境搭建
用于做APP端UI自动化,adb连接手机设备。
需要的工具java编辑器:jdk、Android-sdk软件开发工具组、appium的python客户端、nodes.js、夜神模拟器、apk包、uiautomatorviewer
第一步:安装sdk,里面包含建立工具build-tools 、拓展的附加包extras、安装下载的所有Android平台platform-tools、开发工具tools。安装之后在电脑设置找到高级系统设置-环境变量,用户变量名ANDROID_HOME,变量值填入sdk文件夹的路径。然后添加环境变量,在路径下添加四个工具包路径和build-tools里的android-4.4W文件夹路径。添加%ANDROID_HOME%\tools.
第二步:安装appium软件,,找到应用程序创建桌面快捷方式,在pycharm下安装或dos下在线安装 python操作客户端(dos窗口下安装)。dos使用命令:pip install Appium-Python-Client==1.0.2
第三步:安装node.js。在dos中查看版本,命令node -v,然后app自动化测试环境检查:appium-doctor
第四步:安装夜神模拟器并创建桌面快捷方式。
第五步:用dos连接模拟器adb connect 127.0.0.1:62001,服务地址在appium应用查看。
第六步:安装apk包。adb install +包名的绝对路径,apk包就下载到模拟器中了。
第七步:查看包名和活动路径名:aapt d badging 包名的绝对路径。(卸载安装包:adb uninstall com.baidu.yuedu)(adb shell pm list packages 查看已安装的应用,查找第三方包)( adb shell pm list packages -3 查看第三方已安装的应用)(adb devices 查看当前连接设备)(adb shell 进入到shell ctrl+c 退出 )(adb logcat 查看日志 ctrl+c 退出)(windows往手机上sdk传递文件:格式:adb push 文件路径/文件名 手机存放的位置)(手机往本地传递文件:
格式:adb pull 手机文件路径/手机文件 本地文件路径)(截图:格式: adb shell screencap -p 文件/图片.后缀名)(启动adb server 命令:adb start-server)(停止adb server 命令 adb kill-server )(adb disconnect 断开无线连接)
实战流程:
1.打开模拟器、appium、uiautomatorviewer
2.dos中连接appium;adb connect 127.0.0.1:62001
3.安装apk测试包:adb install D:\测试课程记录\jenkins\搭建环境需要的安装包\baiduyuedu_3760.apk
4.appium勾选override existing session,右上角启动appium
5.用uiautomatorviewer定位插件,打开,点击左上角获取页面元素,查看定位
6.xpath没有的话更换jar插件,将新的jar包放在sdk\tools\lib和sdk\platforms\android-20 下,重新启动应用
7.在模拟器中查看平台系统、平台版本和设备名称,在dos中获取apk包名和活动路径名,在appium中查看服务地址,打开pycharm输入要执行的自动化代码,点击运行
一、app自动化测试环境和用途:
主要用于做app端UI自动化,熟悉adb命令(a表示安卓,d表示debug,b表示桥)
adb是连接手机设备
二、搭建环境的工具
(1)jdk 已安装的省略这步,java的一种编译器 (本地windows安装)
jdk安装和配置环境变量

(2)查看jdk版本
在dos中输入java -version查看1.8.0_60
(3)android-sdk 软件开发工具组,里面存放一些类和函数

路径:D:\测试课程记录\jenkins\搭建环境需要的安装包\adt-bundle-windows-x86_64-20140702\sdk

(3)appium-python-client appinm的python的客户端


(4)nodes.js

(5)模拟器(夜神模拟器和逍遥模拟器)

(6)apk包、抓取软件

app环境的搭建
1、安装sdk
第一步:装sdk
详解:SDK (Software Development Kit)翻译成中文就是"软体开发工具组"
是用来帮一个产品或平台 开发应用程式的工具组,由产品的厂商提供给开发者使用的。
通常是 某一家厂商针对某一 平台 或 系统 或 硬体 所发布出来用以开发应用程式的工具组,在这个工具包里面,可能包含了各式各样的开发工具,模拟器等。给 Android平台 使用的 Android SDK 就是用来开发 Android系统上面的应用程式。
sdk存放了类,函数
SDK下包的说明:
1、:build-tools :建立工具
2、:extras:扩展的附加包
3、:platforms:安装下载的所有Android平台,分版本存放
4、:platform-tools:平台相关的工具
5、:tools:应用Android平台进行开发所需要的一些开发工具
(1)步骤:打开sdk:
(2)查看sdk下文件夹
(3)添加环境变量
点击电脑右键-高级系统设置-环境变量
变量名:ANDROID_HOME
变量值:sdk安装的路径:D:\测试课程记录\jenkins\搭建环境需要的安装包\adt-bundle-windows-x86_64-20140702\sdk

在path下添加路径:
D:\测试课程记录\jenkins\搭建环境需要的安装包\adt-bundle-windows-x86_64-20140702\sdk\build-tools
D:\测试课程记录\jenkins\搭建环境需要的安装包\adt-bundle-windows-x86_64-20140702\sdk\build-tools\android-4.4W
D:\测试课程记录\jenkins\搭建环境需要的安装包\adt-bundle-windows-x86_64-20140702\sdk\platforms
D:\测试课程记录\jenkins\搭建环境需要的安装包\adt-bundle-windows-x86_64-20140702\sdk\platform-tools
D:\测试课程记录\jenkins\搭建环境需要的安装包\adt-bundle-windows-x86_64-20140702\sdk\tools

安装appium


pycharm下安装或dos下在线安装 python操作客户端(dos窗口下安装)
pip install Appium-Python-Client==1.0.2

安装nodes.js

dos查看版本node -v

app自动化测试环境检查:appium-doctor

安装模拟器(讲课用夜神:62001)

安装好夜神模拟器创建快捷方式


adb 命名(重点)
(1)adb connect 127.0.0.1:62001 连接模拟器设备

(2)模拟器的端口号
夜神模拟器 端口号 :62001
海马玩模拟器 端口号:26944
mumu模拟器端口号:7555
天天模拟器 端口号:6555
(3)adb install +包名的绝对路径 安装apk包
案例:adb install D:\测试课程记录\jenkins\搭建环境需要的安装包\baiduyuedu_3760.apk
“D:\测试课程记录\jenkins\搭建环境需要的安装包\baiduyuedu_3760.apk”



(4)活动路径名:
查询包名或活动路径名:aapt d badging D:\测试课程记录\jenkins\搭建环境需要的安装包\baiduyuedu_3760.apk
包名:

活动路径名:

(5)adb uninstall 包名:
包名name=‘com.baidu.yuedu’
卸载安装包:adb uninstall com.baidu.yuedu

(6)adb shell pm list packages 查看已安装的应用,查找第三方包
adb shell pm list packages -3 查看第三方已安装的应用


(7)adb devices 查看当前连接设备

(8)adb shell 进入到shell

ctrl+c 退出
(9)adb logcat 查看日志

ctrl+c 退出
(10)windows往手机上sdk传递文件:
格式:adb push 文件路径/文件名 手机存放的位置
案例:adb push E:\bb.txt /data
sdk文件

本地存放的文件路径–模拟器上的路径

(11)手机往本地传递文件:
格式:adb pull 手机文件路径/手机文件 本地文件
案例:adb pull /data/bb.txt E:\
从模拟器上拉取文件到本地

(12)截图:
格式: adb shell screencap -p 文件/图片.后缀名
案例:adb shell screencap -p /data/user/j.png


(13)启动adb server 命令:
adb start-server
(14)停止adb server 命令
adb kill-server
(15)adb disconnect 断开无线连接
app自动化实战运用
一、打开模拟器
二、cmd中打开dos命令连接appium
adb connect 127.0.0.1:62001
三、安装测试包
adb install D:\测试课程记录\jenkins\搭建环境需要的安装包\baiduyuedu_3760.apk
下载好的jdk通过jenkins打包,通过URL或链接下载

四、打开appium
勾选session关闭,启动按钮开启appium


五、( 定位元素没有xpath的就删除原有uiautomatorviewer.bat,替换成新的)
开始定位,定位插件
“D:\测试课程记录\jenkins\搭建环境需要的安装包\adt-bundle-windows-x86_64-20140702\sdk\tools\uiautomatorviewer.bat”

创建快捷方式

六、打开,连接获取页面元素



七、更换插件(原有插件)
(1)更换sdk下tools
路径:D:\测试课程记录\jenkins\搭建环境需要的安装包\adt-bundle-windows-x86_64-20140702\sdk\tools
替换启动文件 bat
(2)将新的jar包放在sdk\tools\lib 下
路径:D:\测试课程记录\jenkins\搭建环境需要的安装包\adt-bundle-windows-x86_64-20140702\sdk\tools\lib

(3)将jar放在sdk\platforms\android-20
路径:D:\测试课程记录\jenkins\搭建环境需要的安装包\adt-bundle-windows-x86_64-20140702\sdk\platforms\android-20

然后点击bat启动
查看是否有xpath元素

模拟器设置中查看型号


创建一个python文件,写入自动化代码
案例1:
from appium import webdriver
from time import *
cs={
‘platformName’:‘Android’, #平台系统:Android or Ios
‘deviceName’:‘OPPO R17’, #设备名称
‘platformVersion’:‘android-5.1W’, #平台版本
‘appPackage’:‘com.moji.mjweather’, #包名
‘appActivity’:‘com.moji.mjweather.LauncherActivity’, #activity
‘unicodeKeyboard’: True, #使用unicode编码方式发送字符串 }
‘resetKeyboard’:True} #是将键盘隐藏起来
dx=webdriver.Remote(“http://127.0.0.1:4723/wd/hub”,cs)
sleep(10)
dx.find_element_by_id(“com.moji.mjweather:id/jc”).click() #同意进入
dx.find_element_by_id(“com.moji.mjweather:id/azz”).send_keys(“北京市”)
查看所需的参数数据:
(1)app端查看设备和版本
‘platformName’:‘Android’, #平台系统:Android or Ios
‘deviceName’:‘SMG9350’, #设备名称
‘platformVersion’:‘android4.4W’, #平台版本
(2)dos查看包名和活动路径名(命令:aapt d badging D:\测试课程记录\jenkins\搭建环境需要的安装包\baiduyuedu_3760.apk)
‘appPackage’:‘com.baidu.yuedu’, #包名
‘appActivity’:‘com.baidu.yuedu.splash.SplashActivity’, #activity 活动路径名
(3)appium查看服务地址
dx=webdriver.Remote(“http://127.0.0.1:4723/wd/hub”,cs)

from appium import webdriver
from time import sleep
desired_caps={
‘platformName’:‘Android’, #平台系统:Android or Ios
‘deviceName’:‘SMG9350’, #设备名称
‘platformVersion’:‘android4.4W’, #平台版本
‘appPackage’:‘com.baidu.yuedu’, #包名
‘appActivity’:‘com.baidu.yuedu.splash.SplashActivity’, #activity
‘unicodeKeyboard’: True, #使用unicode编码方式发送字符串 }
‘resetKeyboard’:True} #是将键盘隐藏起来
driver=webdriver.Remote(‘http://127.0.0.1:4723/wd/hub’,desired_caps)
(一) ‘platformName’:‘Android’, #平台系统:Android or Ios
‘deviceName’:‘OPPO R17’, #设备名称
‘platformVersion’:‘android5.1W’, #平台版本
修改手机类型

执行成功,在app端可以查看

自动打开书架代码:
from appium import webdriver #导入appium模块
from time import * #导入时间
#连接参数 cs
cs={
‘platformName’:‘Android’, #平台系统:Android or Ios
‘deviceName’:‘OPPO R17’, #设备名称
‘platformVersion’:‘android-5.1W’, #平台版本
‘appPackage’:‘com.baidu.yuedu’, #包名
‘appActivity’:‘com.baidu.yuedu.splash.SplashActivity’, #活动activity
‘unicodeKeyboard’: True, #使用unicode编码方式发送字符串 }
‘resetKeyboard’:True} #是将键盘隐藏起来
dx=webdriver.Remote(“http://127.0.0.1:4723/wd/hub”,cs)
sleep(12)
dx.find_element_by_id(“com.baidu.yuedu:id/lefttitle”).click()
任务:
1、搭建appium 2、写app自动化5条 3、梳理appium自动化搭建流程并写文档 4.用pycharm+python+appium编写五条测试用例并生成测试报告
相关文章:
APP自动化搭建与应用
APP自动化环境搭建 用于做APP端UI自动化,adb连接手机设备。 需要的工具java编辑器:jdk、Android-sdk软件开发工具组、appium的python客户端、nodes.js、夜神模拟器、apk包、uiautomatorviewer 第一步:安装sdk,里面包含建立工具bu…...
kafka-windows集群部署
kafka-windows集群部署目录 文章目录 kafka-windows集群部署目录前言一、复制出来四个kafka文件夹二、修改集群每个kafka的配置文件四、启动zookeeper,kafka集群 前言 部署本文步骤可以先阅读这一篇博客,这篇是关于单机kafka部署测试的。本文用到的文件…...
4个顶级的大模型推理引擎
LLM 在文本生成应用中表现出色,例如具有高理解度和流畅度的聊天和代码完成模型。然而,它们的庞大规模也给推理带来了挑战。基本推理速度很慢,因为 LLM 会逐个生成文本标记,需要对每个下一个标记进行重复调用。随着输入序列的增长&…...
Oracle中ADD_MONTHS()函数详解
文章目录 前言一、ADD_MONTHS()的语法二、主要用途三、测试用例总结 前言 在Oracle数据库中,ADD_MONTHS()函数用于在日期中添加指定的月数。 一、ADD_MONTHS()的语法 ADD_MONTHS(date, n) 其中,date是一个日期值,n是一个整数值,…...
【SQL】掌握SQL查询技巧:高效数据整合与查询优化
目录 1. SQL 的基本构成2. SQL 联接(JOIN)2.1 内联接(INNER JOIN)2.2 外联接(OUTER JOIN)2.2.1 左外联接(LEFT JOIN)2.2.2 右外联接(RIGHT JOIN)2.2.3 全外联…...
一个月学会Java 第5天 控制结构
Day5 控制结构 这么叫可能有些就算有基础的人也看不懂,其实就是if-else、switch-case、for、while、do-while这几个,没基础的听到了这个也不要慌张,这几个是程序的基础,多多训练就好 第一章 顺序结构 这章其实没有什么好讲的&…...
世界职业院校技能大赛(大数据技术与应用)参赛项目介绍内容模拟示例参考
最近关注世界职业院校技能大赛的同学应该都知道了,比赛已经正式改为”世界职业院校技能大赛“了,不仅仅是名称变化,而且比赛的形式也发生了巨大的改革,2024年世界职业院校技能大赛设置42个赛道,要求各比赛项目提交项目…...
【Python】文件及目录
文章目录 概要一、文件对象的函数1.1 open()函数1.2 文件对象的函数1.3 with语句 二、基于os和os.path模块的目录操作三、基于Pandas的文件处理3.1 Pandas读写各种类型文件 其他章节的内容 概要 本文主要将了打开文件的函数open()的参数,以及文件对象的函数&#x…...
OpenHarmony(鸿蒙南向开发)——标准系统方案之瑞芯微RK3566移植案例(下)
往期知识点记录: 鸿蒙(HarmonyOS)应用层开发(北向)知识点汇总 鸿蒙(OpenHarmony)南向开发保姆级知识点汇总~ 持续更新中…… 概述 OpenHarmony Camera驱动模型结构 HDI Implementation&#x…...
霓虹灯数字时钟(可复制源代码)
文章目录 一、效果演示二、CodeHTMLCSSJavaScript 三、实现思路拆分CSS 部分JavaScript 部分 四、源代码 一、效果演示 文末可一键复制完整代码 二、Code HTML <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><…...
大模型微调技术之 LoRA:开启高效微调新时代
一、LoRA 简介 LoRA,即低秩适应(Low-Rank Adaptation),是一种用于微调大型语言模型的技术,旨在以较小的计算资源和数据量实现模型的快速适应特定任务或领域。 LoRA 方法通过引入低秩近似的思想,对大型预训…...
【Vue】Vue2(2)
文章目录 1 数据代理1.1 回顾Object.defineproperty方法1.2 何为数据代理1.3 Vue中的数据代理 2 事件处理2.1 事件的基本使用2.2 事件修饰符2.3 键盘事件 1 数据代理 1.1 回顾Object.defineproperty方法 <!DOCTYPE html> <html><head><meta charset&quo…...
如何实现一个基于 HTML+CSS+JS 的任务进度条
如何实现一个基于 HTMLCSSJS 的任务进度条 在网页开发中,任务进度条是一种常见的 UI 组件,它可以直观地展示任务的完成情况。本文将向你展示如何使用 HTML CSS JavaScript 来创建一个简单的、交互式的任务进度条。用户可以通过点击进度条的任意位置来…...
学会流体力学,冬天洗澡再也不冷啦
前些日子收到一位网友“究极理性怪物”的私信,说最近在学校的公共浴室洗澡时,快被冻死了,希望我从流体力学角度帮他分析一下浴室的温度分布,以便找到相对温暖的洗澡位置。 我看到后觉得很有意思,就与他展开了关于澡堂…...
WPF下使用FreeRedis操作RedisStream实现简单的消息队列
Redis Stream简介 Redis Stream是随着5.0版本发布的一种新的Redis数据类型: 高效消费者组:允许多个消费者组从同一数据流的不同部分消费数据,每个消费者组都能独立地处理消息,这样可以并行处理和提高效率。 阻塞操作:消费者可以设置阻塞操作,这样它们会在流中有新数据…...
踩坑NVTX
最开始在 【简说】NVTX Nsight Nvidia性能分析利器 看到NVTX的时候,我觉得这是一个好东西啊,可以详细说明每一段时间对应的是哪一段程序。 看了一下github,他的文章已经过时,现在已经不需要链接动态库了,直接includ…...
Ubuntu修改IP方法
方法一:通过图形化界面修改IP 打开网络设置: 点击桌面右上角的网络图标,然后选择“设置”或“网络设置”。 选择网络接口: 在网络设置窗口中,选择你正在使用的网络接口(有线或无线网络)。 进…...
C++——STL简介
目录 一、什么是STL 二、STL的版本 三、STL的六大组件 没用的话..... 不知不觉两个月没写博客了,暑假后期因为学校的事情在忙,开学又在准备学校的java免修,再然后才继续开始学C,然后最近打算继续写博客沉淀一下最近学到的几周…...
[linux] 磁盘清理相关
在 CentOS 7 中清理磁盘空间可以通过多种方法实现,以下是一些常用的步骤和命令: 1. 查找和删除大文件 你可以使用 find 命令查找占用大量空间的文件: find / -type f -size 100M 2>/dev/null这条命令会查找大于 100 MB 的文件。你可以根…...
【笔记】DDD领域驱动设计
同名读书笔记,对于一些自觉重要的点进行记录。 扩展资源:github.com/evancyz/ddd-learning UML中类图的一些基本知识 - jack_Meng - 博客园 最后的第四部分暂时没看 Part Two 模型驱动设计的构造块 Chapter 5 软件中所表示的模型 5.2 模式:…...
后进先出(LIFO)详解
LIFO 是 Last In, First Out 的缩写,中文译为后进先出。这是一种数据结构的工作原则,类似于一摞盘子或一叠书本: 最后放进去的元素最先出来 -想象往筒状容器里放盘子: (1)你放进的最后一个盘子(…...
Python|GIF 解析与构建(5):手搓截屏和帧率控制
目录 Python|GIF 解析与构建(5):手搓截屏和帧率控制 一、引言 二、技术实现:手搓截屏模块 2.1 核心原理 2.2 代码解析:ScreenshotData类 2.2.1 截图函数:capture_screen 三、技术实现&…...
Ubuntu系统下交叉编译openssl
一、参考资料 OpenSSL&&libcurl库的交叉编译 - hesetone - 博客园 二、准备工作 1. 编译环境 宿主机:Ubuntu 20.04.6 LTSHost:ARM32位交叉编译器:arm-linux-gnueabihf-gcc-11.1.0 2. 设置交叉编译工具链 在交叉编译之前&#x…...
【第二十一章 SDIO接口(SDIO)】
第二十一章 SDIO接口 目录 第二十一章 SDIO接口(SDIO) 1 SDIO 主要功能 2 SDIO 总线拓扑 3 SDIO 功能描述 3.1 SDIO 适配器 3.2 SDIOAHB 接口 4 卡功能描述 4.1 卡识别模式 4.2 卡复位 4.3 操作电压范围确认 4.4 卡识别过程 4.5 写数据块 4.6 读数据块 4.7 数据流…...
江苏艾立泰跨国资源接力:废料变黄金的绿色供应链革命
在华东塑料包装行业面临限塑令深度调整的背景下,江苏艾立泰以一场跨国资源接力的创新实践,重新定义了绿色供应链的边界。 跨国回收网络:废料变黄金的全球棋局 艾立泰在欧洲、东南亚建立再生塑料回收点,将海外废弃包装箱通过标准…...
【SQL学习笔记1】增删改查+多表连接全解析(内附SQL免费在线练习工具)
可以使用Sqliteviz这个网站免费编写sql语句,它能够让用户直接在浏览器内练习SQL的语法,不需要安装任何软件。 链接如下: sqliteviz 注意: 在转写SQL语法时,关键字之间有一个特定的顺序,这个顺序会影响到…...
uniapp中使用aixos 报错
问题: 在uniapp中使用aixos,运行后报如下错误: AxiosError: There is no suitable adapter to dispatch the request since : - adapter xhr is not supported by the environment - adapter http is not available in the build 解决方案&…...
python报错No module named ‘tensorflow.keras‘
是由于不同版本的tensorflow下的keras所在的路径不同,结合所安装的tensorflow的目录结构修改from语句即可。 原语句: from tensorflow.keras.layers import Conv1D, MaxPooling1D, LSTM, Dense 修改后: from tensorflow.python.keras.lay…...
AI病理诊断七剑下天山,医疗未来触手可及
一、病理诊断困局:刀尖上的医学艺术 1.1 金标准背后的隐痛 病理诊断被誉为"诊断的诊断",医生需通过显微镜观察组织切片,在细胞迷宫中捕捉癌变信号。某省病理质控报告显示,基层医院误诊率达12%-15%,专家会诊…...
Linux 内存管理实战精讲:核心原理与面试常考点全解析
Linux 内存管理实战精讲:核心原理与面试常考点全解析 Linux 内核内存管理是系统设计中最复杂但也最核心的模块之一。它不仅支撑着虚拟内存机制、物理内存分配、进程隔离与资源复用,还直接决定系统运行的性能与稳定性。无论你是嵌入式开发者、内核调试工…...
