安装环境目录(亲测可以运行成功):

1.xcode安装(建议mac系统在10.12以上,xcode在8.1以上,避免低版本影响)

2.开发者证书(可以使用免费)

3.homebrew安装(用brew来安装依赖)

4.git安装

5.npm和nodejs、cnpm安装(appium需要node环境,用cnpm或者npm来安装依赖)

6.libimobiledevice的安装(这是类似安卓的adb的工具,连接设备)

7.ios-deploy安装(ios10以上需要安装来连接设备)

8.idevicesinstaller安装(iOS9一下的的类似安卓adb的工具,安装、卸载)

9.Carthage安装 (类似maven一样管理依赖,WebdriverAgent编译需要安装依赖)

10.appium-命令行或者桌面版安装

11.appium-doctor安装(用于检查appium的相关环境是否配置成功)

12.java+sdk安装,并配置环境变量

13.webdriveragent安装(安装一个webdriveragentrunner来通信驱动iOS设备)

14.启动appium

15.安装ios-webkit-debug-proxy (iOS的H5测试)

 

 

1.xcode安装(建议mac系统在10.12以上,xcode在8.1以上,避免版本影响)

 

2.开发者证书(可以使用免费)--具体申请,百度搜索

http://airtest.netease.com/docs/docs_AirtestIDE-zh_CN/2_device_connection/4_ios_connection.html

 

3.homebrew安装(用brew来安装依赖)

/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
brew update可以使用这更新

4.git安装

brew install git

 

5.npm和nodejs、cnpm安装(appium需要node环境,用cnpm或者npm来安装依赖)

brew install node
sudo npm install -g cnpm --registry=https://registry.npm.taobao.org 安装cnpm

检查是否安装成功

node -v

npm -v

cnpm -v

 

6.libimobiledevice的安装(这是类似安卓的adb的工具,连接设备)

brew install --HEAD libimobiledevice (安装build失败 Xcode版本太老了,最好升级到xcode10.1)

1、打印app列表 ideviceinstaller -l

2、查看当前已连接的设备的UUID idevice_id -l

3、获取设备信息 ideviceinfo

4、获取设备时间 idevicedate

5、重启设备 idevicediagnostics restart

6、安装ipa包,卸载应用 ideviceinstaller -i xxx.ipa

//命令安装一个ipa文件到手机上,如果是企业签名的,非越狱机器也可以直接安装了。
ideviceinstaller -U [bundleID]
//命令卸载应用,需要知道此应用的bundleID

        8、截图 idevicescreenshot

 

7.ios-deploy安装(ios10以上需要安装来连接设备)

cnpm install -g ios-deploy

2. ios-deploy常用命令

2.1 查看连接的设备(包括通过usb和wifi连接的)

ios-deploy -c

2.2 查看通过usb连接的设备

ios-deploy -c --no-wifi

2.3 安装应用到指定设备(其中xxx.app是Xcode编译后的ipa的路径)

ios-deploy --id [udid] --bundle [xxx.app]

2.4 卸载指定设备上的应用(根据包名,也就是bundleId)

ios-deploy --id [udid] --uninstall_only --bundle_id [bundleId]

2.5 查看指定设备上安装的所有应用(包括系统应用和第三方)

ios-deploy --id [udid] --list_bundle_id
如 ios-deploy --id 0420781d4e43f1f99935513c91e9b816f4dddc24 --list_bundle_id

2.6 检查指定设备上是否安装了某个应用

ios-deploy --id [udid] --exists --bundle_id
如 ios-deploy --id 0420781d4e43f1f99935513c91e9b816f4dddc24 --exists --bundle_id com.facebook.wda.integrationApp.taozhen

8.idevicesinstaller安装(iOS9一下的的类似安卓adb的工具,安装、卸载)

brew install ideviceinstaller

 

9.Carthage安装 (类似maven一样管理依赖)

brew install carthage

检查命令

carthage version

 

10.appium-命令行或者桌面版安装

http://appium.io/ 官网下载

开启打开这个链接 http://127.0.0.1:4723

 

