移动测试神器Appium-iOS环境快速搭建&demo项目实战

移动测试神器Appium-iOS环境快速搭建&demo项目实战前言在之前的文章中 我们介绍过一款移动端自动化测试框架 UiAutomator2 以及如何基于 UiAutomator2 框架在移动端设备上开展自动化测试实践 感兴趣的可以查看 移动端 APP 自动化测试框架 UiAutomator2 基础 基于 Ui

欢迎大家来到IT世界,在知识的湖畔探索吧!

前言

在之前的文章中,我们介绍过一款移动端自动化测试框架UiAutomator2以及如何基于UiAutomator2框架在移动端设备上开展自动化测试实践,感兴趣的可以查看:

  • 《移动端APP自动化测试框架-UiAutomator2基础》
  • 《基于UiAutomator2+PageObject模式开展APP自动化测试实战》

不过UiAutomator2只支持Android设备,不支持iOS设备。想要在iOS设备上开展自动化测试,还得是传统老牌测试框架Appium,也是今天重点要介绍的内容。全篇分为以下几个部分:

1.Appium知多少

  • Appium简介
  • Appium工作原理
  • Appium如何实现iOS应用自动化?

2.环境搭建

  • 基础环境搭建:JDK、NodeJS、Python
  • iOS环境搭建:克隆测试APP、WDA安装
  • Appium环境搭建:Appium-Desktop、Appium-inspector、Appium-doctor
  • 测试代码编写环境搭建:PyCharm安装

3.项目实战:

  • 编写测试用例并运行在iOS设备上

一、Appium知多少

1.Appium简介

Appium 是一个开源的自动化测试框架,支持 iOS 和 Android 上 Web App、Native App 和 Hybrid App 的自动化测试。Appium具有极强的灵活性:

  • 测试用例的实现支持多种编程语言,比如 Java、Ruby、Python 等;
  • Appium Server 支持多平台,既有基于 Mac 的版本,也有基于 Windows 的版本;
  • 支持 Web App、Native App 和 Hybird App 三大类移动应用的测试;
  • 既支持 iOS,也支持 Android;既支持真机,也支持模拟器。

2.Appium原理

Appium 可以分成三大部分,分别是 Appium Client、Appium Server 和设备端:

移动测试神器Appium-iOS环境快速搭建&demo项目实战

① Appium Server

Appium Server 有 Mac 和 Windows 版本,也就是说 Appium Server 可以运行在 Mac 或者 Windows 电脑上。本质上,Appium Server 是一个 Node.js 应用,接受来自 Appium Client 的请求,解析后通过 WebDriver 协议和设备端上的代理打交道。

  • 对于iOS,Appium Server 会把操作请求发送给 WebDriverAgent(简称 WDA),然后 WDA 再基于 XCUITest 完成 iOS 模拟器或者真机上的自动化操作;
  • 对于Android,Appium Server 会把操作请求发送给 appium-UIautomator2-server,然后 appium-UIautomator2-server 再基于 UIAutomator V2 完成 Android 模拟器或者真机上的自动化操作。

② Appium Client

Appium Client 其实就是测试代码,使用对应语言的 Client 将基于 JSON Wire 协议的操作指令发给 Appium Server。比如我们前面说的在编写代码前要先在本地安装一个Appium-Python-Client的Python包,这个包实际上就提供了各种各样的API方法,用于编写测试用例:

移动测试神器Appium-iOS环境快速搭建&demo项目实战

③ 设备端

设备端很好理解,就是iOS的手机或模拟器、Android的手机或模拟器。

整体来说,Appium 的内部原理可以总结为:Appium 属于 C/S 架构,Appium Client 通过多语言支持的第三方库向 Appium Server 发起请求,基于 Node.js 的 Appium Server 会接受 Appium Client 发来的请求,接着和 iOS 或者 Android 平台上的代理工具打交道,代理工具在运行过程中不断接收请求,并根据 WebDriver 协议解析出要执行的操作,最后调用 iOS 或者 Android 平台上的原生测试框架完成测试。

3.Appium如何实现iOS应用自动化?

Appium通过XCUITest驱动来支持基本的iOS应用自动化。XCUITest是苹果公司在iOS 9.3版推出的自动化框架,Appium利用这个框架来操作iOS设备或模拟器上的应用程序。在这个过程中,Appium对XCUITest的使用是通过WebDriverAgent服务间接完成的。WebDriverAgent(也被叫做WDA)是一个运行在iOS模拟器或设备上暴露XCUITest API的服务,兼容WebDriver。

二、环境搭建

俗话说“万事开头难”、“工欲善其事必先利其器”。在正式开始之前,我们先要搞清楚我们要搭建哪些环境,以及这些环境是用来干嘛的?

首先是硬件环境:这个不必多说,需要一台Mac系统的电脑,一台iOS手机(或模拟器)。

