airtest测试网页_Airtest自动化测试超级详细教程

Airtest自动化测试

1. 安装AirtestIDE

AirtestIDE下载地址。我下载的是AirtestIDE_2019-09-10_py3_Mac10-12.dmg。下载完成之后,直接安装即可。

2. 设备连接

2.1 部署iOS-Tagent

git clone git@github.com:AirtestProject/iOS-Tagent.git

把手机连接到电脑上然后 打开Xcode, product -> Scheme -> WebDriverAgentRunner 如图

1.png

然后点击 product -> Test 当出现如图的情况,说明iOS-Tagent环境部署成功

(我自己本地部署后的服务器地址是: http://172.20.10.7:8100)

2.png

2.2 设置代理

iproxy 可以把iPhone端口映射到电脑端口,那么就可以通过访问电脑的端口访问到手机的端口了

brew install libimobiledevice // 通过 Homebrew 安装iproxy

iproxy 8100 8100 // 运行iproxy,将手机的8100端口,映射到电脑的8100端口上。这样我们就能通过访问电脑的8100端口来访问到手机了 (我运行部署的环境是8100,所以写的8100)

启动成功后,可以试着在浏览器访问 http://172.20.10.7:8100/status ,如果访问成功并且可以看到一些json格式的手机信息,即表示启动成功。如图所示:

3.png

4.png

2.3 AirtestIDE与iPhone连接

通过ip方式连接iPhone,实时刷新界面,可进行UI测试。在AirtestIDE的iOS地址栏填入地址 http://172.20.10.7:8100,点击 “connect” 连接设备,开始编写你的Airtest测试脚本了。如图所示

5.png

注意: Xcode中的iOS Simulator模拟器部署过程和真机一样,但是可以省略步骤2.2 设置代理,不需要另外执行proxy

3. 脚本编写

3.1 Airtest图像编写脚本 例如:使用 touch 操作,选择touch 按钮 如图

7.png

3.2 Poco编写脚本 如图

8.png

9.png

具体详情 可以参考 Poco脚本录编写。

4. 运行脚本

4.1 使用AirtestIDE运行脚本

单击AirtestIDE的 Run Script 按钮即可 如图

10.png

4.2 使用AirtestIDE命令行运行

将运行脚本时 AirtestIDE 生成的这段命令行代码(如下图圈出来的部分)复制到你的命令行终端里,回车运行就可以了

11.png

注意: 这种使用AirtestIDE命令行来运行脚本的方式,是一个简单快速的方式,假如想要批量执行、同时执行的话,可能会遇到效率不佳的问题。

4.3 使用本地python环境运行脚本

部署Python环境

Mac 系统自带Python 环境,环境支撑Python(2.7或<=3.6),我们更推荐使用 Python3

brew install python3

Airtest安装

pip install airtest

Poco安装

pip install pocoui //请注意库的名称为 pocoui,不要填错

环境部署完成后,我们就能够脱离AirtestIDE,在不同的宿主机器和被测平台上运行脚本了。使用python命令行运行脚本

airtest run untitled.air --device ios:///手机设备号 --log log/

python -m airtest run untitled.air --device Android:///手机设备号 --log log/

这两个命令行的效果是相同的,我们用airtest运行了一个叫做 untitled.air 的脚本,传入了 --device 和 --log 两个参数,分别是我们的手机设备和log输出目录。

5. 生成报告

5.1 在IDE里点击生成报告按钮来生成报告

在运行脚本后,可以立即在log窗口中看到当前脚本执行成功还是失败,然而不能够看到更加详细直观的执行结果。在AirtestIDE中,可以点击上侧图标菜单的最后那个“查看报告”的按钮,快捷键为Ctrl+L,稍后片刻将会自动使用默认浏览器打开结果报告页面。如图所示:

12.png

另外,我们可以在AirtestIDE上右键点击脚本标题,选择“打开报告”,来打开log所在的文件夹。

13.png

5.2 使用命令行来生成报告

我们的脚本运行过程,与报告生成过程是独立的两个步骤,所以我们可以先用airtest run 指令来运行脚本:

# 用airtest运行了untitled.air这个脚本

# airtest run 后面接的是脚本文件的路径

airtest run untitled.air

注意: 如果airtest run 指令没有指定--log参数,将不保存log内容和截图,且命令行会提示do not save log;如果指定--log log/, 将把生成的log内容放到当前命令行的执行目录里;如果指定了--log +某个指定目录 参数,log内容与截图将会放在指定目录里。

然后,我们可以运行 airtest report 指令来生成一份HTML格式的报告:

# 最简单的命令行,log文件与脚本文件在同一文件夹里

# 运行以下指令,在当前目录生成一个log.html

airtest report untitled.air log.html

*注意:在有些浏览器上打开报告可能出现白屏现象,这是由于官方对有些浏览器没有适配全,建议用最新版本的chrome去打开。

6. 常见的问题

6.1 如何在模拟器安装应用

把xx.ipa 改成xx.zip,解压得到xx.app

打开模拟器, 在终端运行 xcrun simctl install booted xx.app

tips: 不可以把真机 app 包安装在iOS模拟器上,真机的app是基于arm的,而模拟器是运行在 X86 指令集上的,强行安装会导致闪退的问题。

6.2 如何进行iOS多机测试

目前暂未开放iOS多机测试功能

6.3 Api 支持状况

iOS设备与Android设备有很大的不同,以下通用的 Airtest 的 API 在iOS上都是支持的:

start_app: OK

stop_app: OK

snapshot: OK

home: OK

touch: OK

swipe: OK

text: OK

wait: OK

exists: OK

find_all: OK

assert_exists: OK

assert_not_exists: OK

但是以下API是不支持的: - wake: 暂未支持 (考虑用home方法替代) - keyevent: 只支持home 事件 - clear_app: 暂未支持 - install: 暂未支持 - uninstall: 暂不支持

6.4 有些浏览器打开生成的报告空白

这是由于官方对有些浏览器没有适配全,建议用最新版本的chrome去打开。

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

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

相关文章

linux git命令如何简写,简写Git用法,基本命令

git的简单介绍安装首先&#xff0c;你可以试着输入git&#xff0c;看看系统有没有安装Git&#xff1a;graceWIN-VIMIDCOQM7L:/var/www/html/BBB$ gitThe program git is currently not installed. You can install it by typing:sudo apt-get install git若显示,代表已安装grac…

elementui table渲染不出来_测试开发不会前端?ElementUI你需要了解一下

在测试部门内平台类工具的开发需求越来越多&#xff0c;因此也推动了测试开发职位薪水逐步升高。如果开发一个web测试平台&#xff0c;前端技术是必不可少的&#xff0c;像是js、css等。一般在企业内&#xff0c;一个正式产品的前后端开发是职责分明的。端开发只负责业务逻辑&a…

python 画图 线标注_最简洁的Python时间序列可视化实现

TUSHARE 金融与技术学习兴趣小组 翻译整理、编辑 | 一只小绿怪兽译者简介&#xff1a;北京第二外国语学院国际商务专业研一在读&#xff0c;目前在学习Python编程和量化投资相关知识。作者&#xff1a;DataCamp时间序列数据在数据科学领域无处不在&#xff0c;在量化金融领域也…

linux伙伴系统接口,Linux伙伴系统(一)--伙伴系统的概述

伙伴系统的概述Linux内核内存管理的一项重要工作就是如何在频繁申请释放内存的情况下&#xff0c;避免碎片的产生。Linux采用伙伴系统解决外部碎片的问题&#xff0c;采用slab解决内部碎片的问题&#xff0c;在这里我们先讨论外部碎片问题。避免外部碎片的方法有两种&#xff1…

c# 创建委托 消息订阅_C#面向对象之委托和事件

委托1.定义&#xff1a;委托也叫代理&#xff0c;就是把事情交给别人来做。2.声明委托语法&#xff1a; delegate 返回类型 委托名称();委托使用步骤1.声明委托public delegate int CalculatorDelegate(int a,int b);2.根据委托类型创建方法3.创建委托对象并指定方法Calculator…

linux 集群 lvs,linux集群--LVS集群

拓扑图&#xff1a;1、LVS配置脚本&#xff1a;需要安装&#xff1a;ipvsadm-1.24-10.i386.rpmvi /etc/rc.d/init.d/lvsdr#!/bin/bashvip192.168.0.116web1192.168.0.104web2192.168.0.114./etc/rc.d/init.d/functionscase "$1" instart)echo "startlvs-dr&quo…

服务器连接工具mat_将个人笔记本改造成Linux简易服务器

实验过程1、开启Ubuntu系统的ssh服务开启之后其他电脑就可以通过ssh登录Ubuntu服务器&#xff0c;通过安装openssh-server就可以达到目的。(1)查看主机有没有ssh服务在Ubuntu系统桌面右击后点击“打开终端”&#xff0c;输入一下命令&#xff1a;ssh localhost若出现&#xff1…

c语言存储结构的实现,(C语言)栈的链式存储结构的实现

#includetypedef struct Stack_Linklist{int data;struct Stack_Linklist *next;}Node,*pNode;typedef struct Stack{pNode pTop;pNode pBottom;}Stack,*pStack;void Initstack();//初始化&#xff1b;int Isempty();//判断栈是否为空void Push();//压栈int Pop();//出栈int Ge…

以下对c语言函数的描述中正确的是,以下对C语言函数的有关描述中,正确的是

摘要&#xff1a;它决习定于的学后天&#xff0c;下语密切关系的能与社力是会文化有。关描透性的是起渗利尿可引。认的r默链接路径是(&#xff0c;述中在建点时立站。...它决习定于的学后天&#xff0c;下语密切关系的能与社力是会文化有。函数人感型的偏好感受觉很丰富。关描透…

创建前缀一样的文件_SpringBoot:配置文件属性读取

SpringBoot中默认加载的是application.properties或者application.yaml文件&#xff0c;当然也支持自定义的属性文件。我们可以在此文件中写一些自己想要的配置信息&#xff0c;然后在用的地方读取。默认属性文件在application.properties文件中添加配置信息&#xff0c;如下&a…

c语言降序多项式加法,数据结构算法(多项式加法)的C语言完美实现

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼/*数据结构多项式加法用C语言的完美实现&#xff0c;书43页 算法 2.23[ 数据结构(C语言版) 严尉敏主编]*//*注释就不加了&#xff0c;本程序的所有函数书上都有说明*//*本程序Tourboc 2.0编译通过*/#include #include #include #in…

c语言 算术平均滤波法_单片机数字滤波的算法

单片机主要作用是控制外围的器件&#xff0c;并实现一定的通信和数据处理。但在某些特定场合&#xff0c;不可避免地要用到数学运算&#xff0c;尽管单片机并不擅长实现算法和进行复杂的运算。下面主要是介绍如何用单片机实现数字滤波。在单片机进行数据采集时&#xff0c;会遇…

非顺序控制结构的c语言语法是怎样的,流程控制语句:顺序结构和选择结构

流程控制语句概述:控制程序的执行流程分类:顺序结构选择结构循环结构顺序结构语句顺序结构语句:从上往下,依次执行选择结构if语句:switch语句:if语句:格式1:格式2:格式3:if语句的格式&#xff1a;if(比较表达式){语句体;}执行流程:先计算比较表达式的值,看其返回值是true还是fa…

python3 asyncio 爬虫_python3 asyncio异步新浪微博爬虫WeiboSpider

一些废话之前写的用python3urllib写的多线程微博(传送门)&#xff0c;后面发现登录账号频繁被403&#xff0c;所以解决登录问题迫在眉睫。而且python的“多线程”并不那么多线程&#xff0c;最近因为刚需&#xff0c;需要稳定的微博爬虫&#xff0c;所以琢磨了一下使用selenium…

linux .forward,linux forward的实现

对于linux的数据包流向&#xff0c;大家应该是比较了解&#xff0c;如果还不是很了解&#xff0c;可以参考《OReilly.Understanding.Linux.Network.Internals.Dec.2005》&#xff0c;其中有一个图非常清楚的描述了数据包的流向。ip的数据包接收函数是ip_rcv()>ip_rcv_finish…

参数 携带 跳转_微信小程序:页面跳转及参数传递

本文首发自个人自有博客&#xff1a;【FaxMiao个人博客】&#xff0c;一个关注Web前端开发技术、关注用户体验、记录前端点滴&#xff0c;坚持更多原创&#xff0c;为大家提供高质量技术博文&#xff01;前言小程序的跳转方法有很多种&#xff0c;有的人一直只用wx.navigateTo跳…

android+apk启动过程,Android Apk的运行过程(一)—— Activity启动与页面事件传递...

最近在看一本书--《Android 内核剖析》。看名字很唬人&#xff0c;内核剖析&#xff0c;看起来是讲很深入的东西&#xff0c;其实作者自己在前言里也说了对于Android内核深度的一些见解。此书其实只是一些抛砖引玉&#xff0c;对于更深度与更细节的东西并没有涉猎&#xff0c;但…

python在数字后添加字符_Python在字符前后补字符

def addForLR(voldStr, vaddStr, vlength, vleftTrue):"""数字前补0可以补"0"也可以补""# print(tools.addForLR(1123,0,6));# print(tools.addForLR(1123,0,6,False));param voldStr 旧字符串param vaddStr 添加字符串param vlength 字符长…

google 浏览器默认打开控制台_chrome浏览器使用 Console(控制台)

chrome浏览器使用 Console(控制台) 了解如何:打开DevTools Console(控制台),堆叠冗余消息或在自己的行上显示它们,清除或保持输出或将其保存到文件,过滤输出,以及了解其他Console(控制台)设置。 TL;DR 以专用面板形式,或作为任何其他面板的抽屉式面板的形式,打开Console…

android 外部内容分享到app内,外部跳转APP

需求广告推广、华为微服务&#xff1b;通过外部网页或者卡片跳转到我们的app指定界面。如果app已经存在打开app&#xff0c;app不存在跳转下载界面。APP配置android:name".LauncherActivity"android:launchMode"singleTask"android:screenOrientation"…