Airtest APP自动化

目录

1       背景... 2

2       资源准备... 2

3       测试工具安装和验证... 3

3.1        安装python. 3

3.2        安装JDK.. 4

3.3        安装AirtestIDE. 4

3.4        安装雷电模拟器... 5

3.5        安装pycharm.. 6

3.6        安装tomcat作为测试报告发布服务器... 8

3.7        安装git并checkout自动化代码... 9

4       安卓测试环境准备... 11

4.1        USB调试权限申请... 11

4.2        安装测试app. 12

4.3        获取手机以及app的信息... 12

5       IOS测试环境准备... 13

5.1        IOS自动化测试,也需要使用USB调试权限,请参考4.1的内容... 13

5.2        Ios真机执行自动化测试,必须在手机上安装WebDriverAgent服务端,可以找ios开发人员帮忙安装(需手机直连mac电脑,直接编译源码安装到手机)... 13

5.3        将装好WDA插件的ios手机通过USB连接到需要执行自动化测试的电脑上... 13

5.4        使用命令行启动手机端的WebDriverAgent服务,之后保持该命令行开启状态,即可通过自动化脚本执行测试啦    13

6       Airtest三方库微调代码... 14

7       自动化测试项目代码框架... 14

7.1        用例区... 14

7.2        common区域... 15

7.3        conf区域配置文件... 15

7.4        用例执行生成的各类log以及测试报告... 16

7.5        template :测试报告模板... 16

8       用例编写... 16

8.1        AirtestIDE工具的使用... 16

8.2        AirtestIDE模块简单介绍... 19

8.3        数据库操作... 21

8.4        常用小技巧... 22

9       批跑生成报告... 23

9.1        暂不支持多设备批跑,目前只能单设备批量执行用例... 23

9.2        自动区分ios、android执行对应区域用例... 23

9.3        发起批跑操作... 24

9.4        测试报告生成... 26

10              常见问题解决办法... 28

10.1      Adb命令执行报错... 28

10.2      svchost(LogsAndAlerts)占用adb端口解决方法... 28

1背景

当前需要在本地搭建一套以Airtest+IOS真机+Android模拟器为框架的app自动化方案,以构建app自动化能力实现Payment项目的自动化能力要求。因为要安装模拟器图形化实现app的元素定位,因此需要在windows机器下构建此环境。

2资源准备

WINDOWS 10 物理机器 ---------执行机(虚拟机没有显卡,模拟器需要依赖显卡)

python-3.10.2 ----------解释器

jdk-8u212-windows-x64.msi --------Huawei JDK

AirtestIDE-win-1.2.15.zip-----------测试脚本编辑器

pycharm-community.exe -------开发工具

ldinst9_9.0.24.2.exe -------雷电模拟器

iTunes-----------------苹果手机驱动程序(按需安装)

WebDriverAgent-----------------苹果手机端自动化测试插件(按需安装)

apache-tomcat-9.0.78-windows-x64.zip--------测试报告发布使用的tomcat服务器

jenkins.war---------------------------jenkins实现自动化构建测试

3测试工具安装和验证

注意:

1、  在执行机上安装

2、  按需自定义安装路径,以下省略

3、  压缩包先解压,再安装

3.1安装python

软件地址:https://his.huawei.com/csop/index.html#/ToolInfo?toolId=1420375075521036289&samType=his

1.下载最新版本安装即可,按照默认选项安装。

2.新建系统环境变量PYTHON_HOME

C:\Users\你的域账户名\AppData\Local\Programs\Python\Python310

3.Path环境变量中添加:

1)%PYTHON_HOME%

2)%PYTHON_HOME%\Scripts

3)%PYTHON_HOME%\Lib\site-packages\airtest\core\android\static\adb\windows\

注:第三个环境变量需要依赖下文的pip install airtest,为airtest框架自带的adb

4.验证:

5.Pip换源

Pip默认连接的是国外的官方源,在国内下载较慢,需替换为公司的镜像源

方法请参考:

http://3ms.huawei.com/km/blogs/details/12911519

