IOS自动化测试环境搭建(Python Java)

article/2025/8/21 16:15:36

一、前言

 IOS的App自动化测试与Android的一样,也可以用appium来进行。但是IOS自动化依赖苹果的osx系统、Xcode构建等,且封闭的系统需要苹果开发者账号才可以驱动真机。Appium的环境配置有点麻烦,可能大部分时间都在处理各种稀奇古怪的报错,甚至于需要重装系统。

本文旨在记录配置过程(MacOS系统的Python和Java环境配置也有记录),给同道中人提供参考,让大家少走弯路。

二、环境依赖

1、环境依赖项

  • Xcode
  • Git
  • homebrew
  • npm、nodejs
  • libimobiledevice
  • idevicesinstaller
  • ios-deploy
  • Carthage
  • appium
  • appium-doctor
  • Webdriveragent
  • ios-webkit-debug-proxy
  • Python和Java
  • Android SDK

2、环境需求与支持

需求版本最低要求我的环境版本
Mac OSX10.11+macOS 11.3.1
iOS9.3+13.3、14.7
Xcode7+12.5
Appium1.6+1.20.2

 

驱动程序对应iOS版本
ios9.3或以上ios9.3或以上
UIAutomation Driverios9.3以下

三、环境配置

1、xcode安装

Xcode是运行在操作系统Mac OS X上的集成开发工具(IDE),iOS自动化测试使用Xcode主要用于将绑定了苹果开发者证书的WebDriverAgent打包至iOS手机。

安装方式有两种,根据你的系统版本来选择。

方式一:Mac平台的App Store安装

通过App store安装的Xcode是最新版本,需要最新版macOS系统才能兼容。如果已经升级至最新系统,可以直接在App store下载安装。最好不要升级至最新系统,可能遇到其他兼容性问题。

方式二:离线包安装

 你的macOS系统不是最高版本的时候,要保证最低版本需求:macOS在10.12以上,xcode在8.1以上。

离线包下载地址: https://developer.apple.com/cn/support/xcode/ (可以选择版本)

离线包的Xcode版本选择,最好是根据你的系统版本发布时间来定,选发布时间相近的版本。我的版本是:macOS 11.3.1 、Xcode12.5

2、Git安装

安装的Xcode自带Git程序,一般Xcode安装好后不需要再单独安装Git,验证Git环境即可。如果后面的环境依赖安装出现关于Git的报错,需要更新Git,或者卸载重新安装。

验证安装:git --version

验证git连接:ping github.com

能够连接成功时,终端显示:

在这里插入图片描述

 

安装命令:brew install git

更新Git:brew upgrade git

3、Homebrew安装(用brew来安装依赖)

 Homebrew是一款Mac OS平台下的软件包管理工具,拥有安装、卸载、更新、查看、搜索等很多实用的功能。简单的一条指令,就可以实现包管理,而不用你关心各种依赖和文件路径的情况,十分方便快捷。类似apt-get、yum。

安装途径有两种:国外源和国内园,推荐使用 国内源,我使用国外源没成功过。

方式一(国外源):

官网: Homebrew — The Missing Package Manager for macOS (or Linux)

在官网首页复制下面的安装命令,在终端执行命令安装:

 

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

验证安装:brew -v

更新Homebrew命令:brew update && brew upgrade && brew clean

方式二(国内源):

上面的官网安装方法失败率很高,可以采用国内源安装。

homebrew国内源安装方法,终端执行下面的命令:

/bin/zsh -c "$(curl -fsSL https://gitee.com/cunkai/HomebrewCN/raw/master/Homebrew.sh)"

 

终端运行时,根据提示操作:

在这里插入图片描述

安装结束后重启终端 或者 运行 source /Users/sinosun/.bash_profile 否则可能无法使用。

终端执行:brew update 保持最新版

最后验证安装:brew -v 得到版本号

在这里插入图片描述

参考链接:

Mac Big Sur升级后brew安装报错问题解决_泠月飞花的博客-CSDN博客 (macOS升级后安装报错解决办法)

 

4、npm和nodejs安装
    Appium是通过Node.js开发的http服务器,用来创建和控制WebDriver的session,因此需要安装Node.js。npm是Node.js的包管理工具,随同Node.js一起安装。

