[facebook-wda]搭建iOS App自动化环境
搭建iOS App自动化环境
一、测试结构介绍
- 手机端的WDA Runner(WebDriverAgent)类似于appium测试框架中的 UIAutomator Server,将从客户端接收到的控制命令转换为XCUITest 相关API操作,实现对应用界面的控制。WebDriverAgent应用需要通过xcode编译安装。
- usbmuxd是苹果提供的一个服务,用于USB和TCP协议之间的转换,实现在没有网络的情况下也可以连接设备,iTunes和Xcode就使用到了这个服务,所以在环境安装中需要在windows上安装一个iTunes。
- WDA的启动使用阿里开源的tidevice工具。
- Language Bindings为不同语言的测试脚本,比如基于python语言的facebook-wda,基于go语言的gwda等。
WebDriverAgent原理分析
WebDriverAgent是Facebook 在2015年的 SeleniumConf 大会上推出了一款iOS移动测试框架。它在 iOS 端实现了一个 WebDriver server ,通过这个 server 来实现远程控制 iOS 设备。它主要通过连接XCTest.framework来调用Apple的API实现对设备的操作。
WebDriverAgent采用C/S架构,集成appium使用的WebDriver协议规范,通信协议使用Mobile JSON Wire Protocol。
WDAClient:WDA的客户端,测试库facebook-wda 就是 WDA 的 Python 客户端库,通过HTTP协议(Mobile JSON Wire Protocol)与WebDriverAgent进行通信。
WebDriverAgentRunner:运行在手机上的WDA server,默认监听端口为8100,主要功能包括①接收WDAClient的请求并将操作命令发送给XCTest.framework。②将响应发送给WDA Client
tidevice原理分析
前面介绍了iOS的自动化需要通过WebDriverAgent来实现,一种常见的解决方案是使用xcodebuild来启动WebDriverAgent,而xcode需要Mac系统,也就是必须在MAC上进行iOS自动化测试。
tidevice是阿里开源的一个基于Python的iOS自动化工具,通过逆向iOS通信协议,模拟xcodebuild与手机进行通信,向手机发送特定的指令,来启动WDA,从而可以脱离Mac电脑,能够在Linux、Windows上运行iOS自动化。tidevice基于python实现了libimobiledevice中的功能。
tidevice通过usbmuxd与手机通信来启动WDA,通过建立一个TCP连接到usbmuxd的/var/run/usbmuxd TCP端口,然后usbmuxd将请求发送到USB连接的iPhone上。上面提到的libimobiledevice就是一个跨平台的用于与iOS设备进行通信的库。
以上的测试框架介绍摘自这位老哥的内容: 测试开发小记
二、准备环境
工具及系统 | 版本信息 | 描述 |
---|---|---|
macOS | 12.4 | macOS系统 |
Xcode | 13.4 | macOS开发工具 |
iOS设备 | iPhone 6 12.1 | iOS测试设备 |
WebdriverAgent | v3.14.0 | iOS通信服务 |
tidevice | 0.7.14 | Windows逆向通信iOS工具 |
facebook-wda | 1.4.6 | iOS测试框架 |
weditor | 0.6.5 | 查看UI元素工具 |
iTunes | 12.12.4 | Windows连接苹果设备工具 |
下载WebDriverAgent
打开以下链接,下载WebdriverAgent,由于我们这里的测试设备和编译工具版本限制,这里 选择3.14版本
Download WebDriverAgent
安装Xcode
打开app store然后搜索Xcode进行安装
安装完成后给Xcode,添加开发者账户Xcode–>Preference–>Accounts,添加一个开发者账号
开打苹果官网开发网站苹果开发官网,登录该开发者账号->Certificates, Identifiers & Profiles->Devices,确保要测试的Device的IDENTIFIER已添加,如果没有需要添加
连接iOS测试设备
将iPhone连接到windows机器,这个时候虚拟机会弹出将当前的USB设备连接到主机还是虚拟机,这里我们选择虚拟机,然后点击确定
连接成功后会如下显示
编译WebDriverAgent
将下载好的WebDriverAgent拷贝到macOS后然后直接双击WebDriverAgent.xcodeproj文件
第一步选择WebDriverAgent->Info,设置iOS Development Target,由于测试iPhone系统是12.5.5,这里我们选择12.0即可
Build Settings->Deployment (unnamed domain)->iOS Deployment Target->iOS 12.0,此处可能不太准确
Build Settings->Packaging->Product Bundle Identifier->设置唯一的Bundle Identifier(后续都使用这个Bundle)
第二步选择WebDriverAgentLib->General, Bundle Identifier为刚刚设置唯一的Bundle,Deployment Info设置为iOS 12.0
WebDriverAgentLib->Signing&Capabilities,勾选Automatically manage signing, Team选择开发者账户,Bundle Identifier填写之前设置的唯一Bundle
WebDriverAgentLib->Build Settings,设置Deployment和Packaging
第三步设置WebDriverAgentRunner,首先打开Signing&Capabilities
然后同样设置Build Settings当中的Deployment和Packaging
WebDriverAgentRunner->Info->Bundle Identifier,继续填写保持一致的Bundle
第四步设置Build程序
第五步选择要build的设备
第六步,点击Build
Build成功后查看状态
Build成功后点击Test,这个时候测试设备上WebDriverAgentRunner-Runner已成功安装
设置WebDriverAgentRunner-Runner
打开iPhone设置->通用->设备管理->信任开发者App
Windows安装iTunes
访问官网下载iTunes: Download iTunes,选择Windows10 64位下载并安装
安装完成后点击左上角的手机图标,确认windows已连接成功
安装tidevice
该工具要求python环境3.6+
切换到你的项目目录,使用pip3命令来安装tidevice,安装成功后设置全局环境变量
pip3 install -U "tidevice"
使用以下命令查看tidevice是否安装成功
tidevice version
tidevice version 0.7.14
查看当前设备是否可以列举出
tidevice list
UDID NAME MarketName ProductVersion ConnType
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx iPhone6 iPhone 6 12.5.5 usb
查看安装应用
tidevice applist
使用tidevice启动WDA
tidevice -u [设备 udid] wdaproxy -B [wda BundleID通过tidevice applist读取] --port 8100
运行成功后打开浏览器访问: http://127.0.0.1:8100/status
这个时候可以测试一下tidevice功能 ,打开iOS的设置
tidevice launch com.apple.Preferences
运行以上命令如果可以打开设置则通信成功
获取UI元素
使用和Android一样的元素捕捉工具weditor,项目内安装weditor
pip3 install -U "weditor"
安装完成后,项目内直接运行weditor,如果未设置项目路径为全局环境变量,则无法在其他路径运行
facebook-wda自动化
facebook-wda基于python语言,没有像appium那样启动一个中间服务appium server,这也是appium支持多语言的原因。facebook-wda相比appium更加简洁,功能也比较多,appium有的功能基本都提供了。
安装
pip3 install -U facebook-wda
测试:
import wdac = wda.Client('http://localhost:8100') # 8100为启动WDA设置的端口号
c.session().app_activate("com.apple.Preferences") # 打开设置
如果这两行代码运行完iPhone的设置被打开了,则成功
以上iOS的自动化测试环境搭建完成
PS:之前也试过使用Appium进行自动化,但是使用过程中发现Appium的捕捉UI工具Start Session始终连接不上,同时WDA is not response in 30 second, check again after 1s,折腾好久也没找到解决办法,也许是WDA安装的还是有问题吧,如果有知道的也可以告诉我一声
[facebook-wda]搭建iOS App自动化环境相关推荐
- Python+Appium APP自动化环境搭建
Python+Appium之APP自动化环境搭建 1.安装node.js (1)一直点击下一步即可 (2)配置环境变量 (3)输入npm --version 安装成功 2.安装appium-docto ...
- App自动化环境配置及安装
第一步 我们先确认你的python 是否是3.0以上的版本 然后我们进入pychar项目,下载外部库:Appium-Python-Client 在终端输入命令 pip install Appium-P ...
- Java自动化测试(app自动化环境搭建 31)
Appium 官网:http://appium.io/ github:https://github.com/appium/appium Appium is an open source test au ...
- Appium搭建MacOS环境下的iOS App自动化测试环境(Windows搭个MacOS虚拟机就行,亦无须iPhone)
前言 经过上篇文章<Windows上Appium自动化测试Android应用>的介绍,我们已经学习App自动化测试的基本知识,接下来我们来学习如何对iOS进行基于Appium的自动化测试. ...
- 【Python自动化测试32】App自动化环境搭建
文章目录 一.前言 二.安装与环境搭建教学 2.1 环境依赖 2.2 appium程序安装 2.3 appium-python-client 2.4 模拟器安装 2.5 java jdk安装 2.6 ...
- python运维脚本部署jdk_基于Java/Python搭建Web UI自动化环境
Java搭建UI自动化测试环境 下载JDK8 https://www.cnblogs.com/thloveyl/p/12378124.html 配置Java环境 1.解压Jdk压缩包 2.配置环境变量 ...
- Mac下搭建手机APP开发环境(HBuilder X ,HTML5plus Runtime,MUI,springboot)
本文介绍Mac安装开发环境不包括创建springboot等代码相关,只涉及软件安装以及搭建APP测试环境(hbuilder连接nox). 第一步:下载 夜神手机模拟器 :http://www.pc6. ...
- python123app_Python实现iOS APP 自动化打包
一 各种打包方法简介: Xcode 打包: XCode -- > Product --> Archive 常规打包方式,需要提前配置好签名信息. 2.提取工程目录Products下的.ap ...
- IOS app自动化
无线客户端的发展很快,特别针对是android和ios两款无线操作系统的客户端应用,相应的测试工具也应运而生,这里主要给大家介绍一些针对 iPhone App的自动化测试工具. 首先,我们把这些测试框 ...
最新文章
- 你为世界杯而战,我为生活而战!
- 大型网站架构系列:电商网站架构案例(2)
- Vue学习笔记第一天--es6
- Difference Between InnoDb and MyISAM(个人觉着是好文章,简单易懂,推荐看)
- 【CodeVS】1083 Cantor表
- 疯子的算法总结10--最小生成树Kruscal
- 笔记本电脑频繁自动重启_电脑为何总是自动重启 电脑自动重启原因【解决方法】...
- 3个关键维度读懂 [社区团购产品设计]
- 20210319_23期_心跳检测_Task02_数据探索性分析
- day11_rabbitmq和redis
- 数字孪生|数字孪生装备-关键技术和发展阶段
- Google Play 应用上架流程(2020版)
- 对挣钱与财富等三个问题的思考
- 45-js操作DOM和bom操作
- 路由器温度测试软件,【美国网件 R8500 无线路由器产品测试】信号|速度|温度_摘要频道_什么值得买...
- 如何用C++开发STM32?
- CSS Grid 布局
- 十进制转化为16进制
- mysql 1075_mysql1075错误_1075报错怎么办_mysql主键冲突怎么办 - 树懒学堂
- Autodesk 3ds Max 2012 安装破解图文教程
热门文章
- mac tableau 安装mysql驱动
- 史上最佳十大游戏排名 魔兽世界位列第十
- CISCO PACKET TRACER 实验:以太网连接Internet
- 数据分析中常见的存储方式
- 操作系统春招面试复习之:设备管理
- CString彻底分析,很强悍的啊
- excel使用教程_汉字资料如何进行数据分析?Excel中医学汉字资料转化为数字资料视频教程——If/Iserror/Find函数的结合使用...
- windows防火墙设置_Windows防火墙:您应该知道的事情
- 如何TIA博途中更新HSP硬件目录?
- Unity Gate Fit