iOS自动化测试之Appium的安装和使用

一、前言

因为需要配合测试同学处理自动化测试方面的东西,所以记录下来自己关于Appium的安装和使用,但是主要是关于安装的,因为安装真是遇到了很多坑,另外,我只是关注iOS App的测试,所以这里没有测试Android。

Appium 是一个开源工具,用于自动化 iOS 手机、 Android 手机和 Windows 桌面平台上的原生、移动 Web 和混合应用。 Appium的核心是 客户端+服务端 架构。所以需要下载客户端和服务端。

二、Appium Desktop

对于Appium Desktop,有2种安装方式,命令行和安装包,我这里直接去GitHub下载安装包: Github地址:github.com/appium/appi…

在使用之前,需要阅读一遍Appium的官方文档,理解里面的一些概念。文档里是有中文的。 文档地址:github.com/appium/appi…

三、使用iOS模拟器

推荐这个,比较方便,配置环境简单,需要电脑上安装好Xcode+Appium即可。 启动Appium之后,来到此页面:

在这里输入5个字段即可:

  • platformName固定值:iOS
  • platformVersion固定值:iPhone Simulator
  • automationName固定值:automationName
  • platformVersion模拟器系统版本号,打开iOS模拟器在关于里能看到
  • app:要安装到模拟器里面的安装包地址,需要是绝对路径,经测试,需要是.app结尾的安装包

这些能力字段,官方文档是有解释和举例的。

填写完毕之后,点击启动会话,即可自动打开模拟器。都填写完毕后的例子:

{
    "platformName": "iOS","deviceName": "iPhone Simulator","automationName": "XCUITest","platformVersion": "14.5","app": "/Users/hou/Desktop/name.app"
}
复制代码

注意:app字段的安装包,对于iOS开发而言,很容易得到这个文件,iOS项目工程在模拟器运行成功,就可以在Xcode的工程目录里找到它。

四、使用iOS真机

4.1 Doctor(可选)

这一步是可选的, 只是为了方便排查问题,不想装也没有问题,不过如果iOS和Android都需要自动化测试的话,建议安装一下。 appium-doctor安装(依赖npm,所以需要有装过node):

npm install appium-doctor -g
复制代码

安装后执行appium-doctor --ios指令,可以查看与iOS相关配置是否完整。比如我执行的结果:

4.2 Homebrew

homebrew是 Mac OS 下最优秀的包管理工具,没有之一。去官网首页,上面有安装的命令。已经安装过的不用管这个。

# homebrew官网地址:
https://brew.sh/index_zh-cn
复制代码

4.3 Python3(一般不用自己装)

安装Python3,目前Mac系统会自带两个版本的Python2和Python3,不用自己再安装了,真想自己安装可以使用brew管理和安装:

# 安装之前,先看看系统是否已经安装过Python3了
brew install python3
复制代码

4.4 idevice(可选)

libimobiledevice是一个使用原生协议与苹果iOS设备进行通信的库。通过这个库我们的 Mac OS 能够轻松获得 iOS 设备的信息,安装命令:

brew install libimobiledevice
复制代码

libimobiledevice的一些使用方法:

# 查看 iOS 设备日志
idevicesyslog
# 查看链接设备的UDID
idevice_id --list
idevice_id -l
# 查看设备信息
ideviceinfo
# 获取设备时间
idevicedate
# 获取设备名称
idevicename
# 端口转发
iproxy XXXX YYYY
# 屏幕截图
idevicescreenshot
复制代码

这里之所以说是可选的,是因为如果装了Xcode,通过Xcode的集成工具,也能拿到设备信息和列表。命令是:instruments -s devices。或者在Xcode的Window-->Devices and Simulators也可以看到。

4.5 安装Carthage

Carthage是一款iOS项目依赖管理工具,与Cocoapods有着相似的功能,可以帮助你方便的管理三方依赖。它会把三方依赖编译成framework,以framework的形式将三方依赖加入到项目中进行使用和管理。 WebDriverAgent本身使用了Carthage管理项目依赖,因此需要提前安装Carthage。命令:

