我们在 Windows 上使用 xcuitrunner 启动 iOS 设备上的 Facebook WebDriverAgent。
使用 xcuitrunner 时出现超时错误:
Machine ID: XXXXXX
Using a license for [X] which expires on 1/1/2010 5:30:00 AM
The Xcode UI Test will be resigned:
- Developer Certificate: [X]
- Provisioning Profile: [X]
Starting the Xcode UI Test
Unhandled Exception: System.TimeoutException: The test plan did not start on the mobile device within the alloted timeframe of 120 s.
at XcuitRunner.WebDriverAgentInstaller.LaunchXcuiTest(String udid, String testBundleIdentifier, String moduleName, AppleVersion xctestVersion, Version iosVersion, CancellationToken cancellationToken)
at XcuitRunner.WebDriverAgentInstaller.LaunchXcuiTest(String udid, String testBundlePath, CodeSignSettings settings, Dictionary`2 customEnvironment, CancellationToken cancellationToken)
at XcuitRunner.XcuitRunner.Run(ProgramOptions options)
at XcuitRunner.Program.<>c__DisplayClass5_1.<Main>b__2()
at Microsoft.Extensions.CommandLineUtils.CommandLineApplication.Execute(String[] args)
at XcuitRunner.Program.Main(String[] args)
我们在多台机器上都遇到了这个问题。我们也重启了设备并进行了检查,但问题仍然存在。
我们怎样才能解决这个问题?
答案1
从您发送给我的日志来看,这似乎是一个代码签名问题。您的开发者资料中的一个证书似乎已被撤销(可能是最近)。这可以解释为什么 WebDriverAgent 无法在您的 iOS 设备上启动,以及为什么您会遇到超时(xcuitrunner 将尝试连接到从未启动的 WebDriverAgent):
May 16 14:16:13 iPhone amfid[390] <Notice>: /private/var/containers/Bundle/Application/6FEACA16-ED28-4D85-96BB-595BB7F32F0B/WebDriverAgentRunner-Runner.app/WebDriverAgentRunner-Runner not valid: 0xe8008018: The identity used to sign the executable is no longer valid.
May 16 14:16:13 iPhone kernel(AppleMobileFileIntegrity)[0] <Notice>: AMFI: code signature validation failed.
修复这个问题:
- 从您的开发者资料中删除所有已撤销的证书。理想情况下,只在开发者资料中保留您认为有效的证书。
- 去除WebDriverAgent设备上的应用程序
- 删除
.ipa
xcuitrunner 文件夹中的所有文件 - 重新启动 xcuitrunner
如果仍然失败,请idevicesyslog
再次捕获输出并将其发送给我。
答案2
您能获取更多信息并将其发送给我吗?您可以通过 [first name].[last name]@quamotion.mobi 联系我。
- 打开命令提示符,然后导航到 xcuitrunner 所在的文件夹
- 类型
ideviceinfo.exe > deviceinfo.txt
- 键入
idevicesyslog.exe > syslog.txt
该应用程序将保持运行,直到您通过键入 CTRL+C 将其停止。请不要停止它。 - 打开第二个命令提示符,然后导航到 xcuitrunner 所在的文件夹
- 启动 xcuitrunner,然后等待错误发生
- 在第一个命令提示符窗口中,输入 CTRL+C 停止 idevicesyslog
deviceinfo.txt
发送给我一份syslog.txt