mac 下 配置appium +ios真机环境

时间:2023-03-09 03:56:51
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中 没有自己 创建一个

 # Setting PATH for Python 3.5
# The original version is saved in .bash_profile.pysave
PATH="/Library/Frameworks/Python.framework/Versions/3.5/bin:${PATH}" #配置python3.5
export PATH
export PATH=${PATH}:/Users/hanzhao/Desktop/sdk/adt-bundle-mac-x86_64-/sdk/platform-tools:/Users/hanzhao/Desktop/sdk/adt-bundle-mac-x86_64-/sdk/tools:/Users/hanzhao/Desktop/sdk/adt-bundle-mac-x86_64-/sdk/build-t ools/25.0.0 #配置sdk
export ANDROID_HOME=/Users/hanzhao/Desktop/sdk/adt-bundle-mac-x86_64-/sdk #配饰安卓
export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1..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

mac 下 配置appium +ios真机环境

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

mac 下 配置appium +ios真机环境

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

显示如下:

mac 下 配置appium +ios真机环境

很可能 你的 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文件