條件必須滿足:
蘋發者賬號發者證書
蘋設備確保設備已經配置發機器配置
簽名 .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