4.1、(方式一:brew在线安装)
【我的nodejs版本是:16.6.0】

安装命令:brew install node 此方法安装的是最新版本

验证安装:node -v 得到版本号

npm -v 得到版本号


在这里插入图片描述

其它在线安装方法:(指定版本安装)

终端执行命令行找到自己合适的node版本 :brew search node

在这里插入图片描述

查询显示最高可以安装 node14 版本

安装命令:brew install node@版本号 (会将npm和nodejs一起安装)

绑定安装的node,命令:brew link --overwrite --force node@版本号

验证安装:node -v 得到版本号

npm -v 得到版本号

在这里插入图片描述

卸载node:

brew uninstall node@版本号 --force

例如:安装的是12.18.1,卸载命令:brew uninstall node@12 --force

4.2、(方式二:离线包安装)

brew在线安装是从官网下载,速度慢且成功率低,可以通过下载离线包安装解决。

nodejs官网下载地址: https://nodejs.org/en/ 点击“Current”区域稳定版。

安装包下载并安装后,同样在终端中输入node -v 、 npm -v 验证

4.3、cnpm国内源安装

NPM安装插件是从NPM官网下载对应的插件包,该网站的服务器在国外,经常会出现下载缓慢或出现异常,这时便需要找到另外的方法提供稳定的下载,这个方法就是CNPM。阿里巴巴的淘宝团队把NPM官网的插件都同步到了在中国的服务器,提供给我们从这个服务器上稳定下载资源。

CNPM同样是NPM的一个插件,要安装的话需要在终端执行以下命令:

sudo npm install -g cnpm --registry=https://registry.npm.taobao.org

验证安装:cnpm -v

4.4、npm安装插件常见报错

在终端通过npm安装插件时,前面加上“sudo”可以减少报错几率。(加上sudo后,命令以系统管理者的身份执行)

 如果通过npm安装插件时,出现“npm ERR!”提示,表示安装失败。前缀加上sudo也报错,可以尝试国内源cnpm安装,只需要将命令中的npm换成cnpm。

如果终端安装过程中出现“npm WARN”提示,可以忽略。

5、libimobiledevice安装

libimobiledevice是一个使用原生协议与苹果IOS设备进行通信的库,相当于Android的adb。appium连接iOS设备必需要此依赖库,通过这个库Mac os可轻松获得iOS设备信息。支持iOS10以上系统

安装命令:brew install --HEAD libimobiledevice

卸载:brew uninstall --ignore-dependencies libimobiledevice

常用命令:

1、idevice_id -l 显示当前所连接的设备[udid],包括 usb、WiFi 连接

2、ideviceinfo 获取设备信息

3、idevicedate 获取设备时间

4、idevicename 获取设备名称

5、idevicescreenshot 截图

6、ideviceinstaller -u [udid] -i [xxx.ipa] #xxx.ipa:安装文件路径

7、ideviceinstaller -u [udid] -U [bundleId] #bundleId:应用的包名

 

检查安装:
在这里插入图片描述

报错参考: https://www.cnblogs.com/zhiaijingming/p/11005330.htm

6、idevicesinstaller安装
ideviceinstaller是一个管理连接设备的工具,与ios-deploy、Android的adb功能类似。

 ideviceinstaller的功能与libimobiledevice差不多,都可以获取iOS设备的udid、安装App、卸载App、获取bundleid等,但ideviceinstaller仅支持iOS9以下系统环境,libimobiledevice支持iOS10以上系统环境。

安装命令:brew install ideviceinstaller

常用命令:

1.ideviceinstaller -l 打印app列表
在这里插入图片描述 

7、ios-deploy安装
ios-deploy是一个使用命令行安装ios app到连接设备的工具

原理是根据os x命令行调用系统底层函数,获取连接的设备、查询/安装/卸载app

iOS10以上系统使用appium,需要依赖ios-deploy

安装:sudo npm install -g ios-deploy 或 sudo cnpm install -g ios-deploy

安装指定版本的ios-deploy参考: https://www.jianshu.com/p/a100914ec784

ios-deploy常用命令:

1.ios-deploy -c 查看连接的设备(包括通过usb和wifi连接的)