6.Pip安装测试需要的第三方库

pip install airtest

pip install pocoui

pip install jaydebeapi

pip install pymysql

pip install tidevice

3.2安装JDK

安装jdk-8u212-windows-x64.msi,并配置java环境变量,最后验证安装

过程略

3.3安装AirtestIDE

开源工具,下载地址:Airtest Project

AirtestIDE-win-1.2.15.zip直接解压即可使用

3.4安装雷电模拟器

点击执行文件ldinst9_9.0.24.2.exe安装即可

雷电模拟器设置ADB调试的方法:

1、进入软件,点击右上角的三条线按钮。

2、接着点击下拉选项列表中的"软件设置"。

3、进入新界面后,点击左侧中的"其他设置",然后找到右侧中的"ADB调试即",点击选项框的下拉按钮对其进行选择设置就可以了。

开启开发者模式:

1、打开[设置],找到最下方[关于平板电脑]。
2、连续单击7次[版本号],打开[开发者模式]。

验证adb查找设备:命令abd devices -l

3.5安装pycharm

1.安装过程略

2.Pycharm汉化教程:

1)File-settings-HTTP proxy,录入代理配置信息,确定

Host name:proxy.huawei.com

No proxy for:

*.huawei.com, *.inhuawei.com, 10.*, 100.*

2) File-settings-Plugins 在Marketplace分页搜索chinese,选择Chinese(Simplified)LanguagePack/中文语言包  进行安装,安装完成后,重启Pycharm即可。

            

3.6安装tomcat作为测试报告发布服务器

1.apache-tomcat-9.0.78-windows-x64.zip 直接解压至D盘根目录即可

2.进入D:\apache-tomcat-9.0.78\bin 目录,找到setclasspath.bat  用记事本或notpad++等工具打开,找到第90行,set _RUNJAVA="%JRE_HOME%\bin\java.exe"

将java.exe改为javaw.exe,保存

该设置将会使tomcat服务于后台打开,不会再弹黑色的命令框出现

3.进入D:\apache-tomcat-9.0.78\conf 目录,用记事本或notpad++打开server.xml,找到第69行      <Connector port="8080" protocol="HTTP/1.1"

将8080改为其他端口,如8083(8080端口为很多http服务默认端口,容易被占用,如jenkins服务)

3.7安装git并checkout自动化代码

1.Git安装:请于his平台自行下载安装包并进行安装

2.Git秘钥生成与公钥配置:请参照官网流程执行:

https://codehub-y.huawei.com/profile/keys/addssh

3.生成的公私钥位置:C:\Users\(你的域账号)\.ssh

4.主仓代码路径:

https://kwe-y.codehub.huawei.com/Digital_Payment_test/Digital_Payment_test/files?ref=master

5.进入git主仓,找主仓管理员申请加入群组,之后点击Fork按钮,建立自己的私仓

6.进入自己私仓,点击克隆/下载按钮,在ssh克隆分页拷贝克隆地址

7.在本地想要存放用例代码的目录下,右键-Git Bash Here,在弹出的命令行输入框内输入命令git clone (你刚刚复制的私仓克隆地址):

git clone ssh://git@kwe-y.codehub.huawei.com:2222/(你的域账号)/Digital_Payment_test.git

8.注意第一次拉代码,可能会有提示信息,是否继续连接?此情况下请务必手输一个yes并回车,不要直接回车,否则克隆不成功

错误示例:

9.整个项目分为四个目录,这四个目录分别为一个单独的项目:

根据字面意思,分别为使用了airtest以及appium的自动化测试框架,并且区分payment的B端和C端。

10.  打开pycharm,文件-打开-选中克隆出来的Digital_Payment_test目录下,你需要的项目代码(我们这里讲airtest的  C端框架),确定,显示项目结构如图所示,即为成功:

4安卓测试环境准备

4.1USB调试权限申请

使用adb调试安卓模拟器需要使用usb调试权限,右键点击xgate小图标,选择ICPM,即可查看自己是否有USB调试权限,如果只有只读权限,请点击申请端口策略,走电子流申请调试权限。

