mac 下 配置appium +ios真机环境

mac系统:10.11.6

xcode:7 

appium:1.5.3

iphone: 6 p

1.搭建 appium

安卓的环境:

1.jdk

2.sdk

3.appium

4.配置环境变量

mac下的环境变量是在 登录用户的 根目录下 cd ~/ 下的 .bash_profile中 没有自己 创建一个

8 # Setting PATH for Python 3.5
  9 # The original version is saved in .bash_profile.pysave
 10 PATH="/Library/Frameworks/Python.framework/Versions/3.5/bin:${PATH}"  #配置python3.5
 11 export PATH
 12 export PATH=${PATH}:/Users/hanzhao/Desktop/sdk/adt-bundle-mac-x86_64-20131030/sdk/platform-tools:/Users/hanzhao/Desktop/sdk/adt-bundle-mac-x86_64-20131030/sdk/tools:/Users/hanzhao/Desktop/sdk/adt-bundle-mac-x86_64-20131030/sdk/build-t    ools/25.0.0  #配置sdk
 13 export ANDROID_HOME=/Users/hanzhao/Desktop/sdk/adt-bundle-mac-x86_64-20131030/sdk  #配饰安卓 
 14 export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_111.jdk/Contents/Home  #配置java
~                                                                                     

 安装 python3.5 ,(mac下 自带python2):

mac 下的软件包管理工具 为Homebrew,所以下载 Homebrew

