首先你启动 appium 的时候 指定设备的 UUID 指定 APP 的 Bundle ID 比如 appium -U 45f082689dbaebb0ffa3620b3ae22ad9faff9a30 --app io.appium 然后再去运行脚本。
比如源码的案例下面的 examples/python/simple_real_device.py
首先 Appium 支持 iOS 真机
以下条件必须满足:
苹果开发者账号和开发者证书
苹果设备,确保这个设备已经被配置为开发机器。怎么配置?
签名过的 .ipa 文件或者源代码
A Mac with Xcode and the Xcode Command Line Developer Tools,有 xcode和xcode command line 的 苹果系统。别来问我,windows 怎么测试 iOS 应用。
Provisioning Profile
再次强调真机需要有效的开发分发证书和开发的 Provisioning Profile。
你的应用需要签名。Appium 会参试使用 Fruitstrap 安装应用。
但是使用 xcode 安装到真机会方便很多。
拓展: 什么是 Provisioning Profile?
运行
要指定真机运行有两种方式:
appium 启动的时候,指定 udid 和 app bundle appium -U
或者在脚本里指定两个 desired capability
desired_capabilities={
'app':'com.xxx.iphone',
'udid':'70643e56c1b0f3c3132c44c87e433a48b5531ee6',
'platformName': 'iOS',
'deviceName': 'iPhone'
})
注意: 如果设备中未安装 app 可以指定 ipa 地址,如果安装了,
则指定 bundle ID。
所以对于第一种情况,代码可以这样写:
self.driver = webdriver.Remote(
command_executor='http://127.0.0.1:4723/wd/hub',
desired_capabilities={
'deviceName':'',
'platformName': 'iOS',
})
对于第二种情况,代码可以这样写:
app = "io.appium.TestApp"
self.driver = webdriver.Remote(
command_executor='http://127.0.0.1:4723/wd/hub',
desired_capabilities={
'deviceName':'',
'platformName': 'iOS',
'app': app,
'udid': 'cc6bcd6a94aeb8490924dd05c5b318bfbfafb3bb'
})
调试的思路
确保 UDID 的正确,是真机的 UDID。(20+ 字符串)
确保在模拟器上已经能运行无误了。
直接使用 Instruments 看看是否能在真机上运行。有些情况连 xcode 的 instruments 都不能在真机上调试,那更别谈 appium 了
确保运行 appium 用例前, instruments 没有启动过。看看有没有 instruments 的进程。