记录一下尝试 Mac 下 appium 的踩坑之旅

安装

Apple 开发环境:

Appium 环境 (python)(待补充)

brew
node
npm install appium -g 
npm install appium-doctor -g
pip install Appium-Python-Client
官方下载http://appium.io

iOS 篇

以下所用到的 appium 版本均为:1.4.13

iOS-模拟器篇

(模拟器上运行 Demo 暂时没有碰到什么大的问题)
模拟器运行 appium 需要 build 一个可以在模拟器运行的包 XXX.app,在 Xcode 项目工程目录里可以看到
运行 appium server

appium&

运行的 python 代码如下:

#!/usr/bin/env python
# -*- coding:utf-8 -*-
import sys
reload(sys)
sys.setdefaultencoding('utf-8')

import os
import unittest
from appium import webdriver
from time import sleep

# Returns abs path relative to this file and not cwd
PATH = lambda p: os.path.abspath(
    os.path.join(os.path.dirname(__file__), p)
)

#类继承unittest.TestCase 类,从TestCase类继承是告诉unittest模块的方式,这是一个测试案例。
class ContactsAndroidTests(unittest.TestCase):

    def setUp(self):
        desired_caps = {}
        desired_caps['platformName'] = 'iOS' 
        desired_caps['platformVersion'] = '9.3' # 对应需要启动的模拟器版本,当然你必须先安装了这个版本的模拟器才可以运行
        desired_caps['deviceName'] = 'iPhone 6 Plus' #Xcode中打开设备(快捷键:Shift + Command + 2)可以查看对应设备的name,复制过来就可以了
        desired_caps['app'] = PATH(
            '/Users/jimmy_zhou/Library/Developer/Xcode/DerivedData/Recipes-dazjfqhcqpgvvwgcndxbuupitdzk/Build/Products/Debug-iphonesimulator/Recipes.app'
        ) # 被测应用的绝对路径
        desired_caps['bundleId'] = 'com.example.apple-samplecode.Recipes'  #被测应用的包名

        print '连接中...'
        self.driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub', desired_caps)
        print '连接完成'

    def tearDown(self):
        self.driver.close_app()
        self.driver.quit()

    def test_add_contacts(self):
        self.driver.find_element_by_name('Edit').click()
        sleep(3)
        print("Edit clicked")

if __name__ == '__main__':
    suite = unittest.TestLoader().loadTestsFromTestCase(ContactsAndroidTests)
    unittest.TextTestRunner(verbosity=2).run(suite)

iOS-真机篇

真机是通过 instruments 运行的,所以需要打开手机上的【开发者 - Enable UI Automation】,并且需要安装 debug 包才可以

问题

info: [debug] Couldn't find ideviceinstaller, trying built-in at /Applications/Appium.app/Contents/Resources/node_modules/appium/build/libimobiledevice-macosx/ideviceinstaller
error: Could not initialize ideviceinstaller; make sure it is installed and works on your system

既然没有 ideviceinstaller,就需要安装一个了,然后搜了一下 运行以下命令:

brew install --HEAD ideviceinstaller
jimmy-zhoudeMacBook-Pro:~ jimmy_zhou$ ideviceinstaller 
dyld: Library not loaded: /usr/local/lib/libusbmuxd.4.dylib
  Referenced from: /usr/local/opt/libimobiledevice/lib/libimobiledevice.6.dylib
  Reason: image not found
Trace/BPT trap: 5

stackoverfolw 上的答案:http://stackoverflow.com/questions/29232314/appium-ios-real-device-issue-with-ideviceinstaller
依赖的一个库文件没找到,是不是安装的时候没注意,没装好呢,所以就 uninstall 了一下,重新安装一次试试看
然而 uninstall 也出错了,提示/usr/local/lib 目录没有权限,所以给它加了权限以后重新安装了一下 ideviceinstaller 竟然莫名其妙的好了


↙↙↙阅读原文可查看相关链接,并与作者交流