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

https://testerhome.com/topics/8533

https://testerhome.com/topics/12512

posted @ 2020-03-13 16:37  #甜甜8023  阅读(2933)  评论(0编辑  收藏  举报