Appium macOS 下的 Appium 安装与配置 Appium Installation & Setup With macOS

fdeferf · 2017年04月21日 · 最后由 P_Oliver 回复于 2019年08月09日 · 6731 次阅读

macOS 下的 Appium 安装与配置 Appium Installation & Setup With macOS

iOS

系统要求及说明:

  • macOS 10.11 或更高
  • brew需要最新版本的 XcodeXcode Command Line

介绍

iOS9.3 及以下使用 Automation 作为底层技术,在 iOS9.3 出现了 XCUITest,并且在 iOS10 时抛弃了 Automation ,所以 Appium 在 iOS9.3 及以下和 iOS10 的配置方法不同。

安装 Appium

如果已安装过部分依赖,可直接跳过

安装 Homebrew

强烈推荐所有 macOS 上的软件使用 Homebrew 进行安装,使用 brew 安装过的软件,不再需要 sudo 命令。

打开终端,运行:

/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

brew 的使用非常简单,安装一个软件使用

brew install #<package name>

如果 brew 提示 Xcode 版本过低,需要安装新版本的 Xcode(安装时保存两个版本即可)

下载地址:https://developer.apple.com/download/more/

安装 Nodejs

brew install node

检查是否安装成功

node -v
# v6.9.1
npm -v
# 3.10.8
安装 cnpm

由于 npm 源在国外,我们使用 npm 安装库时会比较慢,可以使用 taobao 的镜像源

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

检查安装是否成功

cnpm -v
# 4.4.0

以后均使用cnpm 命令代替npm

安装 appium

使用 Node.js

appium 本质上就是一个 Nodejs 应用,我们可以使用 npm 对其进行安装,安装完毕后就可以使用命令行启动

cnpm install -g appium

可以使用 appium-doctor 来确认安装环境是否完成

cnpm install -g appium-doctor
appium-doctor
下载 App

使用软件比较简单,拥有图形化界面,并且有 Inspector 工具,帮助检测界面元素

下载地址:https://github.com/appium/appium-desktop/releases

设置 Appium

安装 Carthage

Carthage 是一个管理 iOS 开发库依赖的包

brew install carthage

安装语言依赖

使用到哪个语言安装哪个

python

安装 Python3(使用 Python2 跳过)
brew install python3

检测安装成功

python3 -V
# Python 3.6.0
pip3 -V
# pip 9.0.1 from /usr/local/lib/python3.6/site-packages (python 3.6)

出现相应代码即成功

macOS 自带有 Python2 版本,默认情况下输入python调用的就是系统的 python2 和pip (建议使用虚拟环境)

此外,如果系统版本之前安装过 python3 导致安装后输入 python3 没有找到命令,可以尝试brew link --overwrite python3重新链接

使用 pip 安装
pip3 install Appium-Python-Client
# python3 -> pip3
# python -> pip

详细信息:https://github.com/appium/python-client

Java

安装 JDK

brew tap caskroom/versions
brew cask install java8

使用 Maven 进行依赖

<dependency>
  <groupId>io.appium</groupId>
  <artifactId>java-client</artifactId>
  <version>5.0.0-BETA7</version>
  <scope>test</scope>
</dependency>

详细信息:https://github.com/appium/java-client

安装相关依赖

包含了记录日志的idevicesyslog和端口转发的iProxyusbmuxd

brew install libimobiledevice --HEAD   #和iOS手机通讯使用
brew install ideviceinstaller   # 安装app使用

在 iOS10 需要使用 ios-deploy

cnpm install -g ios-deploy

对真机需要xcpretty

gem install xcpretty

gem 安装速度慢可以更换镜像源

gem sources --add https://gems.ruby-china.org/ --remove https://rubygems.org/

第一次运行配置

不配置会出现xcodebuild exited with code '65' and signal 'null'错误

开发者账号:

AppiumDesktop 中加入 xcodeOrgId 和 xcodeSigningId 字段

TeamID 在 https://developer.apple.com/account/ 里左侧的 Member ship 中找到

需要 xcodeOrgIdxcodeSigningId 写在 desired capabilities 中

{
      "xcodeOrgId": "<Team ID>",
      "xcodeSigningId": "iPhone Developer"
 }

Team ID 在 https://github.com/developer.apple.com/account 中的 Membership

免费 AppleID 帐号
  1. 在 appium 的出错日志中找到 WebDriverAgent 的位置,打开进行签名