brew install carthage
复制代码

4.6 获取WebDriverAgent

WebDriverAgent是 Facebook 推出的一款 iOS 移动测试框架,能够支持模拟器以及真机。 WebDriverAgent在 iOS 端实现了一个WebDriver server,借助这个 server 我们可以远程控制 iOS 设备。你可以启动、杀死应用,点击、滚动视图,或者确定页面展示是否正确。 Clone下项目,Github地址是:

https://github.com/facebookarchive/WebDriverAgent
复制代码

使用GUI或者命令Clone:

git clone https://github.com/facebook/WebDriverAgent.git
复制代码

下载项目之后,使用命令进行操作,确保之前已经安装过 Carthage:

cd WebDriverAgent
./Scripts/bootstrap.sh
复制代码

上面这种办法我自己试了试是不行了,我是使用下面这种: 先安装好Appium,电脑-应用程序->Appium.app->右键-显示包内容->Contents,然后搜索WebDriverAgent.xcodeproj,如下图:

搜到之后,对文件进行右键,如下图:

然后将新打开的文件,全部复制到一个新的文件夹(比如自己主页目录下)去,例如:

4.7 编译WebDriverAgent

使用Xcode打开WebDriverAgent工程,配置好证书之后,点击Xcode的Product->Test,然后就会运行到手机上, 控制台会输出手机的服务端口号:

这里我遇到一个坑,这个地址,直接输入到电脑浏览器里, 是能得到一个JSON的,这样才是正确的,但是我浏览器怎么都得不到,而且明明是同一个网络的。后来我的办法是使用了iproxy进行了端口转发,过程是:

# 1.安装 usbmuxd
brew install usbmuxd
# 2.获取手机的udid
idevice_id -l
# 3.设置端口转发
# 第一个8900:为电脑端的端口 第二个8100:为手机端webdriveragent服务的端口 
# 最后的数字:为自己手机的序列号
iproxy 8900 8100 -u 743430xxxxxxxxd9bc99
复制代码

这时,我在电脑浏览器输入地址就可以得到JSON了,需要注意的是,端口号的问题。比如你替换了端口,那么你浏览器输入的地址就是:http://127.0.0.1:8900

这里我参考的文章:codetosurvive1.github.io/posts/webdr…

这个坑的解决:我后来查看了Xcode项目,发现是项目的开发者账号问题,在解决了开发者账号和bundleId之后,已经正常了,浏览器输入Xcode输出的地址,可以看到JSON。

一定要检查下图中标出来的开发者账号和bundleId。

4.8 编译WebDriverAgent

在启动Xcode项目WebDriverAgent之后,并且安装到真机之后,打开Appium,启动服务,来到这个页面,输入下面的的能力字段,应该是就可以连接到真机了。

例如我填写的JSON:

{
    "platformName": "iOS","platformVersion": "14.0","deviceName": "iPhone8","bundleId": "com.xxxx.xx",// 要测试App的bundleId
    "udid": "xxexxx"  // 真机的udid,如果电脑只链接了一个真机,可以填写auto
}
复制代码

五、Appium使用

Appium使用我没太深入研究,因为我主要是配合测试同学的,不过Appium的Github上,是有中文文档的,全部看一遍,简单的录制和脚本还是很容易上手的。

5.1 打开Appium

Host不用管,不填写就是本机,跟填127.0.0.1是一样的。点击启动服务器

注意,在Appium的菜单-->视图-->语言。是切换成中文显示的。

点击右上角的 放大镜

原文地址:https://blog.csdn.net/weixin_54556126

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