/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"(因为网址会经常变化,多关注官网 http://brew.sh)
安装完以后 ,输入 brew -v 查看版本:

   Homebrew 1.1.0

   Homebrew/homebrew-core (git revision 1a39; last commit 2016-11-07

说明成功

用它来安装pytho3.5

直接输入 brew install python3.5

安装成功后 输入 python3

能进入python编辑页面则是 安装成功

5.安装pip 进到 python3.5 的目录 下载 pip brew install pip 

下载完成后 就能用pip 下载 python 的 一些扩展包  比如 appium-python-client

我python3.5的 pip路径为 :

/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages(可以用which找,pip xxxx在这里执行)

以上是安卓的 一些环境 

以下是ios需要的 :

安装 xcode7 : 这里面有一个坑  ,就是 开始我安装的 xcode8 ,因为当我ios 启动真机的时候:报:Could not find Automation.tracetemplate in any of the following locations /Applications/Xcode.app/Contents/Applications/Instruments.app/Contents/PlugIns/AutomationInstrument.xrplugin/Contents/Resources/Automation.tracetemplate….

需要先使用Xcode的automation,去保存一份模板。但是Xcode8将automation从Xcode->Open Developer Tool->Instrument中去掉了。所以要从Xcode8切换回Xcode7(可以在安装一个Xcode7两者共存)。 

这个 真是 折腾了 我好久!!

安装 node

brew install node 

安装 appium

1.可以用终端安装

2.使用gui安装  

我因为npm 的下载速度太慢 所以 我采取的是第二种方式 ,直接从官网上直接下载 1.5.3 mac版本 直接安装

安装好后 启动appium

点击 红色按钮检查 环境 安装的 是否正常


ok  环境基本搭建好了 开始弄ios真机 ,后面 很多坑:

先说下 appium 要想用真机调试的 前置条件:

1.在真机上跑APPIUM的前提是,手机应该注册成开发者手机,这样就可以在Settings的页面看到 Developer(开发者)这个选项了。

 developer选项里的 Enable UI Automation开启,不然会报错:

selenium.common.exceptions.WebDriverException: Message: u'A new session could not be created. (Original error: Instruments crashed on startup)' 

(这个错误 可能还和 app签名有关 ,如果换手机:只要把用这个手机的签名重新编译一个APP,就可以了。)

2.开发给你装的 必须是 debug包 

3.需要有BundleID 找开发要

4.UDID :手机的id 可以用itools等软件看,当然 xcode也是可以看的

5.mac能监听到手机的app包  :

ideviceinstaller -l 

显示如下:

 很可能 你的 ideviceinstaller版本太低 或者 没有 ,会报错找不到 这个 ideviceinstaller

ok:

删除老的并下载最新的 :

brew uninstall ideviceinstaller

brew install ideviceinstaller(网上说 有这样的 brew install --HEAD ideviceinstaller :我没有成功)

就OK了

然后这时候 还可能监听不到:ideviceinstaller Could not connect to lockdownd. Exiting.

appium 会报的错误为: 安装app失败 大概就是: install xxx app faile

这时候 运行:sudo chmod 777 /var/db/lockdown/

6.找到 xocde的版本号 ,有时候会报找不到 xcode的版本号:运行:sudo xcode-select -s /Applications/Xcode.app/Contents/Developer/

7.跑真机,测试机不能锁屏,不然会报错

ok这些 都是我遇到的 问题 ,这些都解决后 ,就能跑起来了

python启动脚本如下:
 
from appium import webdriver
 
desired_caps['platformName']='ios'
desired_caps['platformVersion'] = '9.3.5'
desired_caps['bundleId'] = 'com.wuba.zhuanzhuan'
desired_caps['app'] = os.path.abspath('/Users/a58/Library/Developer/Xcode/DerivedData/Build/Products/Debug-iphoneos/zhuanzhuan.app')
 
|关键字|描述|实例|
|----|-----------|-------|
|`automationName`|你想使用的自动化测试引擎|`Appium` (默认) 或 `Selendroid`|
|`platformName`|你要测试的手机操作系统|`iOS`, `Android`, 或 `FirefoxOS`|
|`platformVersion`|手机操作系统版本|例如: `7.1`, `4.4`|
|`deviceName`|使用的手机类型或模拟器类型|`iPhone Simulator`, `iPad Simulator`, `iPhone Retina 4-inch`, `Android Emulator`, `Galaxy S4`, 等。在 iOS 上,这个关键字的值必须是使用 `instruments -s devices` 得到的可使用的设备名称之一。在 Android 上,这个关键字目前不起作用。|
|`app`|`.ipa` or `.apk`文件所在的本地绝对路径或者远程路径,也可以是一个包括两者之一的`.zip`。 Appium会先尝试安装路径对应的应用在适当的真机或模拟器上。针对Android系统,如果你指定`app-package`和`app-activity`(具体见下面)的话,那么就可以不指定`app`。 **会与 `browserName` 冲突** |比如`/abs/path/to/my.apk`或`http://myapp.com/app.ipa`|
|`browserName`|需要进行自动化测试的手机 web 浏览器名称。如果是对应用进行自动化测试,这个关键字的值应为空。|iOS 系统上可以用 'Safari' ,Android 系统上可以用 'Chrome', 'Chromium', 或 'Browser'。|
|`newCommandTimeout`|设置命令超时时间,单位:秒。达到超时时间仍未接收到新的命令时 Appium 会假设客户端退出然后自动结束会话。|比如 `60`
|`autoLaunch`|Appium是否需要自动安装和启动应用。默认值`true`|`true`, `false`|
|`language`|  (Sim/Emu-only) 设定模拟器 ( simulator / emulator ) 的语言。|如: `fr`|
|`locale`|  (Sim/Emu-only) 设定模拟器 ( simulator / emulator ) 的区域设置。|如: `fr_CA`|
|`udid`| 连接的物理设备的唯一设备标识|如: `1ae203187fc012g`|
|`orientation`| (Sim/Emu-only) 在一个设定的方向模式中开始测试|`LANDSCAPE` (横向)  或 `PORTRAIT` (纵向) |
|`autoWebview`| 直接转换到 WebView 上下文。 默认值 `false`、|`true`, `false`|
|`noReset`|不要在会话前重置应用状态。默认值`false`。|`true`, `false`|
|`fullReset`|(iOS) 删除整个模拟器目录。(Android) 通过卸载——而不是清空数据——来重置应用状态。在 Android 上,这也会在会话结束后自动清除被测应用。默认值 `false`|`true`, `false`|
 
wd = webdriver.Remote('http://127.0.0.1:4723/wd/hub', desired_caps)
 
各项与Android那里的介绍一致。
但是app那里,如果使用的是模拟器,只能用.app文件而不能用.ipa文件
原文地址:https://www.cnblogs.com/hanzhao1987/p/6044137.html