[XCUITest] Using WDA path: '/usr/local/lib/node_modules/appium/node_modules/.2.23.1@appium-xcuitest-driver/WebDriverAgent'
  1. 更改 WebDriverAgentBundleID ,原来是com.facebook.WebDriverAgentLib,我建议把facebook改为你的名字或公司的名字,这里还有个坑,改完这个之后发现还是提示有错误,最后在Build Settings里的Product Bundle Identifier里再修改一下。

img

  1. 点击上面菜单栏的 Product -> Test 运行
    第一次运行会提示没有权限,打开真机上的设置 App,通用 -> 描述文件与设备管理,找到你的邮箱,选择信任,再继续执行 test,成功启动后就说明可以了,执行完毕后点击停止。

  2. 没有了,打开 appium 测试吧

查看界面元素

  • 使用 WebDriverAgent
从 https://github.com/facebook/WebDriverAgent 克隆, 执行 ./Scripts/bootstrap.sh 命令, 然后打开项目进行签名, 
执行方式
- 接着点击上面菜单栏的Product --> test
- xcodebuild -project WebDriverAgent.xcodeproj -scheme WebDriverAgentRunner -destination id='udid' test
# udid 可以使用命令 idevice_id -l 获取
  • 使用 AppiumDesktop

  • ​app-inspector

# macaca-cli
npm install macaca-cli -g
# macaca doctor
macaca doctor
# app-inspector
npm install app-inspector -g
# 使用
app-inspector -u 'udid'

253 错误

如果你运行官方的 TestApp 示例,可能会爆出 253 错误,这时需要对测试 App 重新 build(需要源代码)

xcodebuild 命令

project

xcodebuild [-project projectname] [-target targetname ...] [-configuration configurationname]
            [-sdk [sdkfullpath | sdkname]] [buildaction ...] [setting=value ...]
            [-userdefault=value ...]

workspace

xcodebuild -workspace workspacename -scheme schemename [-destination destinationspecifier]
            [-destination-timeout value] [-configuration configurationname]
            [-sdk [sdkfullpath | sdkname]] [buildaction ...] [setting=value ...]
            [-userdefault=value ...]

示例

# xcodebuild -project RobotCalibration.xcodeproj -target RobotCalibration -sdk iphoneos -configuration development

DesiredCapabilities 配置信息

  • 确定 platformVersion
  • 确定 bundleId
  • 一台设备 udid 可以设置为 auto
  • 不提供 app 属性也可以调起 App,但需要设置 bundleId
  • 测试 iOS 9.3 以下时,需要设置 automationNameAutomation ,其它为 XCUITest

常用命令

切换 Xcode 版本

sudo xcode-select -s #path /Applications/Xcode.app/

查看设备 udid

idevice_id -l
# 或者使用 ideviceinfo 可以在返回的数据中找到 udid

Automation(iOS 10 以下)

推荐使用:

Xcode7.3.1

注意:

iOS8 中需要确定设置中的开发者选项里的 UIAutomation 为打开状态

有开发者帐号 — > 打开 Xcode — > 对设备注册
免费帐号 ─> 打开项目 — > 修改 bundleID —> 登录帐号进行签名

测试前查看设定的 App 目录是否正确

接着就可以打开 Appium,和测试用例了

如果不牵扯自动安装和卸载 App,可以先手动安装 App 到目标设备,再进行测试

前提需要 ideviceinstaller

ideviceinstaller -u <UDID of device> -i <path of .app/.ipa>
Instruments exited with code: 253

[Instruments] Error launching instruments: Instruments crashed on startup

可能是 App 路径不正确

授权 iOS 模拟器

需要测试模拟器进行此项,使用 npm 安装

cnpm install -g authorize-ios

安装完毕后运行

sudo authorize-ios

注意:需要在安装完新的 Xcode 后再次执行

通过 Jenkins 运行 iOS 测试(未测试)

确认之前authorize-ios运行成功

下载 jenkins

wget https://jenkins.ci.cloudbees.com/jnlpJars/jenkins-cli.jar

接下来定义一个 Jenkins 的 LaunchAgent 来自动登录,请确保其不包含SessionCreateUserkey 防止测试运行

java -jar jenkins-cli.jar \
 -s https://team-appium.ci.cloudbees.com \
 -i ~/.ssh/id_rsa \
 on-premise-executor \
 -fsroot ~/jenkins \
 -labels osx \
 -name mac_appium

最后设置并启动

