Appium 遇到 Unable to launch WebDriverAgent because of xcodebuild failure: xcodebuild failed with code 65 的解决方法
安装依赖:
Appium iOS真机测试依赖于中心第三方软件套件:libimobiledevice, 用homebrew很容易安装
brew install libimobiledevice
除了依赖libimobiledevice以外, Appium支持真机在iOS 9.3以上版本使用Xcode 8+ 还要依赖于ios-deploy,通过npm和homebrew很容易安装:
npm install -g ios-deploy
brew install ios-deploy
(对于hybrid或者web测试, 还需要遵循ios-webkit-debug-proxy设置指令)
XCUITest driver工作方式是在真机上安装一个名为WebDriverAgent-Runner的助手应用程序, 通过该应用程序,测试应用程序是自动化的。虽然这在理论上是简单的,但是开发和测试的代码签名和配置文件的环节可能会让人有点头疼。
基本(自动)配置:
使用自动配置策略最简单的方法是用Appium的XCUITest Support在IOS真机上获取启动和运行,有2种方式:
* 使用xcodeOrgId和xcodeSigningId这2个desired capabilities:
{
"xcodeOrgId": "<Team ID>",
"xcodeSigningId": "iPhone Developer"
}
* 在你的文件系统的某个地方创建一个.xcconfig文件并添加以下内容到文件中:
DEVELOPMENT_TEAM = <Team ID>
CODE_SIGN_IDENTITY = iPhone Developer
在这两种情况下,Team ID都是由Apple生成的一个独特的10个字符的字符串,它被分配给您的团队。
可以用你的开发者账号找到你的Team ID. 登录你的开发者账号developer.apple.com/account, 在侧栏中点击Membership. 你的Team ID会在团队名称下面的Membership Information部分显示.
也可以在keychain里面找到你的iphone开发者证书,team ID就列在"Organizational Unit"字段下。
注意:这些互斥策略;要么使用xcodeConfigFile,要么用xcodeOrgId和xcodeSigningId组合.
一旦配置成功,要开始测试只不过是在desired capability指定为一个真机的udid问题
如果这个不起作用,通常会在Appium server日志中显现出类似如下错误:
XCUITest xcodebuild exited with code '65' and signal 'null'.
这一般意味着必要的签名未设置正确,通过手工配置来做
基本(手工)配置
WebDriverAgent目录:
/usr/local/n/versions/node/10.4.0/lib/node_modules/appium/node_modules/appium-xcuitest-driver/WebDriverAgent
* 找到appium的安装盘:
$ which appium
/usr/local/n/versions/node/10.4.0/bin/appium 用n管理器安装的node指向
->/usr/local/n/versions/node/10.4.0/lib/node_modules/appium/build/lib/main.js
* 进入appium安装盘:/path/where/installed/bin/appium, 在以下路径下找到WebDriverAgent
/usr/local/n/versions/node/10.4.0/lib/node_modules/appium/node_modules/appium-xcuitest-driver/WebDriverAgent
我的appium安装盘地址:
/Applications/Appium.app/Contents/Resources/app/node_modules/appium-webdriveragent
* 打开terminal到上面的目录下, 执行以下命令来配置项目:
$ mkdir -p Resources/WebDriverAgent.bundle
$ ./Scripts/bootstrap.sh -d
用Xcode打开WebDriverAgent.xcodeproj
以下2个目标在"General"选项卡下都选"Automatically manage signing"并选择你的Development Team,应该会自动选择Signing Ceritificate.
如下图所示: WebDriverAgentLib、WebDriverAgentRunner
如果Signing Provisioning profile失败则需要先去Build Settings选项卡下面把bundle Id修改成xcode接受的bundle id
返回到WebDriverAgentRunner 目标下的"General" 选项卡, 应该可以看到创建了一个provisioning profile如下图:
执行成功后手机上会有一个webDriveragent
参考:
https://testerhome.com/topics/8074
https://blog.csdn.net/yinshuilan/article/details/80626314