其次是软件环境,软件环境又可以分为:基础依赖环境、iOS环境、Appium环境、测试代码编写环境。

  1. 基础依赖环境:
  • 能够运行Appium Server的基础依赖环境:JDK、nodeJS;
  • 编写测试代码的基础依赖环境:Python语言编写就安装Python、Java语言就安装JDK,这没啥好说的(本文将以Python为例);
  1. iOS环境:
  • xcode:打包编写iOS APP项目的工具
  • 模拟器:在Xcode中下载
  • ios-test-app项目:用来运行测试的官方demo项目
  • WebDriverAgent:远程控制iOS设备进行测试,可以类比成Android的ADB
  1. Appium环境:
  • Appium-Desktop(桌面端)
  • Appium-inspector(定位器)
  • Appium-doctor(环境检测工具)
  1. 测试代码编写环境:
  • 编写测试代码的IDEA:PyCharm
  • Appium-Python-Client包:编写测试用例的方法包;

1.基础环境搭建

基础JDK、nodeJS、Python环境搭建不做过多赘述,详情可参照前面的文章:《基础环境搭建,这一篇就够了!》

2.iOS环境搭建

基本步骤如下:

  1. 下载安装xcode
  2. 在xcode中下载iOS模拟器
  3. 使用xcode编译打包测试APP(以Appium官方的示例APP为例https://github.com/appium/ios-test-app)

① 克隆克隆ios-test-app项目并在Xcode中编译打包

  1. 克隆ios-test-app项目
git clone https://github.com/appium/ios-test-app.git

欢迎大家来到IT世界,在知识的湖畔探索吧!

  1. 启动xcode,在xcode中打开项目
  2. 选择要部署的iOS版本
  3. 选择模拟器型号
移动测试神器Appium-iOS环境快速搭建&demo项目实战

  1. 开始编译,完成后会自动启动模拟器
移动测试神器Appium-iOS环境快速搭建&demo项目实战

② 安装WebDriverAgent

  1. 下载WebDriverAgent:https://github.com/appium/WebDriverAgent
  2. 在xcode中按照如下图操作,然后进行编译,具体方法见:iOS UI自动化–WebDriverAgent安装及使用。
移动测试神器Appium-iOS环境快速搭建&demo项目实战

3.Appium环境搭建

① 下载Appium-Desktop

官方网站下载并安装最新版本的 Appium-Desktop,https://github.com/appium/appium-desktop/releases/tag,目前最新的为1.22.3-4版本

移动测试神器Appium-iOS环境快速搭建&demo项目实战

② 安装appium-inspector

https://github.com/appium/appium-inspector

官方网站下载并安装最新版本的 Appium根据各自电脑系统下载。例如我的是Mac系统:

移动测试神器Appium-iOS环境快速搭建&demo项目实战

③ 安装Appium环境诊断工具appium-doctor

欢迎大家来到IT世界,在知识的湖畔探索吧!npm install -g appium-doctor

安装报错了,提示淘宝的镜像源过期了

移动测试神器Appium-iOS环境快速搭建&demo项目实战

网上找了方法,尝试解决:

移动测试神器Appium-iOS环境快速搭建&demo项目实战

移动测试神器Appium-iOS环境快速搭建&demo项目实战

再次安装,成功了:

移动测试神器Appium-iOS环境快速搭建&demo项目实战

使用“npm list -g”命令可以看到已安装的appium-doctor为1.6.2版本

移动测试神器Appium-iOS环境快速搭建&demo项目实战

执行“appium-doctor”检查环境,发现报错“zsh: command not found: appium-doctor”

移动测试神器Appium-iOS环境快速搭建&demo项目实战

再次查找解决办法:

移动测试神器Appium-iOS环境快速搭建&demo项目实战

执行“npm list -g”查看安装的包的路径:

移动测试神器Appium-iOS环境快速搭建&demo项目实战

编辑~/.zprofile文件,将npm包路径导入环境变量(注意:这里用的是zsh,所以编辑.zprofile,如果是bash,则需要编辑.bash_profile)

移动测试神器Appium-iOS环境快速搭建&demo项目实战

编辑完成,需要重载一下环境变量

source ~/.zprofile

重新执行“appium-doctor”命令,检测成功:

移动测试神器Appium-iOS环境快速搭建&demo项目实战

④ 启动Appium Server

配置好 Appium 的环境依赖后,就可以继续启动 Appium Server 了。点击Appium图标,启动服务:

移动测试神器Appium-iOS环境快速搭建&demo项目实战

⑤ 启动appium-inspector

在appium-inspector页面配置Session:

移动测试神器Appium-iOS环境快速搭建&demo项目实战

欢迎大家来到IT世界,在知识的湖畔探索吧!{ "platformName": "iOS", "appium:platformVersion": "17.5", "appium:deviceName": "iPhone 15", "appium:automationName": "XCUITest", "appium:app": "/Users/chenjigang/Library/Developer/Xcode/DerivedData/TestApp-axnnovmblqknzudyvqypxsgdtcjs/Build/Products/Debug-iphonesimulator/TestApp.app" }

点击“Start Session”,启动报错Error:“Failed to create session. An unknown server-side error occurred while processing the command. Original error: Unable to launch WebDriverAgent because of xcodebuild failure: xcodebuild failed with code 65 xcodebuild error message:”

在网上查找到的解决方法是要先在手机上安装一个WebDriverAgent(Appium-IOS启动报错):

移动测试神器Appium-iOS环境快速搭建&demo项目实战

我前面没安装WebDriverAgent,后来安装以后就正常了(WebDriverAgent具体安装方法见:iOS UI自动化–WebDriverAgent安装及使用)。

移动测试神器Appium-iOS环境快速搭建&demo项目实战

再次点击“Start Session”,启动成功!

移动测试神器Appium-iOS环境快速搭建&demo项目实战

4.测试代码编写环境搭建

由于我们是以Python编写测试用例作为示例,所以必须安装PyCharm编辑器以及Appium的方法包Appium-Python-Client。

① PyCharm安装

可参考前面的文章《PyCharm2023.3.2激活成功教程,亲测有效!》

② 安装Appium-Python-Client包

pip install Appium-Python-Client

三、项目实战

1.编写第一个测试用例

① 初始化设备连接

desired_caps中是设备和APP的信息,也就是appium-inspector初始化配置中填写的内容。

from appium.options.ios import XCUITestOptions class MyTests(unittest.TestCase): def setUp(self): """初始化设备""" desired_caps = { "platformName": "iOS", "platformVersion": "17.5", "deviceName": "iPhone 15", "automationName": "XCUITest", "app": "/Users/xxx/Library/Developer/Xcode/DerivedData/TestApp-axnnovmblqknzudyvqypxsgdtcjs/Build/Products/Debug-iphonesimulator/TestApp.app", } options = XCUITestOptions().load_capabilities(caps=desired_caps) self.driver = webdriver.Remote("http://127.0.0.1:4723/wd/hub", options=options) # 连接Appium self.driver.implicitly_wait(8) def tearDown(self): self.driver.quit()

注意:安装的Appium-Python-Client,自2.3版本后,多了一个options参数:要先导入XCUITestOptions,再调用XCUITestOptions的load_capabilities方法加载设备信息。

移动测试神器Appium-iOS环境快速搭建&demo项目实战

更多具体用法见:https://pypi.org/project/Appium-Python-Client/

② 编写测试用例

在编写用例之前,我们先照着页面捋一下操作思路:

移动测试神器Appium-iOS环境快速搭建&demo项目实战

  1. 在第一个输入框输入一个数字
  2. 在第二个输入框输入一个数字
  3. 点击“Compute Sum”计算两数之和
  4. 断言输出的计算结果是否正确
def test_calculator(self): integer_a = self.driver.find_element(By.ID, "IntegerA") # 定位第一个输入框 integer_b = self.driver.find_element(By.ID, "IntegerB") # 定位第二个输入框 sum_button = self.driver.find_element(By.ID, "ComputeSumButton") # 定位求和按钮 answer = self.driver.find_element(By.ID, "Answer") # 定位答案元素 integer_a.send_keys("5") # 第一个输入框输入5 integer_b.send_keys("5") # 第二个输入框输入5 sum_button.click() # 点击求和按钮 self.assertEqual(answer.text, "10") # 断言求和是否正确

③ 运行测试用例

运行效果如下:

视频加载中…

小结

上述就是我自己亲身实践的具体搭建步骤、以及在搭建过程中遇到的问题和解决办法,算是抛砖引玉了。当然还有很多有待完善的地方,比如测试案例中用到的APP仅仅是一个官方的测试demo,操作步骤也比较简单。你可以运用到实际工作中的测试APP上去,并引入PO面向页面对象设计模式,从而应对更为复杂的测试场景。

Appium的环境搭建确实挺复杂的,快的话可能要一天,慢的话两三天也不一定搞得好,因为往往一个报错,就会卡住很久!

不过不要紧,以下是一些个人经验之谈,在遇到问题时希望能对你有参考意义:

  • 遇到问题,先不要着急,可以先看报错信息,基于经验去解决;
  • 经验解决不了,可以在网上搜索其他人是否遇到过同类问题;
  • 网上搜不到的,可以咨询身边有经验的同事、朋友或同学,但问题描述需具体、准确,如问题产生的背景、前因后果,报错的信息、截图,已经尝试过的解决方法等;
  • 问也问不到人的,那就只能不断尝试各种猜想,不断怀疑,并且基于此种怀疑去不断验证,逐一排除;
  • 还有一个极为重要且有效的,就是查看该系统/软件的日志,有报错日志最好,没有报错日志就边操作复现边看日志信息;
  • 遇到问题不可怕,是问题,总会有解决办法,一时想不到,不必焦躁,不必死磕,晾一晾,转换一下思路,说不定第二天就会”山重水复疑无路,柳暗花明又一村“!

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://itzsg.com/99414.html

(0)
上一篇 7小时前
下一篇 6小时前

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我们YX

mu99908888

在线咨询: 微信交谈

邮件:itzsgw@126.com

工作时间:时刻准备着!

关注微信