4.2安装测试app

模拟器直接点击安装apk按钮,选择测试apk,或者直接将要安装的apk文件包拖入到模拟器页面,即可安装app

4.3获取手机以及app的信息

4.3.1获取手机信息

adb devices -l

4.3.2获取app的BndleID

https://blog.csdn.net/qq_37858386/article/details/103142590

输出所有第三方包名:

adb shell pm list packages -3

并将获取到的C端或B端的包名填写到sttings.py中

5IOS测试环境准备

5.1IOS自动化测试,也需要使用USB调试权限,请参考4.1的内容

参考教程:iOS自动化之WDA(WebDriverAgent)安装_51CTO博客_ios webdriveragent

源码1(适合ios11及以下版本):https://github.com/AirtestProject/iOS-Tagent

源码2(对ios11以上版本兼容性好一些):https://github.com/appium/WebDriverAgent

5.3将装好WDA插件的ios手机通过USB连接到需要执行自动化测试的电脑上

(注意黄区信息安全合规,黄区USB插手机需要走信息安全专员报备,请联系自己场地的信息安全专员进行指导,走邮件报备流程,通过后方可接USB

5.4使用命令行启动手机端的WebDriverAgent服务,之后保持该命令行开启状态,即可通过自动化脚本执行测试啦

参考文档:脱离Mac搞iOS自动化,tidevice工具教你轻松实现!

6Airtest三方库微调代码

进入pycharm,连续点击两次shift键,在弹出的搜索框中输入runner.py,打开runner.py,并作出如下修改:

1.第75行注释掉(ios批跑时出现断言失败会导致整个流水线退出)

2.第143/144行两行注释掉(新版本airtest没有这个参数,批跑会报错)

3.第161行注释掉,添加一行内容,写入代码:(原因同第1点)

raise AssertionError

7自动化测试项目代码框架

7.1用例区

7.2common区域

7.3conf区域配置文件

配置文件区域的文件请勿提交MR!!!

7.3.1env-info.yaml根据图中格式配置,从上到下:库名,数据库类型,IP地址:端口,用户名,密码

7.3.2settings.py 根据文件中的注释信息进行配置即可

7.4用例执行生成的各类log以及测试报告

7.5template :测试报告模板

8用例编写

8.1AirtestIDE工具的使用

AirtestIDE是专门用于编写airtest框架自动化用例脚本的IDE工具,可直连测试设备,也可以选择windows本身的页面窗口,并且可以直接执行用例或者仅运行选中代码。

8.1.1启动airtestIDE

从3.3章节解压出来的airtestIDE目录中,双击airtestIDE.exe即可打开该软件

8.1.2创建一个新的用例

首先确定是要编写IOS端还是Android端的用例,区分B端和C端,在对应的用例存放目录下新建用例,选用.air的后缀名

8.1.3测试设备连接

airtestIDE提供了自带的ADB连接工具,能连到安卓模拟器、安卓手机,同时也可以通过http+usbmux://手机UUID 的方式连接到已安装并启动webdriveragent服务的ios手机上,效果如下:

安卓端:

IOS端:

查看IOS手机UUID:

8.2AirtestIDE模块简单介绍

8.2.1Airtest框架

Airtest框架为基于图像识别的一种自动化测试方式,主方法为Template(),如图:

Template()方法传入一张图片,airtest框架自动在测试设备页面区域进行匹配,查找相似度达到要求(默认0.7,图中设置为相似度0.9)的图片

exists(Template())则是判断是否有对应图片,有则返回目标图片中心点的坐标,没有返回False

Airtest还提供了touch()、wait()、swipe等方法用于测试操作,assert_exists()、assert_not_exists()、assert_equal()、assert_not_equal()四个方法用于断言。

另外,airtest用例代码都是用python写就,所以你也可以使用pyton自带的任何方式进行用例编写,也可以手工导入其他的第三方库进行扩展。

8.2.2Poco框架

Poco框架有点类似于appium、selenium,是针对android、ios等应用基于控件定位的自动化测试框架。

使用效果:

在使用poco框架时,需要先创建poco对象,单独调试用例可以点击上方提示信息中的yes按钮,创建poco的引用,放在整个项目中进行批跑的话,可以引用lib.projectUtils 中的getPoco(device())方法即可获取对应设备的poco对象。

Poco也提供了很多方法可以进行使用,具体用法可以查看官方文档。

Airtest、Poco 自动化测试框架官方文档:

欢迎使用 - Airtest Project Docs

Airtest — airtest 文档

8.3数据库操作

项目提供了Mysql、GaussDB两个种类的数据库连接类DBUtil.py,将数据库信息配置到conf.env-info.yaml文件中(详见7.3.1),之后实例化DBUtil()类,即可获取到env-info.yaml中配置的所有数据库的连接对象(包括mysql与gaussdb),之后使用该类的实例化对象的excuteSql()方法,传入数据库名、sql脚本,即可获取返回值的list

8.4常用小技巧

8.4.1根目录加入系统目录

在AirtestIDE中执行用例,系统默认根目录为当前脚本所在目录,但是用例不可避免的要用到项目其他目录下的一些公用方法等等,执行就会报错,如图

解决方法:在用例开始部位添加一行代码:sys.path.append("../../.."),将项目根路径(Digital_Payment_test)加入系统路径,后面的import语句就能正常找到其他模块的代码了。

8.4.2Pycharm中单独执行某个用例

有时候,我们需要在pycharm中单独调试某个用例,但是单独执行用例的时候就会报找不到设备:

这是因为在批跑的准备阶段,会执行connect_device()方法去获取设备的连接,而单独执行时是没有连接到设备的,此时可以临时在代码开始阶段调用一下这个方法连接到设备即可。

8.4.3获取devices设备信息,用于填写settings.py

在AirtestIDE中,打开脚本,连接设备后,按F5执行,在Log查看窗页面看最前面的黄色字体,--device参数后面带的就是设备信息,可以直接将其复制,粘贴到settings.py中

8.4.4在AirtestIDE使用python引入的其他第三方库

有时候我们在项目中引用了一些额外的第三方库,在AirtestIDE中调试用例时会发现找不到对应的方法,比如

问题原因:AirtestIDE工具内置了一个精简版的python环境,只是携带了airtest和pocoui等必须的第三方库,而很多其他库都没有,此时我们需要将AirtestIDE改为使用本地的python环境,详见官方文档:使用AirtestIDE运行脚本 - Airtest Project Docs

9批跑生成报告

9.1在settings.py中配置好设备之后即可批量执行用例

本框架目前已支持多设备多进程同时批跑用例,支持安卓+IOS机器同时批跑,只需在/conf/settings.py中配置好devices数组即可

9.2自动区分ios、android执行对应区域用例

根据settings.py中配置的devices[]的设备类型(安卓/IOS),用例批跑会自动区分并执行对应air_Android/air_IOS目录下的测试用例

9.3发起批跑操作

9.3.1Pycharm端手工发起批跑

Pycharm需要安装插件才能支持在IDE窗口直接运行bat文件,打开bat文件,pycharm会自动检测并推荐相关插件

点击确认安装即可

打开项目根目录下的“启动测试.bat”,修改第二行runCase.py后面的参数为需要的参数(partner/customer/all),之后右键运行即可启动批跑用例

9.3.2Cmd命令行手工发起批跑

假设前提条件:settings.py 配置的devices = ['android://127.0.0.1:5037/emulator-5554']

打开资源管理器,进入项目根目录,用以下两种方法均可发起批跑:

方法1:如9.3.1章节,修改 启动测试.bat 中的参数后保存,直接双击执行该bat文件即可

方法2:进入cmd命令行程序,输入带参数的命令如下:

启动测试4Jenkins.bat customer

即可开始批量执行/air_Android/CustomerApp 目录下的所有.air后缀的测试用例

9.3.3Jenkins流水线发起批跑

在本地搭建Jenkins环境,并配置流水线,即可在线发起、定时发起等方式通过流水线执行自动化用例批跑,具体配置如下:

注:Jenkins安装与配置本指引文档略,有需要的可自行研究

9.4测试报告生成

9.4.1本地测试报告查看

详见7.4章节,每次执行完用例后,可以前往项目根路径下的report目录查看report_前缀的html文件,用浏览器打开,页面包含测试设备,开始结束时间,累积耗时,成功与失败用例条数,各用例执行是否通过的明细,执行结果饼状图:

9.4.2Tomcat服务器发布测试报告

前提:本地安装了tomcat,详见章节3.6

注意:如要发给别人查看测试报告,需将tomcat_addr的IP地址改为自己本机IP地址,上图所示127.0.0.1的地址只能自己本机查看测试报告

9.4.3Email发送测试报告

在settings.py中,打开发送邮件开关,配置好发送方邮箱,输入自己的域账户名和密码,并配置接收方邮件列表,即可在完成批量用例执行后,自动发送测试报告邮件到指定人员邮箱。

如图,收到的邮件中有超链接可以直接在浏览器中查看测试报告,也可以分别点击明细列表中的用例名称查看单个用例的测试执行报告:

10  常见问题解决办法

10.1Tidevice 命令找不到手机

安装了WDA的iphone通过USB连接电脑后,电脑命令行输入tidevice list,找不到手机:

可能是没有安装手机驱动,请前往苹果官网下载并安装itunes

iTunes - Apple (中国大陆)

(目前需要从windows自带的Microsoft Store进行下载安装,照做即可)

10.2Adb命令执行报错

原因:查看5037端口占用(adb默认端口)

netstat -ano |findstr 5037

查看占用端口的应用程序

tasklist |findstr 4788

结束占用端口应用程序

taskkill /T /F /PID 4788

检查adb命令是否正常

adb devices -l

10.3svchost(LogsAndAlerts)占用adb端口解决方法

W3找到的方法:http://3ms.huawei.com/km/blogs/details/12686661

adb默认端口:5037

问题:adb端口被系统任务svchostLogsAndAlerts)占用。

