首先 Appium 支持 iOS 真机
条件必须满足:
苹发者账号发者证书
苹设备确保设备已经配置发机器配置
签名 .ipa 文件或者源代码
A Mac with Xcode and the Xcode Command Line Developer Tools xcodexcode command line 苹系统别问我windows 测试 iOS 应用
Provisioning Profile
再强调真机需要效发发证书发 Provisioning Profile
应用需要签名Appium 参试使用 Fruitstrap 安装应用
使用 xcode 安装真机便
拓展: Provisioning Profile
运行
要指定真机运行两种式:
appium 启候指定 udid app bundle appium -U --app
或者脚本指定两 desired capability
desired_capabilities={
'app':'com.xxx.iphone',
'udid':'70643e56c1b0f3c3132c44c87e433a48b5531ee6',
'platformName': 'iOS',
'deviceName': 'iPhone'
})
注意: 设备未安装 app 指定 ipa 址安装
则指定 bundle ID
所于第种情况代码写:
self.driver = webdriver.Remote(
command_executor='',
desired_capabilities={
'deviceName':'',
'platformName': 'iOS',
})
于第二种情况代码写:
app = "io.appium.TestApp"
self.driver = webdriver.Remote(
command_executor='',
desired_capabilities={
'deviceName':'',
'platformName': 'iOS',
'app': app,
'udid': 'cc6bcd6a94aeb8490924dd05c5b318bfbfafb3bb'
})
调试思路
确保 UDID 确真机 UDID(20+ 字符串)
确保模拟器已经能运行误
直接使用 Instruments 看看否能真机运行些情况连 xcode instruments 都能真机调试更别谈 appium
确保运行 appium 用例前 instruments 没启看看没 instruments 进程
目前 1.2.2 坑
目前 appium 1.2.2 运行 iOS 真机测试能遇错误:
info: [debug] Starting iOS device log capture via deviceconsole
error: iOS log capture failed: spawn ENOENT
info: [debug] Cleaning up appium session
error: Failed to start an Appium session, err was: Error: spawn ENOENT
info: [debug] Error: spawn ENOENT
at errnoException (child_process.js:1000:11)
at Process.ChildProcess._handle.onexit (child_process.js:791:34)
info: [debug] Responding to client with error: {"status":33,"value":{"message":"A new session could not be created. (Original error: spawn ENOENT)","code":"ENOENT","errno":"ENOENT","syscall":"spawn","origValue":"spawn ENOENT"},"sessionId":null}
info: <-- POST /wd/hub/session 500 1780.745 ms - 197
/usr/local/lib/node_modules/appium/build/deviceconsole/ 面缺失 deviceconsole已经 bug 追踪
解决:
该目录底 cd /usr/local/lib/node_modules/appium/build/deviceconsole/
打deviceconsole project open deviceconsole.xcodeproj
重新 build build deviceconsole复制 /usr/local/lib/node_modules/appium/build/deviceconsole/
重新运行 Appium