11.appium-doctor安装(用于检查appium的相关环境是否配置成功)

sudo npm install appium-doctor -g 或者
sudo cnpm install -g appium-doctor
安装的地址存放:
link /usr/local/bin/appium-doctor@ -> /usr/local/lib/node_modules/appium-doctor/appium-doctor.js
检查 命令
appium-doctor
appium-doctor --ios
appium-doctor --android

 

12.java+sdk安装,并配置环境变量

百度下载安装jdk和sdk

 

13.webdriveragent安装(安装一个webdriveragentrunner来通信驱动iOS设备)

第一步:git clone https://github.com/facebook/WebDriverAgent.git

第二步:brew install Carthage

mkdir -p Resources/WebDriverAgent.bundle # 不知道为啥要加这步,先加着

第三步:./Scripts/bootstrap.sh

webdriveragent编译构建

WebDriverAgentLib、WebDriverAgentRunner、products下的integrationApp这三个都要设置开发者证书,并且bundleid修改

编译成功后,会在手机上有一个webdriveragent的一个app信任就可以使用了

安装编译好后,需要把appium 下的webdriveragent项目替换

路径 /Applications/Appium.app/Contents/Resources/app/node_modules/appium-xcuitest-driver

注意:

下载的appium桌面版本自带的webdriveragent路径在这个路径下

/Applications/Appium.app/Contents/Resources/app/node_modules/appium-webdriveragent

也可以直接用appium自带的webdriveragent(不用./Scripts/bootstrap.sh,直接WebDriverAgentLib、WebDriverAgentRunner、products下的integrationApp这三个都要设置开发者证书,并且bundleid修改)

编译WebdriverAgentRunner ----> 这时候控制台就会打印出手机的ip和端口

⇒ ios10以下版本可以直接用浏览器访问 ip+status/查看状态:

例如:http://10.0.0.1:8100/status

⇒ ios10以上版本需要通过mac转发一下再去访问

proxy 8300 8100   #开启iproxy 进行端口转发

浏览器中输入:http://localhost:8300 ,出现遗传json字符串即可。

iproxy 8100 8100
http://localhost:8100/status
http://localhost:8100/inspector

测试的时候,手机不链接wifi的话,直接就可以打开ip:端口 ,不用转发

证书冲突的话,将BuildSettings里的code singing identity设置成iPhone Develpoer,解决

 

 

14.启动appium

desired_capabilities={
# 'app': app,
'platformName': 'iOS',
'platformVersion': '11.4.1',
'deviceName': '陶振的iphone', # 陶振的iphone
'bundleId': 'com.facebook.wda.integrationApp.taozhen', # com.renren-inc.nuomi com.facebook.wda.integrationApp.taozhen
'udid': '0420781d4e43f1f99935513c91e9b816f4dddc24',
'automationName': 'XCUITest',
"xcodeOrgId": "10位开发者账号teamid", # 10位开发者账号teamid #
"xcodeSigningId": "iPhone Developer"
}
xcodeOrgId(teamId)获取 security find-identity -v -p codesigning
xcodeOrgId(teamId) 在安装webdriveragent的时候可以看到
https://www.jianshu.com/p/b5bc45362fa0

 

15.安装ios-webkit-debug-proxy (iOS的H5测试)

在做iOS的h5页面的时候,肯定会需要去做webview调试来进行代码调试,而iOS webview调试需要区分真机和模拟器,因为具体的实现原理不一样的,模拟器使用 remote debugger,可以直接通过safari远程调试,而真机使用 ios-webkit-debugger-proxy去远程调试的。

注意,测试包必须要使用develop证书打包,才可以进行真机调试。

通过如下命令进行安装

brew install ios-webkit-debug-proxy
安装之后运行如下命令查看是否能够调起ios-webkit-debug-proxy
ios_webkit_debug_proxy -c XXXXXXXXXX:27753 -d XXXXXXXXXX表示设备UDID
运行上述命令发现报错如下:
Could not connect to lockdownd. Exiting.: Permission denied

通过查找资料,发现网上大部分的解决方案是执行如下命令:

sudo chmod -R 777 /var/db/lockdown/
appium如何启动ios-webkit-debug-proxy
发现ios-webkit-debug-proxy可以通过设置DesiredCapabilities来调起,代码如下:
cap.setCapability(“startIWDP”,true);

 

遇到问题:

1. appium-doctor 检查异常

appium-doctor
/usr/local/lib/node_modules/appium-doctor/build/lib/general.js:59
} catch {
SyntaxError: Unexpected token {
检查对应general代码,看代码意思是node版本不能低于10
升级node
brew upgrade node

如果更新brew卡住,更换brew源

替换brew.git:
cd "$(brew --repo)"
git remote set-url origin https://mirrors.ustc.edu.cn/brew.git
给 /usr/local赋予修改权限
sudo chown -R $(whoami) /usr/local
brew link --overwrite node 重写link
brew link node 链接link
node地址
/usr/local/Cellar/node/13.7.0

编译项目

cd /usr/local/lib/node_modules/appium/node_modules/appium-xcuitest-driver/WebDriverAgent
xcodebuild -project WebDriverAgent.xcodeproj -scheme WebDriverAgentRunner -destination 'id=3825bba08e5c10c499ddaf0276bac01983ab7119' test
 
http://localhost:8100/status
http://localhost:8100/inspector

问题1:

webdriveragent运行test,出的log里的链接不成功 访问不到的话,尝试用 iproxy 8100 8100 (转发之后http://127.0.0.1:8100/status 这个链接可以打开) 但是运行appium会提示8100端口号被占用

webdriveragent使用iproxy 8100 8100代理后,启动appium,提示端口8100被占用

An unknown server-side error occurred while processing the command. Original error: The port #8100 is occupied by an other process. You can either quit that process or select another free port.

⇒ ios10以下版本可以直接用浏览器访问 ip+status/查看状态:

例如:http://10.0.0.1:8100/status

⇒ ios10以上版本需要通过mac转发一下再去访问

http://127.0.0.1:8100/status如果打开没有json,启动appium就会有这个失败,但是使用了ipoxy 8100 8100后,使用appium又会提示8100端口号被占用???天呐

答:不要用wifi,直接用4G ,就不用转发

问题2

Unable to launch WebDriverAgent because of xcodebuild failure: xcodebuild failed with code 65 xcodebuild error message

出现这个问题的时候,一般是webdriveragentRunner test失败后了,强行起appium服务就会有这个错误,同问题3

这个是链接json都没还通 ,肯定起不来

问题3:

WebDriverAgentRunner.xctest/WebDriverAgentRunner (0x102390530). One of the two will be used. Which one is undefined.

这个问题,就重新链接xcode、手机插拔,重新编译webdriveragent一遍就好了,没有特别操作,不知道为啥发生

断掉wifi,不然算链接了两个手机 ios-deploy -c

问题4:

webdriveragentrunner 构建成功,但是test 失败

https://testerhome.com/topics/16950

问题5:

对于一个未知问题的说明:

在使用Appium的过程中我们会遇到一些未知问题,通过网络查找可能会需要补充以下两对Desired Capabiities:

{ "xcodeOrgId": "<Team ID>", "xcodeSigningId": "iPhone Developer" }
caps["app"] = "http://appium.s3.amazonaws.com/TestApp7.1.app.zip"
开发者账号的teamid如何查看
security find-identity -v -p codesigning

问题6:

Original error: 'bundleId' desired capability not provided

答:原因是appium自带的webdriveragent没有正确替换,网上教程说的appium自带的路径在

/Applications/Appium.app/Contents/Resources/app/node_modules/appium-xcuitest-driver

/Applications/Appium.app/Contents/Resources/app/node_modules/appium/node_modules/appium-xcuitest-driver/

其实我下载的appium桌面版本V1.15.1版本自带的webdriveragent路径在这个路径下

/Applications/Appium.app/Contents/Resources/app/node_modules/appium-webdriveragent

直接替换或者直接用appium自带的webdriveragent就可以了

https://github.com/appium/appium-xcuitest-driver/blob/master/docs/real-device-config.md