2.ios-deploy -c --no-wifi 查看通过usb连接的设备

3.ios-deploy --id [udid] --bundle [xxx.app] 安装应用到指定设备(其中xxx.app是Xcode编译后的ipa的路径)

4.ios-deploy --id [udid] --uninstall_only --bundle_id [bundleId] 卸载指定设备上的应用(根据包名,也就是bundleId)

5.ios-deploy --id [udid] --list_bundle_id 查看指定设备上安装的所有应用(包括系统应用和第三方)

    例如: ios-deploy --id 770dfe115807e7d494b4721b1e4ebd6ecb9424d3 --list_bundle_id

6.ios-deploy --id [udid] --exists --bundle_id [bundleId] 检查指定设备上是否安装了某个应用

    例如: ios-deploy --id 0420781d4e43f1f99935513c91e9b816f4dddc24 --exists --bundle_id com.facebook.taozhen

注意:Xcode是通过离线包安装的,安装ios-deploy时会报错:
在这里插入图片描述

 这个是由于Xcode没有设置版本的原因导致的,设置方法:进入Xcode偏好设置–>点击locations–>Comand Line Tools栏选择版本号,

然后重新执行安装命令。如下图:
在这里插入图片描述

检查安装:
在这里插入图片描述

 

安装错误解决参考: https://blog.csdn.net/weixin_44643020/article/details/88226097

8、Carthage安装

Carthage是一款iOS项目依赖管理工具,与cocoapods功能相似,可以帮助管理第三方依赖,类似于Java的maven。它会把第三方依赖编译成framework,以framework形式将第三方依赖加入到项目中进行使用和管理。自动化测试用到的WebDriverAgent通过Carthage管理项目依赖。

 

安装命令:brew install carthage

检查命令:carthage version
在这里插入图片描述

最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!有需要的小伙伴可以点击下方小卡片领取  

 


http://chatgpt.dhexx.cn/article/q8tKXBar.shtml

相关文章

【iOS自动化测试】第三章:框架设计

框架总体 pytestallureappium 采用po分层设计集成到jenkins运行 框架结构 名称作用备注BasePage存放相应的封装方法基类层Pages页面层用于元素的定位封装页面层TestCases编写测试用例用例层Report存放报告报告层Public公共的调用方法公共层Log日志存放位置日志层Image用于存放…

iOS自动化测试的那些干货

前言 如果有测试大佬发现内容不对,欢迎指正,我会及时修改。 大多数的iOS App(没有持续集成)迭代流程是这样的 也就是说,测试是发布之前的最后一道关卡。如果bug不能在测试中发现,那么bug 就会抵达用户,所以测试的完整…

iOS自动化,知识点1

知识点1: 初始化连接手机 1.查找udid和包名 2,appium连接ios手机的条件 from appium import webdriver from selenium.webdriver.common.by import By import timedef test_01():desired_caps dict()desired_caps["platformName"]"iOS&…

2023主流技术 Appium+IOS 自动化测试环境搭建

关于Appium for IOS Appium是目前最主流的app自动化测试技术,能够同时支持IOS、Android平台上的移动应用自动化测试,能支持众多语言,包括:Java、Python、Ruby、JavaScript等;并且Appium是开源免费使用的。 目前网上的…

ios自动化-1阶段

使用pytestwda执行自动化 整体结构代码层级 #目前待改进的地方 1.执行速度慢,wda获取dom树的效率太低 2.稳定性差,经常会出现一些弹窗导致失败,可参考安卓弹窗处理 watcher() 优化 3.有部分元素定位不到,目前怀疑是层级问题&…

Visio 画流图 程序流图 斜线

如果直接在Visio中选择连接线来连接,会有直角出现,但是我们需要斜线: 解决方法: 选中直角连接线,右键,选择“直线连接线”: 这样我们就能画出想要的斜线了,也就可以画出程序流图了…

Visio设置跨线之间不避让

文章目录 设置方法1. 选中所需设置的直线;2. 菜单选中设计;3. 选中连接线;4. 选中显示跨线。 设置方法 1. 选中所需设置的直线; 2. 菜单选中设计; 3. 选中连接线; 4. 选中显示跨线。