解决:

1、修改端口号,不起作用。【问题未解决】

2、杀死进程,很快被重新占用。【问题未解决】

3、删除svchost.exe + 禁止服务自启动 + 删除注册表。【多台PC上实践,问题解决】

注:只【删除svchost.exe】起作用的话,可以跳过操作【禁止服务自启动】和【删除注册表】。

完整解决步骤:

【步骤1:找出谁占用了端口】

1)命令查找5037端口占用情况(此处,占用PID2720):netstat -ano | findstr :5037

2)命令查看2720详情(此处,名为svchost.exe,类型为Services。是这个服务占用端口。):tasklist|findstr "2720"


3)“任务管理器”中找出PID2720对应的服务信息。鼠标放2720条目上,鼠标右键“转到详细信息”。


4)鼠标放2720条目上,鼠标右键“打开文件所在的位置”



【步骤2:删除svchost.exe

1)修改文件权限(有删除权限且能直接删除svchost.exe文件的请跳过该步骤):svchost.exe为系统携带文件,无法直接删除。

鼠标右键“属性”-->> 安全 -->> 高级 -->>更改 -->> 输入要选择的对象名称(电脑左下角“开始”-->> 检查名称(选中对应的账户) -->> 确定 -->> 为当前账户添加“完全控制”权限

<属性>

<安全><高级>

<更改>


<查看电脑账户>


<输入要选择的对象名称><检查名称>

<选中电脑账户><确定>

<编辑><为当前账户添加“完全控制”文件权限>

<修改svchost.exe文件后缀名>

2)任务管理器中,结束PID2720svchost.exe任务。

3)本地服务中,禁用svchost.exe服务自启动。

4)注册表中,删除LogsAndAlerts

可以搜索LogsAndAlerts关键字,或者按路径进入(我的路径是:计算机\HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\Windows NT\CurrentVersion\Svchost)。

5)删除svchost.txt(即svchost.exe后缀名更改后的文件),如无法删除,则重启电脑后再删除。

6)验证adb端口ok,大功告成!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值