从零开始配置appium iOS环境

需要在一台远程机配置appium iOS环境,从零开始,全新配置,简记下来,以资参考。

本地 mac 连接远程 mac 桌面

  • 远程机,设置,share-屏幕共享
  • 终端机Finder,快捷键cmd+k,输入vnc://远端机IP访问

文件共享

  • 远程机,设置,share-文件共享
  • 终端机Finder,快捷键cmd+k,输入smb://远端机IP访问

ssh

(非appium-iOS环境必需)
打开远程机ssh,以便本地命令行访问

  • 检查ssh是否开启
    sudo systemsetup -getremotelogin
  • 开启ssh
    sudo systemsetup -setremotelogin on

配置 .bash_profile

[ -r ~/.bashrc ] && source ~/.bashrc
(使.bashrc生效)

AppStore 安装Xcode

若系统版本旧,会被提示先升级系统才能安装。

官网下载安装 appium-desktop

这个非必需的,有下面命令行安装的appium即可。

下载安装jdk

  • oracle下载安装
  • .bashrc配置JAVA_HOME
    1
    2
    3
    4
    5
    6
    JAVA_HOME=$(/usr/libexec/java_home -v 1.8)
    PATH=$JAVA_HOME/bin:$M3_HOME/bin:$PATH
    CLASSPATH=$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar:.
    export JAVA_HOME
    export CLASSPATH
    export PATH

安装brew

/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
参考官网 https://brew.sh/

安装node

  • brew install node
  • 注意node不要用root安装,如果已经安装,可以检查node是否root安装:
    • which node 找到node路径,
    • 再 ls -l 该路径检查安装用户

安装cnpm

安装appium

cnpm install -g appium

安装appium-doctor

  • cnpm install -g appium-doctor
  • 然后运行appium-doctor检查其它需要安装的

安装carthage

根据appium-doctor --ios提示,安装缺失的carthage
brew install carthage

解决找不到xcode version

启动appium,执行或开启Inspector时如果遇到下述错误

[XCUITest] Error: Could not get Xcode version. /Library/Developer/Info.plist does not exist on disk.

The following command will help:
sudo xcode-select --switch /Applications/Xcode.app

安装libimobiledevice

启动appium,打开Inspector,配置Capabilities,

1
2
3
4
5
6
7
{
"platformName": "iOS",
"deviceName": "iPhone",
"automationName": "XCUITest",
"bundleId": "com.tracenote.sample-ios-iphone",
"udid": "xxxxx958f8xxxx99e1bexxxx46ee51ddbfe4xxxx"
}

Start Session,报错:

[XCUITest] The ‘idevice_id’ program is not installed. If you are running a real device test it is necessary. Install with ‘brew install libimobiledevice –HEAD’

根据提示安装。
备注:网上一些中文教程安装很多东西,有些可能是新版本appium弃用、过期的,这样根据错误提示,只安装必需的,比较简洁。

安装ios-deploy

同样根据错误提示,安装:
npm install -g ios-deploy

Apple ID

[XCUITest] Error: Unable to launch WebDriverAgent because of xcodebuild failure: “xcodebuild failed with code 65”.

翻appium日志,它试图在 /usr/local/lib/node_modules/appium/node_modules/_appium-xcuitest-driver@2.58.1@appium-xcuitest-driver/WebDriverAgent 这样的目录下执行命令
xcodebuild build-for-testing test-without-building -project /usr/local/lib/node_modules/appium/node_modules/_appium-xcuitest-driver@2.58.1@appium-xcuitest-driver/WebDriverAgent/WebDriverAgent.xcodeproj -scheme WebDriverAgentRunner -destination id= xxxxx958f8xxxx99e1bexxxx46ee51ddbfe4xxxx

打开terminal,cd到此目录,open .打开此目录,双击WebDriverAgent.xcodeproj,用xcode打开此工程:
1,xcode - preferences - Account, 确保有Apple ID,没有可以点+来输入现有apple id,也可以根据提示创建一个新ID。这里并不需要“必须是开发者账户”,普通账户也可以的。
2,xcode工程,选取Targets下拉菜单(注意下面几个Target都需要这样改),Signing-Team,选中Autommaticallly manage signing,选择刚才添加Apple ID的team。如遇错误Failed to create provisioning profile....Change your bundle identifier to a unique string to try again.,打开Build Setting选项卡,修改Product Bundle Identifier值,随便改改,xcode不报错就行,然后再打开General,即可看到证书状态恢复正常。同时注意上方 Identity - Bundle Identifier中的值和刚才在Buid Setting - Product Bundle Identifier值一致。
3,然后重新在terminal目标目录下执行appium日志中试图执行的命令。注意这里在本机terminal中执行,不要远端执行(可能会弹出授权访问keychains的窗口,需要本机管理员密码。未尝试过在远端用sudo执行,未知)。
4,可能仍遇到错误

2017-11-14 16:40:50.018 xcodebuild[16369:120827] Error Domain=com.apple.platform.iphoneos Code=-12 “Unable to launch com.apple.test.WebDriverAgentRunner-Runner” UserInfo={NSLocalizedDescription=Unable to launch com.apple.test.WebDriverAgentRunner-Runner, NSUnderlyingError=0x7f9b7c3eafd0 {Error Domain=DTXMessage Code=1 “(null)” UserInfo={DTXExceptionKey=The operation couldn’t be completed. Unable to launch com.apple.test.WebDriverAgentRunner-Runner because it has an invalid code signature, inadequate entitlements or its profile has not been explicitly trusted by the user. : Failed to launch process with bundle identifier ‘com.apple.test.WebDriverAgentRunner-Runner’}}}

打开手机-设置-通用-描述文件与设备管理-开发者应用-信任证书。

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

上述命令运行通过后,打开Inspector,应该就可以正常调起目标app了。(如果是命令行启动的appium,可以打开appium桌面程序后,不启动该程序自带的server,通过菜单 - New Session Window打开Inspector,选Custom Server,填入正在运行server的ip和端口即可)

至此,appium的环境就基本好了。

安装maven

这里maven是java环境相关。
官网下载压缩包解压,然后在.bashrc中配置路径即可。

下载 eclipse

  • eclipse安装testng插件
  • 注意自己代码pom.xml中有testng时,注意和eclipse插件版本保持一致,否则运行出错。