Visio画ER图

建立数据库时我们需要考虑数据之间的关系,为了理清数据之间的关系我们需要对数据进行统一的整理。对于较复杂的数据库我们需要建立数据库模型,具体可分为两步:首先对数据库进行结构分析并使用树、表等描述数据,然后分析数据库的操…

visio 教程-绘图技巧、快捷键大全

visio 绘图技巧、快捷键大全,一键对齐 前言一、常用快捷键二、使用技巧对象移动对象复制绘制直线一键对齐 自动排列(非常好用)辅助线对齐图像边缘空白消除word中visio图编辑技巧去掉直线交叉点增加连接点 前言 Visio 是Office软件系列中的负…

visio画太极图

步骤一 添加两个圆,且大圆的半径是小圆的2倍。 步骤二 往小圆添加一条直线作为直径 步骤三 选中小圆和直径,依次点击开发工具–操作–连接,然后选中连接后的小圆,再依次点击开发工具–操作–修建,可以分离出如下所示的两个…

visio拉动线条总是保持直线状态

** 有时候在visio中画图想画直线,但是线条总是会弯折,为了解决和个问题,如下做:鼠标拖住线条的一个端点,按住ctrlshift,线条就只能在水平或垂直方向上移动:** 1、鼠标选择一个端点: 2、按住ctr…

Visio 2013画直线问题总结(折线变直,交叉时产生的交叉桥)

问题1:我们画直线时画出来的是折线,折线变直的方法:选中线条,点击鼠标右键,选择“直线连接线”如下图: 问题2:直线交叉时产生的交叉桥,影响整体美观,去掉交叉桥的方法&am…

WinForm学习

文章目录 一、C#是什么?二、C#的特点三、了解C#、.NET、Winform的关系四、快速创建Winform程序五、Winform菜单和工具栏六、Form初始化、布局总结 一、C#是什么? C#是一个现代的、通用的、面向对象的、面向组件、结构化语言C#的构想十分接近C和C,是一门…

winform利用html开发,Winform开发框架之HTML编辑控件介绍

我们知道,在做Web开发的时候,很多控件可以用来做HTML内容编辑的,Winform开发就相对少很多,不过很多时候,我们在做Winform开发的时候,也是需要处理这样的场景的。例如发送HTML邮件内容的时候,在给客户编写内容丰富的反馈意见或者邮件的时候等等,因此有必要做一个支持好H…

Winform开发框架之框架演化

原文地址为: Winform开发框架之框架演化 国庆去了一趟北京,回来一直忙着各种各样的事情,有公司的,有个人的,就没停过来,所以很久没有写博客了,写博客要有一个好的心情及一个好的思路&#xff0…

Winform开发框架之介绍

winform开发框架,尽量减少程序员在界面中的代码量和工作量,Model自动生成,界面以及控件自动生成,简单的逻辑自动生成。自动生成的界面已经实现简单逻辑增删改查功能。 其他开发框架都已经或多火烧实现了这些功能,如果代…

C# winform开发的考试系统

C# winform开发的考试系统,数据库sql server2014,分为教师端和学生端,两端都采用经典的三层架构,压缩包里有数据库文件,可以直接附加使用,另外还有sql脚本,也可以还原数据库使用,每行…

C#之winform(软件开发)

C#之winform(软件开发) 1.MD5加密 (1)其实就是对数据库里面的密码进行再加密,不至于让数据库一攻就破。 从这个链接先简单了解一下:MD5在线加密链接 你只能把字符串变成MD5值,但是无法将MD5值变成字符串。 using S…

WinForm框架开发教程 - 如何实现简单化开发?

在Winform开发领域开发过十多年的项目中,见证着形形色色的架构和官方技术的应用,从最早类似Winform模式的WebForm技术,到接着的JQuery界面组件,再到Asp.net Core的技术应用,以及后来的纯前端技术出现,Angul…

Winform开发框架之终极应用

原文地址为: Winform开发框架之终极应用 在前面两篇随笔,都围绕着我的Winform开发框架介绍一些重要的组件,如字典模块封装《Winform开发框架之字典数据管理》和权限管理系统模块封装《Winform开发框架之权限管理系统》。本框架主要的功能如下…