sudo nano /Library/LaunchAgents/com.jenkins.ci.plist
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>Label</key>
    <string>com.jenkins.ci</string>
    <key>ProgramArguments</key>
    <array>
        <string>java</string>
        <string>-Djava.awt.headless=true</string>
        <string>-jar</string>
        <string>/Users/appium/jenkins/jenkins-cli.jar</string>
        <string>-s</string>
        <string>https://instructure.ci.cloudbees.com</string>
        <string>on-premise-executor</string>
        <string>-fsroot</string>
        <string>/Users/appium/jenkins</string>
        <string>-executors</string>
        <string>1</string>
        <string>-labels</string>
        <string>mac</string>
        <string>-name</string>
        <string>mac_appium</string>
        <string>-persistent</string>
    </array>
    <key>KeepAlive</key>
    <true/>
    <key>StandardOutPath</key>
    <string>/Users/appium/jenkins/stdout.log</string>
    <key>StandardErrorPath</key>
    <string>/Users/appium/jenkins/error.log</string>
</dict>
</plist>

Finally set the owner, permissions, and then start the agent.

sudo chown root:wheel /Library/LaunchAgents/com.jenkins.ci.plist
sudo chmod 644 /Library/LaunchAgents/com.jenkins.ci.plist

launchctl load /Library/LaunchAgents/com.jenkins.ci.plist
launchctl start com.jenkins.ci

清理文件(可选)

$HOME/Library/Logs/CoreSimulator/
/Library/Caches/com.apple.dt.instruments/
$HOME/Library/Developer/Xcode/DerivedData/

以上目录下的所有文件

Android

安装 maven

brew install maven

额外的设置

  1. 下载 JDK

  2. 通过 Android Studio 下载 Android SDK,并设置目录

macOS 设置 JavaHome 和 Android SDK 目录,将下列代码放置到用户目录下的 .bashrc.zshrc

# 使用Android Studio安装后的路径
# android sdk
export ANDROID_HOME=~/Library/Android/sdk
export PATH="$HOME/.yarn/bin:$PATH"
# java_home
export JAVA_HOME=$(/usr/libexec/java_home)
export PATH=$JAVA_HOME/bin:$PATH
export CLASS_PATH=$JAVA_HOME/lib

# adb等 
export PATH=${PATH}:$ANDROID_HOME/tools:$ANDROID_HOME/platform-tools
export PATH=${PATH}:$ANDROID_HOME/tools/bin
  1. 最后,可以使用 appium-doctor 来检查配置环境
appium-doctor
  1. capabilities写清楚
  • 确定 platformVersion
  • 确定 appPackage
  • 确定 appActivity

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
共收到 13 条回复 时间 点赞

Appium macOS 下的 Appium 安装与配置,看了基本可以搭建起环境了。

不错,挺详细的

都是踩过的坑, 申精哈

fdeferf appium 命令行安装问题,求助! 中提及了此贴 05月10日 19:33
fdeferf andriod --appium Mac 报错 ,求救 中提及了此贴 05月15日 15:07

很有帮助


大神可以帮我看看我这个是什么原因吗?用 Xcode 单独编译 WDA 都没有问题,但是启动 session 就会报错!

杨雅洁 回复

看提示说是 iproxy , 可能是端口的问题, 是不是之前的 WDA 没关? 检查一下是不是有其他正在开启的类似 WDA 的程序, 还有尽量把错误贴全, 我看上面也有 at...这种错误信息

于归 Android 自动化实践:Appium+Python 入门 中提及了此贴 09月09日 13:01

大神有没有 企鹅 求教

可以通过 mamian521#gmail.com 联系,把 # 替换一下 G

fdeferf 回复

谢谢了 我已经试了 淘宝的镜像 和 国外的镜像 各种方式都试了都没有成功,我直接用 appium 的 GUI 的客户端
blog.csdn.net/qq_19986309/article/details/79849579 这个是我的心路历程 blog 前面加 爱趣 H 提 T 提批 P 爱死 S: 双斜杠
大神有企鹅交流群也行啊 邮件交流太慢了

请问下:

我重新 build 之后还是未能解决 请问有人知道原因吗

xiaoqi_11 回复

你是在用 Demo 提供的 App 吗, 可能那个 Demo 软件本身有问题. iOS 安装 app 本身就要解决许多问题, 如果是免费证书就需要手动信任, 建议先手动安装尝试

感谢大哥分享~~

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册