做UI自动化,最难的一步就是在环境搭建上,怎么去搭建一个UI自动化测试的环境,会难住很多人,在Mac上搭建appium如何搭建呢,本文带着大家去领略如何在mac上搭建appium测试环境。下面就是详细的搭建的过程。
如果没有安装过Homebrew,先安装homebrew
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
如果没有安装npm,
brew install node
然后安装
>npm install wd
安装依赖库
brew install libimobiledevice
如果没有安装 libimobiledevice,会导致Appium无法连接到iOS的设备,
所以必须要安装,如果要在iOS10+的系统上使用appium,则需要安装ios-deploy
npm install -g ios-deploy #如果是iOS10以上的系统才需要安装
npm install appium-doctor -g
安装后执行
appium-doctor --ios
可以查看与iOS相关配置是否完整,下图是全部配置都成功,如果有那一项是打叉的,则进行安装就可以了。
错误✖ Error running xcrun simctl
解决方案
解决方法:打开Xcode软件选中 Xcode>preferences>Locations里面,设置之后再重新运行检查命令即可。
Carthage was NOT found!
这个问题是在你检验Appium配置是否成功的时候出现,解决这个问题比较简单,安装这个Carthage就好了,方法:
brew update
brew install carthage
然后在执行命令查看
我们就继续安装缺少的依赖
npm -g install opencv4nodejs
mjpeg-consumer cannot be found . 解决
npm i -g mjpeg-consumer
idb and idb_companion are not installed解决
命令如下:
brew tap facebook/fb
brew install idb-companion
applesimutils cannot be found 解决
brew tap wix/brew
brew install applesimutils
ios-deploy cannot be found解决
npm install -g ios-deploy
set-simulator-location is not installed 解决
brew install lyft/formulae/set-simulator-location
成功后如下
这样代表安装成功
然后启动appium
报错解决
npm install sqlite3 --save
执行appium
appium
启动成功
然后我们打开xcode
启动完毕后,我们选择
环境已经完成了,接下来,我们去要获取页面的定位的元素,我们要怎么去获取呢,appium自身带了一套元素定位的,那么我们看看怎么去启动呢,下面就是详细的教程
我们在测试中需要查看设备id,我们可以执行
instruments -s devices
获取启动的设备的id。
打开我们的测试项目,我们可以看到app的位置
然后我们启动appium客户端
然后点击获取去获取定位信息
我们这里需要根据我们的需求进行配置
{
"platformName": "ios",
"platformVersion": "13.3",
"app": "/Users/lileilei/Library/Developer/Xcode/DerivedData/UICatalog-colpyngrlfupoaczwktkidiolojp/Build/Products/Debug-iphonesimulator/UICatalog.app",
"automationName": "XCUITest",
"udid": "6A367568-AE13-49A0-BEE2-3B1AD623AB3E",
"deviceName": "iPhone 11 Pro Max"
}
点击启动
既可以等待,打开后界面如下
然后根据我们的选择去定位我们的想要操作的app的界面的元素即可,接下来,我们就是去编辑对应的脚本。开展UI自动化。
自动化测试难的第一步,难在了自动化测试环境的搭建,我们完成了自动化测试环境的搭建,元素的定位,接下来,我们就可以轻松上手ios 自动化了。
UI自动化测试的第一个难点就是环境搭建,无论是IOS系统还是安卓系统,搭建环境是大家入行第一个门槛。跨过去,就是柳暗花明的又一春。