Airtest结合tidevice实现IOS自动化测试
这篇博文内容,是基于之前的配置而来的。我们可以先回顾一下之前博文,Windows搭建mac黑苹果系统;WebDriverAgent重签名爬坑记 。
今天来分享下如何通过 tidevice实现IOS自动化测试,在之前的博文,也有介绍过Airtest基本使用。针对Airtest暂且就不过多介绍了,今天主角是tidevice,具体我们来看。
tidevice
了解到tidevice,是在2021 MTSC 上海站 的议题中看到的,新知识,就来琢磨一番。
tidevice简介
在使用工具之前,都得先了解下其特性,这样才能更好的运用。
tidevice是阿里开源的一款工具,项目地址。详细可以看项目中的描述,简单概括就是,该工具基于python语言,可以跨平台、开源脱离Mac进行IOS自动化测试。
tidevice命令
tidevice安装
python版本3.6以上,使用命令
pip3 install -U "tidevice[openssl]"
安装成功如下所示:
如果安装失败,可以使用命令(不过这种方法安装,配对功能就没有了,因为没有办法进行签名)
pip3 install -U tidevice
查看tidevice版本
tidevice version
列出连接设备
tidevice list
tidevice list --json
操作如下所示:
应用管理
安装应用
tidevice install example.ipa
指定设备安装
tidevice --udid $UDID install https://example.org/example.ipa
卸载应用
tidevice uninstall com.example.demo
启动应用
tidevice launch com.example.demo
停止应用
tidevice kill com.example.demo
查看已安装应用
tidevice applist
Run XCTest
运行XCTest
注意:在操作运行XCTest时,首先确保手机上安装了可用的WebDriverAgent
tidevice xctest -B $WebDriverAgent重签名的包名
包名可以通过 tidevice applist
命令查看
运行日志如下所示:
C:\Users>tidevice xctest -B com.yihuqingjiu.WebDriverAgentRunner.xctrunner
[I 211208 20:59:32 _device:912] BundleID: com.yihuqingjiu.WebDriverAgentRunner.xctrunner
[I 211208 20:59:32 _device:914] DeviceIdentifier: 0000XXXXX-XXXXXX01
[I 211208 20:59:32 _device:775] SignIdentity: 'Apple Development: XXXXXXXXXX'
[I 211208 20:59:32 _device:843] Launch 'com.yihuqingjiu.WebDriverAgentRunner.xctrunner' pid: 14259
[I 211208 20:59:32 _device:1006] ProductVersion: 15.0.2
[I 211208 20:59:33 _device:963] Test runner ready detected
[I 211208 20:59:33 _device:956] Start execute test plan with IDE version: 29
[I 211208 20:59:33 _device:878] WebDriverAgent start successfully
运行成功后,可以访问:http://localhost:8200/status 查看是否正常返回json数据,如下所示:
按之前的博文,访问:http://localhost:8200/inspector 可以展示手机面板,但现在高系统版本已不支持。
修改监听端口为8200, 并显示调试日志
tidevice xctest -B $WebDriverAgent重签名的包名 -e USB_PORT:8200 --debug
结合Airtest使用,操作到这里就可以使用了,后面讲解。
Relay
转发请求
转发请求到手机,类似于iproxy
tidevice relay 8100 8100
转发并把传输内容print出来
转发并把传输的内容用hexdump的方法print出来
tidevice relay -x 8100 8100
运行WebDriverAgent
运行 XCTest 并在PC上监听8200端口转发到手机8100服务
wdaproxy这个命令会同时调用xctest和relay,另外当wda退出时,会自动重新启动xctest
tidevice wdaproxy -B $WebDriverAgent重签名的包名 --port 8200
启动后你就可以使用Appium 或者 facebook-wda 来运行iOS自动化了
这个点后续再细说。
查看设备信息
设备基本信息
tidevice info
其他操作
rm cat pull push stat tree rmtree mkdir
tidevice fsync -h
其他常用
重启
tidevice reboot
截图
tidevice screenshot screenshot.jpg
输出日志
tidevice syslog
性能采集
命令行查看
tidevice perf -B com.example.demo
Airtest
Airtest连接IOS设备
在运行wda后,在airtest的设备连接窗口,输入命令连接设备,命令如下:
http+usbmux://DeviceIdentifier
DeviceIdentifier 参数在运行wda后,窗口会显示,复制过来即可。连接成功后,窗口展示如下,就可以操作app了。
到这里,我们设备已经连接好了,就可以开始码代码了,具体的代码编写demo官网也有。今天的demo就不细说了,也很简单。
运行代码
简单写了个搜索自己博客的案例,如下所示:
# -*- encoding=utf8 -*-
__author__ = "wenyihuqingjiu"
from airtest.core.api import *
from poco.drivers.ios import iosPoco
auto_setup(__file__)
connect_device("iOS:///http+usbmux://00008110-XXXXXXXX801E")
poco = iosPoco()
snapshot()
poco("Safari浏览器").click()
touch(Template(r"tpl1630501963721.png", record_pos=(0.107, -0.565), resolution=(828, 1792)))
sleep(5.0)
touch(Template(r"tpl1630552947122.png", record_pos=(-0.296, -0.425), resolution=(828, 1792)))
text("温一壶清酒 博客园")
touch(Template(r"tpl1630553104752.png", record_pos=(0.357, -0.43), resolution=(828, 1792)))
touch(Template(r"tpl1639144259796.png", record_pos=(-0.213, -0.623), resolution=(1170, 2532)))
sleep(5.0)
assert_exists(Template(r"tpl1630553184115.png", record_pos=(0.019, -0.488), resolution=(828, 1792)), "进入博客首页")
我们运行代码,来看一下效果,如下所示,画质不是太好
生成报告
代码运行结束后,可以直接生成报告,我们生成报告看一下效果,每一步操作都有记录并截图,如下所示:
报错总结
执行tidevice命令,提示无法连接
tidevice安装后,执行命令 tidevice list
,报错如下所示:
该问题,下载itunes 得到解决。
启动wda,提示Could not start service
启动wda时,会提示Could not start service,报错如下:
该问题是在下载版本zip的时候失败了,所以启动失败。当下载成功的时候,就启动成功了,如下所示:
airtest连接真机失败
通过airtest连接真机时,报错提示如下:
在确定airtest是最新版本的情况下,使用最新webdriveragent重签名了包,再次连接就正常了。
Airtest结合tidevice实现IOS自动化测试的更多相关文章
- 零成本实现Android/iOS自动化测试:基于Appium和Test Perfect
https://item.taobao.com/item.htm?spm=a230r.1.14.14.42KJ3L&id=527677900735&ns=1&abbucket= ...
- mac上搭建appium+IOS自动化测试环境(一)
阅读须知 由于OS X系统最近才开始接触,所以有些东西也不是很清楚,这里只提供方法不提供原理,能解释清楚的我也会尽量解释.可能也有一些地方说的不严谨或有错的,还望大家指点一二. 实验环境 操作系统: ...
- InstrumentDriver,对iOS自动化测试说 Yes!
InstrumentDriver 是 Mobile自动化小组最近实现的基于 instrument,针对 iOS 的自动化测试框架,目前支持 java 语言编写测试用例. 研究过iOS自动化测试的同学肯 ...
- mac上搭建appium+IOS自动化测试环境(二)
上一篇: mac上搭建appium+IOS自动化测试环境(一) 9.安装appium-xcuitest-driver依赖 进入WebDriverAgent安装目录,运行bootstrap 首先进入目录 ...
- appium ios 自动化测试
iOS自动化测试:Appium 从入门到实践https://www.jianshu.com/p/43f858180557appium自动化测试iOS Demohttps://www.jianshu.c ...
- 【Mac + Appium + Python3.6学习(四)】之常用的IOS自动化测试API总结
环境: Appium:1.9.1 Appium-desktop:1.7.1 Xcode:10.0 IOS:iPhone5S(10.3.3) Mac:10.13.6 ①获取手机屏幕size:长.宽 &l ...
- 【Mac + Appium + Python3.6学习(三)】之IOS自动化测试环境配置
在做这一节之前先配置我的另一篇文章所需要安装的前提准备条件:<[Mac + Appium学习(一)]之安装Appium环境前提准备> 一.安装IOS自动化测试环境 配置环境: Appium ...
- iOS自动化测试的那些干货
前言 如果有测试大佬发现内容不对,欢迎指正,我会及时修改. 大多数的iOS App(没有持续集成)迭代流程是这样的 也就是说,测试是发布之前的最后一道关卡.如果bug不能在测试中发现,那么bug就会抵 ...
- IOS自动化测试环境搭建(Python & Java)
一.前言 IOS的App自动化测试与Android的一样,也可以用appium来进行.但是IOS自动化依赖苹果的osx系统.Xcode构建等,且封闭的系统需要苹果开发者账号才可以驱动真机.A ...
随机推荐
- Django笔记&教程 7-3 拓展CBVs(Class-based views)
Django 自学笔记兼学习教程第7章第3节--拓展CBVs(Class-based views) 点击查看教程总目录 一般而言,直接使用原生的Class-based views,能展现的样式和内容是 ...
- 菜鸡的Java笔记 - java 常用类库
CommonClassLibrary 常用类库 定时调度 定时调度指的是每到一个时刻,都会自动的产生某些特定的操作形式 con ...
- python实现轮廓发现
目录: (一)轮廓发现的介绍 (二)代码实现 (1)使用直接使用阈值方法threshold方法获取二值化图像来选择轮廓 (2)使用canny边缘检测获取二值化图像 (一)轮廓发现的介绍与API的介绍 ...
- 关于如何在MyEclipse下修改项目名包名,以及类
1.修改项目名,右键选择properties->web->web-Context-root修改名称或者直接按F2修改.2,修改包名,右键选择Refactor->rename修改名称即 ...
- [atARC128F]Game against Robot
为了方便,下文中的$n$是原来的$\frac{n}{2}$ 当确定排列$\{p_{i}\}$后,将$a_{i}$按照$p_{i}$从大到小排序,那么机器人即会不断选第一个元素 考虑玩家最后选择的$n$ ...
- [bzoj5416]冒泡排序
结论:一个序列是好序列当且仅当其不存在长度为3的下降子序列 证明:考虑提示,一个长度为3的下降子序列必然会交换三次, 而这三次带来的收益实际上只有2,因此不合法 同时还可以得到:第i个数,要么是前缀最 ...
- 联盛德 HLK-W806 (四): 软件SPI和硬件SPI驱动ST7735液晶LCD
目录 联盛德 HLK-W806 (一): Ubuntu20.04下的开发环境配置, 编译和烧录说明 联盛德 HLK-W806 (二): Win10下的开发环境配置, 编译和烧录说明 联盛德 HLK-W ...
- vcstool是什么?
为什么会去了解vcstool,在想要手动编译并且获取ROS源码的时候,有一个Get ROS 2 code的章节中使用到了这个工具. mkdir -p ~/ros2_foxy/src cd ~/ros2 ...
- CF1373G
考虑中间格子不能有相同的点,其实是没用的. 其唯一用处是用来规定最后的是无法重叠的. 我们可以证明最后位置的无重叠和中间不重叠是充要的. 那显然可以我们对每个点往后连边: 形式的话的说: 对 \((x ...
- PCA方差解释比例求解与绘图?
目录 主成分方差解释率计算 绘图示例 主成分方差解释率计算 通常,求得了PCA降维后的特征值,我们就可以绘图,但各个维度的方差解释率没有得到,就无法获得PC坐标的百分比. 有些工具的结果是提供了维度标 ...