iOS自动化测试
学习步骤:
1.能够搭建iOS自动化测试所需要的环境
2.能够使用模拟器进行iOS自动化测试
3.能够使用真机进行iOS自动化测试
一、环境搭建
应用场景
想要进行iOS自动化测试,前提条件需要进行环境搭建
想要的环境
- 必备软件:
- MacOS系统电脑(iOS设备只能在Mac系统上运行自动化)
- Xcode软件 (AppStore搜索Xcode并下载)
- 待测试的iOS项目(公司项目的bundleId,可以找开发人员要)
- appium Desktop(链接:https://pan.baidu.com/s/1G9ujw3T4HqUQBSh9UC-MoA?pwd=p000 提取码:p000)
- python(链接:https://www.python.org/downloads/macos/)本人用的是v3.7
- pycharm(链接:https://www.jetbrains.com.cn/en-us/pycharm/download/#section=mac 社区版:Community)
- node js(https://npm.taobao.org/mirrors/node/v10.15.0/node-v10.15.0.pkg)v 10.5.0
- cnpm(npm install -g cnpm --registry=https://registry.npm.taobao.org)v 5.2.0
- 终端输入:
- ios-deploy依赖库 cnpm install -g ios-deploy
- brew ruby <(curl -fsSkL raw.github.com/mxcl/homebrew/go)
- libimobiledevice 依赖库 brew install --HEAD libimobiledevice
- 可能会出现问题
- 报错:Requested 'libusbmuxd >= 1.1.0' but version of libusbmuxd is 1.0.10
- 解决方法:(以下命令按顺序执行)
- brew update
- brew uninstall --ignore-dependencies libimobiledevice
- brew uninstall --ignore-dependencies usbmuxd
- brew install --HEAD usbmuxd
- brew unlink usbmuxd
- brew link usbmuxd
- brew install --HEAD libimobiledevice
- 可能会出现问题
- carthage 依赖库 brew install carthage
- java开发环境配置,参考博客:(21条消息) JAVA开发环境搭建_Krito.的博客-CSDN博客
- iOS系统设备
- Apple ID
- WebDriverAgent
- https://github.com/facebook/WebDriverAgent
- 点击download zip
二、使用模拟器进行自动化测试
运行iOS程序到模拟器
步骤:
- 使用Xcode打开要运行的程序
选择要运行的程序和模拟器设备(Xcode自带iOS模拟器,不用单独下载)
- 快捷键command + r 运行(若运行不成功可以先在模拟器上构建webdriveragent程序)
查看iOS元素特征
步骤:
- 打开appium desktop
- 启动appium服务
- 点击右上角放大镜打开新的窗口
4. 填写对应参数并启动
{
‘’automationName": "Appium", -- 默认是appium
"platformName": "iOS", --设置应用平台
“platformVersion": "10.3", -- 设置当前平台的系统版本,不需要设置到三位,设置两位就可以了
”deviceName": "iPhone7", --设置当前连接MAC本的手机名称,在设置里可以查到手机名
“bundleId": "com.testi.test.uuaatt",--设置当前应用的activename,这个启动名称可以跟相应的开发人员要,也可以自己通过其他工具看一下(工具的话请大家问度娘吧~~)
“wdaLocalPort":"8100" -- 默认手机连接MAC本使用的端口,默认是8100
}
最后start session就可以了,连上手机以后,手机上会自动装一个webdriverapp的应用,然后才会启动要测试的app。如果要写自动化脚本的话,可以边操作边抓取相应的元素。
编写和运行自动化脚本
前置代码
from appium improt webdriver
desired_caps = dict()
desired_caps['platformName'] = 'iOS'
desired_caps['platformVersion'] = '12.1'
desired_caps['deviceName'] = 'iPhone 8'
desired_caps['app'] = 'com.itcast.HMiOSTest'
driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps
三、使用真机进行自动化测试
运行iOS程序到真机(两个方案)
方案一
步骤:
- 在Xcode中登录自己的Apple ID
- 选择将要运行的程序和设备
- 快捷键command + r 运行
- 在手机中进入 设置 - 通用 - 设备管理 - 开发者APP - 信任程序
- 重新command + r 运行
配置 WebDriverAgent
步骤:
- 下载最新的WebDriverAgent后,使用Xcode启动WebDriverAgent.xcodeproj
- 配置WebDriverAgentLib的开发者信息
- 配置WebDriverAgentRunner的开发者信息(与WebDriverAgentLib配置方法一致)
- 配置IntegrationApp的开发者信息(与WebDriverAgentLib配置方法一致)
- 修改WebDriverAgentRunner的Product Bundle Identifier
- 修改IntegrationApp的Product Bundle Identifier(与WebDriverAgentRunner修改方法一致)
- 数据线连接真机
- 选择将要运行的WebDriverAgent 和真机设备
- 使用command + u 运行
- 构建成功后会在log中出来一个url地址
- 在浏览器中打开这个地址,如果显示一串json数据即表示为正确连接手机且真机上会出现一个没图标的webdriveragent程序
方案二
拿到自己公司的Bundle Identifier(又叫包名)
运行自动化脚本
步骤:
- 修改真机对应的 platformVersion、deviceName
- 查看该设备udid并增加为启动参数
- 运行即可
- 这样连接真机应该是没问题了,然后自己如果写了测试脚本,跑脚本前先要安装相应的语言服务包,比如appium-python-client
{
‘’automationName": "Appium", -- 默认是appium
"platformName": "iOS", --设置应用平台
“platformVersion": "10.3", -- 设置当前平台的系统版本,不需要设置到三位,设置两位就可以了
”deviceName": "iPhone7", --设置当前连接MAC本的手机名称,在设置里可以查到手机名
“bundleId": "com.testi.test.uuaatt",--设置当前应用的activename,这个启动名称可以跟相应的开发人员要,也可以自己通过其他工具看一下(工具的话请大家问度娘吧~~)
"udid":" ",--设置当前手机的udid,通过iTunes拷贝过来,建议还是拷贝过来,太长太难输了
"xcodeOrgId":"123ADE4Y56",--十位字符的组织ID,是苹果开发证书的组织单位,appium可以通过十位组织单位ID找到相应的组织,如果是连接真机测试APP的话,必须要设置 组织参数。
”xcodeSigningId": "iPhone Developer", --这里参数是固定的,就这样写
“wdaLocalPort":"8100" -- 默认手机连接MAC本使用的端口,默认是8100
}
最后start session就可以了,连上手机以后,手机上会自动装一个webdriverapp的应用,然后才会启动要测试的app。如果要写自动化脚本的话,可以边操作边抓取相应的元素。
参考资料
1)https://www.cnblogs.com/jiguanghover/p/12526848.html
注:该地址为搭建环境过程中可能会遇到的问题及对应解决方法
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 ...
- Airtest结合tidevice实现IOS自动化测试
这篇博文内容,是基于之前的配置而来的.我们可以先回顾一下之前博文,Windows搭建mac黑苹果系统:WebDriverAgent重签名爬坑记 . 今天来分享下如何通过 tidevice实现IOS自动 ...
随机推荐
- Postman配置多环境请求地址
在使用Postman测试接口时,一个项目往往有多个环境(测试.正式等),请求不同环境的接口一般只是IP和端口不一样. 这时候我们可以定义多个环境变量,在接口地址中进行引用. 一.添加环境变量 1.点击 ...
- [转]有限状态机FSM(finite state machine) 一
有限状态机FSM(finite state machine) 一 有限状态机又称有限自动状态机,它拥有有限数量的状态,每个状态代表不同的意义,每个状态可以切换到 零-多 个状态.任意时刻状态机有且只能 ...
- 微信退费报错:SSLHandshakeException No appropriate protocol (protocol is disabled or cipher suites are inappropr)
微信退费报错:No appropriate protocol (protocol is disabled or cipher suites are inappropr) javax.net.ssl.S ...
- win11恢复完整右键菜单
使用注册表修改 首先,通过修改注册表,我们就可以将 Win11 的右键菜单改为老样式.下面是具体的方法. 运行"regedit",开启注册表编辑器,定位到"HKEY_CU ...
- 【git】3.2git分支-分支的新建与合并
资料来源 (1) https://git-scm.com/book/zh/v2/Git-%E5%88%86%E6%94%AF-%E5%88%86%E6%94%AF%E7%9A%84%E6%96%B0% ...
- ESXi 基础安全加强(ing...)
# 查看防火墙规则esxcli network firewall ruleset allowedip list # 允许指定ip使用web服务和客户端访问[root@localhost:~] esxc ...
- 8. semahpore原理
一.上游服务比下游服务抗压能力应该更强一些,因为直接面对的是前端.Semphore控制访问特定资源的线程数目.实际场景可用于限流.在hystrix里面用了. 另:ReadWriteLock的作用是什么 ...
- Ubuntu下CodeBlocks控制台程序中文显示乱码解决问题
今天在CodeBlocks下折腾来半天,终于把中文乱码给解决了,其实很简单. 在环境设置里进行如下设置:把Terminal to launch console programs那个选项改成gnome- ...
- SparkRDD所有算子操作,建议全部手敲一遍
说明: 1.以下方法全部来自这个RDD.scala,可以自己看源码 2.使用$SPARK_HOME/bin/spark-shell运行代码 3.注释部分是运行结果 //org.apache.spark ...
- JavaScript逗号运算符的用法
var a = 3, b b = (a++, a) 与 var a = 3, b b = a++ 区别