在有效期内的苹果开发者账号(类型为个人或者公司账号)。还有一种情况,就是你的Apple ID被添加到公司开发者账号团队里面,这样也是可以的,但是需要叫管理员给你开通相应的账号权限,如下截图:这里可能有些同学会问,苹果开发者账号是什么?如何申请?那么可以看看我的上一篇文章:iOS苹果开发者账号(公司账号)申请流程详解能正常编译打包的iOS工程项目(都不能正常编译谈何出包上架
Appuploader官网--IOS ipa上传发布工具,证书制作工具跨平台版,windows,linux,mac系统都可用 (applicationloader.net)第一步:注册苹果开发者账号,访问以下网址,按照提示注册即可,因为不需要支付688认证苹果开发者,所以没什么好讲的。证书部分:主要是通过工具生成.p12证书文件,后面这个证书要导入mac系统。描述文件:这个文件主要包含了证书,公钥,设备信息等,具体可以百度了解详情。第三步:使用xcode打包导出ipa文件,供其他人内测。..........
苹果在9月13号凌晨(北京时间)发布 iOS 16,该系统的设备可能会因为各种原因,导致功能不可用和UI错乱等问题,我们需要做好适配iOS 16。
计算机图形学--OpenGL递归实现光线追踪
Xcode 14打出来的包在低版本系统运行时会崩溃,报错信息是Library not loaded: /usr/lib/swift/libswiftCoreGraphics.dylib,在苹果开发者论坛搜索报错信息,可以看到会闪退的最高版本是iOS12.1(不敢肯定,毕竟我没测过,不过肯定低于iOS 12.4
iOS16手机开启开发者模式 "developer mode disable"Pod工程中的Bundle target签名报错
【计算机图形学】【实验报告】DDA画线算法、Bresenham中点画线算法、多边形填充算法(附代码)
iOS 16 满载全新的个性化功能、更具深度的智能技术,以及更多无缝的沟通与共享方式,让 iPhone 的体验更进一步。13、隐私权限增强,如通过 UIDevice 获取设备名称时,无法获取用户的信息,只能获取设备对应的名称。
3、回到苹果开发者中心,如下图,点击certificates,点蓝色小加号,就可以开始创建证书,创建证书的时候无论测试还是上传app store打包,都要选ios distribution app store and adhoc,不要选apple和develpment类型的证书。2、如下图,点左边的profiles菜单,点击蓝色加号,创建描述文件,创建过程中会要求我们选择描述文件的类型,假如你想发布app到app store,则选择app store,假如你想真机测试,则选择ad hoc类型。
需要:Unity,IOS平台模块,Xcode,IOS_SDk,MAC电脑,Iphone手机
最近下载安装 xcode 并解压安装,遇到一些问题误以为是错误,记录在此。从百度和谷歌上搜了很多帖子,发现并没有靠谱的 xcode 国内的镜像,这里提供一个可以跳转到官网的下载方式。xcode 不同版本的列表,下载时注意不同 macOs 不同的系统和 Xcode 版本的对应关系。如 要求 及其以上版本。https://xcodereleases.com/注意点击后会跳到官方下载地址,需要登录苹果账号。xcode 文件很大,通常要 10G 以上,下载速度很慢。可以考虑使用 Free Downlo
使用苹果登录作为第三方登录
missing xcrun at: /Library/Developer/CommandLineTools/usr/bin/xcrun解决方法
Xcode14 正式版编译报错' does not contain bitcode.You must rebuild it with bitcode enabled (Xcode setting ENABLE_BITCODE), obtain an updated library from the vendor, or disable bitcode for this target. file 'xxx' for architecture arm64解决方案
那应该和升级Xcode 14有关系。但是官方还没有给出解决方案。应该后续会有兼容的cocoapods 新版本。
项目中需要用到Xcode将C++代码输出的Mac版本的DLL文件即DYLIB文件,并能够使用C#代码调用。Unity与 DLL文件 ☀️| 怎样使用VC++生成一个DLL文件并调用!这次来看一下在Mac使用Xcode生成的方法吧!本文介绍了在Mac中怎样使用 Xcode项目使用C++生成 .dylib文件的方法。相对于在Windows中使用AndroidStudio创建动态链接库的方法来说,使用Xcode创建.dylib文件确实简单了很多。