Xamarin.UITest 2.2.4 第一次测试启动会话失败
Xamarin.UITest 2.2.4 start session failed on the first test
由于我的 macOS 让我更新到 XCode 9.3,我不得不将 Xamarin.UITest 从 2.2.2 升级到 2.2.4。
问题是,当我 运行 所有测试时,每次第一个测试都会失败并附加错误。我认为这不是测试问题,因为所有测试 运行 在具有 XCode 9.2 和 Xamarin.UITest 2.2.2 的 macOS 上正确。此外,如果我删除该测试,那么下一个将成为第一个的测试将失败并出现相同的错误。
有人能帮帮我吗?非常感谢您!
1) SetUp Error : UI.Tests.TestDashboardDetailsPage(iOS)
Xamarin.UITest.XDB.Exceptions.DeviceAgentException : DeviceAgent start session failed: An error occurred while sending the request
----> System.Net.Http.HttpRequestException : An error occurred while sending the request
----> System.Net.WebException : Error: ConnectFailure (Connection refused)
----> System.Net.Sockets.SocketException : Connection refused
at Xamarin.UITest.XDB.Services.iOSDeviceAgentService+<RequestAsync>c__async14`1[T].MoveNext () [0x0010e] in <1bd397951f434cd4913ddc08b7bc45af>:0
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw () [0x0000c] in <4fdc5ed61a074cafb49fa42deb20d521>:0
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess (System.Threading.Tasks.Task task) [0x0003e] in <4fdc5ed61a074cafb49fa42deb20d521>:0
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (System.Threading.Tasks.Task task) [0x00028] in <4fdc5ed61a074cafb49fa42deb20d521>:0
at System.Runtime.CompilerServices.TaskAwaiter.ValidateEnd (System.Threading.Tasks.Task task) [0x00008] in <4fdc5ed61a074cafb49fa42deb20d521>:0
at System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1+ConfiguredTaskAwaiter[TResult].GetResult () [0x00000] in <4fdc5ed61a074cafb49fa42deb20d521>:0
at Xamarin.UITest.XDB.Services.iOSDeviceAgentService+<StartAppAsync>c__asyncE.MoveNext () [0x000ba] in <1bd397951f434cd4913ddc08b7bc45af>:0
--- End of stack trace from previous location where exception was thrown ---
at Xamarin.UITest.iOS.iOSAppLauncher.LaunchAppLocal (Xamarin.UITest.Configuration.IiOSAppConfiguration appConfiguration, Xamarin.UITest.Shared.Http.HttpClient httpClient, System.Boolean clearAppData) [0x00216] in <1bd397951f434cd4913ddc08b7bc45af>:0
at Xamarin.UITest.iOS.iOSAppLauncher.LaunchApp (Xamarin.UITest.Configuration.IiOSAppConfiguration appConfiguration, Xamarin.UITest.Shared.Http.HttpClient httpClient, Xamarin.UITest.TestCloud.TestCloudiOSAppConfiguration testCloudAppConfiguration, Xamarin.UITest.Shared.Http.HttpClient testCloudWsClient, Xamarin.UITest.Shared.Http.HttpClient xtcServicesClient, System.Boolean testCloudUseDeviceAgent) [0x0007a] in <1bd397951f434cd4913ddc08b7bc45af>:0
at Xamarin.UITest.iOS.iOSApp..ctor (Xamarin.UITest.Configuration.IiOSAppConfiguration appConfiguration, Xamarin.UITest.Shared.Execution.IExecutor executor) [0x002de] in <1bd397951f434cd4913ddc08b7bc45af>:0
at Xamarin.UITest.iOS.iOSApp..ctor (Xamarin.UITest.Configuration.IiOSAppConfiguration appConfiguration) [0x00000] in <1bd397951f434cd4913ddc08b7bc45af>:0
at Xamarin.UITest.Configuration.iOSAppConfigurator.StartApp (Xamarin.UITest.Configuration.AppDataMode appDataMode) [0x00017] in <1bd397951f434cd4913ddc08b7bc45af>:0
at UI.Tests.AppInitializer.StartApp (Xamarin.UITest.Platform platform) [0x00041] in <2cd1cd61003a486e92c6ffb9d58f1488>:0
at UI.Tests.TestDashboardDetailsPage.OneTimeSetUp () [0x00000] in <2cd1cd61003a486e92c6ffb9d58f1488>:0
at (wrapper managed-to-native) System.Reflection.MonoMethod:InternalInvoke (System.Reflection.MonoMethod,object,object[],System.Exception&)
at System.Reflection.MonoMethod.Invoke (System.Object obj, System.Reflection.BindingFlags invokeAttr, System.Reflection.Binder binder, System.Object[] parameters, System.Globalization.CultureInfo culture) [0x00032] in <4fdc5ed61a074cafb49fa42deb20d521>:0
--HttpRequestException
at System.Net.Http.HttpClientHandler+<SendAsync>d__63.MoveNext () [0x004ab] in <7e581108ecb143d78ca072a020c287c3>:0
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw () [0x0000c] in <4fdc5ed61a074cafb49fa42deb20d521>:0
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess (System.Threading.Tasks.Task task) [0x0003e] in <4fdc5ed61a074cafb49fa42deb20d521>:0
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (System.Threading.Tasks.Task task) [0x00028] in <4fdc5ed61a074cafb49fa42deb20d521>:0
at System.Runtime.CompilerServices.TaskAwaiter.ValidateEnd (System.Threading.Tasks.Task task) [0x00008] in <4fdc5ed61a074cafb49fa42deb20d521>:0
at System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1+ConfiguredTaskAwaiter[TResult].GetResult () [0x00000] in <4fdc5ed61a074cafb49fa42deb20d521>:0
at System.Net.Http.HttpClient+<SendAsyncWorker>d__47.MoveNext () [0x000ca] in <7e581108ecb143d78ca072a020c287c3>:0
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw () [0x0000c] in <4fdc5ed61a074cafb49fa42deb20d521>:0
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess (System.Threading.Tasks.Task task) [0x0003e] in <4fdc5ed61a074cafb49fa42deb20d521>:0
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (System.Threading.Tasks.Task task) [0x00028] in <4fdc5ed61a074cafb49fa42deb20d521>:0
at System.Runtime.CompilerServices.TaskAwaiter.ValidateEnd (System.Threading.Tasks.Task task) [0x00008] in <4fdc5ed61a074cafb49fa42deb20d521>:0
at System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1+ConfiguredTaskAwaiter[TResult].GetResult () [0x00000] in <4fdc5ed61a074cafb49fa42deb20d521>:0
at Xamarin.UITest.XDB.Services.HttpService+<PostAsJsonAsync>c__async3`1+<PostAsJsonAsync>c__AnonStorey11+<PostAsJsonAsync>c__async10[T].MoveNext () [0x00094] in <1bd397951f434cd4913ddc08b7bc45af>:0
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw () [0x0000c] in <4fdc5ed61a074cafb49fa42deb20d521>:0
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess (System.Threading.Tasks.Task task) [0x0003e] in <4fdc5ed61a074cafb49fa42deb20d521>:0
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (System.Threading.Tasks.Task task) [0x00028] in <4fdc5ed61a074cafb49fa42deb20d521>:0
at System.Runtime.CompilerServices.TaskAwaiter.ValidateEnd (System.Threading.Tasks.Task task) [0x00008] in <4fdc5ed61a074cafb49fa42deb20d521>:0
at System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1+ConfiguredTaskAwaiter[TResult].GetResult () [0x00000] in <4fdc5ed61a074cafb49fa42deb20d521>:0
at Xamarin.UITest.XDB.Services.HttpService+<ExecuteRequestAsync>c__async5.MoveNext () [0x0008b] in <1bd397951f434cd4913ddc08b7bc45af>:0
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw () [0x0000c] in <4fdc5ed61a074cafb49fa42deb20d521>:0
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess (System.Threading.Tasks.Task task) [0x0003e] in <4fdc5ed61a074cafb49fa42deb20d521>:0
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (System.Threading.Tasks.Task task) [0x00028] in <4fdc5ed61a074cafb49fa42deb20d521>:0
at System.Runtime.CompilerServices.TaskAwaiter.ValidateEnd (System.Threading.Tasks.Task task) [0x00008] in <4fdc5ed61a074cafb49fa42deb20d521>:0
at System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1+ConfiguredTaskAwaiter[TResult].GetResult () [0x00000] in <4fdc5ed61a074cafb49fa42deb20d521>:0
at Xamarin.UITest.XDB.Services.HttpService+<RequestAsync>c__async4`1[T].MoveNext () [0x0031b] in <1bd397951f434cd4913ddc08b7bc45af>:0
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw () [0x0000c] in <4fdc5ed61a074cafb49fa42deb20d521>:0
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess (System.Threading.Tasks.Task task) [0x0003e] in <4fdc5ed61a074cafb49fa42deb20d521>:0
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (System.Threading.Tasks.Task task) [0x00028] in <4fdc5ed61a074cafb49fa42deb20d521>:0
at System.Runtime.CompilerServices.TaskAwaiter.ValidateEnd (System.Threading.Tasks.Task task) [0x00008] in <4fdc5ed61a074cafb49fa42deb20d521>:0
at System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1+ConfiguredTaskAwaiter[TResult].GetResult () [0x00000] in <4fdc5ed61a074cafb49fa42deb20d521>:0
at Xamarin.UITest.XDB.Services.HttpService+<PostAsJsonAsync>c__async3`1[T].MoveNext () [0x00132] in <1bd397951f434cd4913ddc08b7bc45af>:0
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw () [0x0000c] in <4fdc5ed61a074cafb49fa42deb20d521>:0
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess (System.Threading.Tasks.Task task) [0x0003e] in <4fdc5ed61a074cafb49fa42deb20d521>:0
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (System.Threading.Tasks.Task task) [0x00028] in <4fdc5ed61a074cafb49fa42deb20d521>:0
at System.Runtime.CompilerServices.TaskAwaiter.ValidateEnd (System.Threading.Tasks.Task task) [0x00008] in <4fdc5ed61a074cafb49fa42deb20d521>:0
at System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1+ConfiguredTaskAwaiter[TResult].GetResult () [0x00000] in <4fdc5ed61a074cafb49fa42deb20d521>:0
at Xamarin.UITest.XDB.Services.iOSDeviceAgentService+<RequestAsync>c__async14`1[T].MoveNext () [0x000be] in <1bd397951f434cd4913ddc08b7bc45af>:0
--WebException
at System.Net.HttpWebRequest.EndGetRequestStream (System.IAsyncResult asyncResult) [0x0003a] in <a24e193d5cf14a42ac00ebaea26ec7bc>:0
at System.Threading.Tasks.TaskFactory`1[TResult].FromAsyncCoreLogic (System.IAsyncResult iar, System.Func`2[T,TResult] endFunction, System.Action`1[T] endAction, System.Threading.Tasks.Task`1[TResult] promise, System.Boolean requiresSynchronization) [0x0000f] in <4fdc5ed61a074cafb49fa42deb20d521>:0
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw () [0x0000c] in <4fdc5ed61a074cafb49fa42deb20d521>:0
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess (System.Threading.Tasks.Task task) [0x0003e] in <4fdc5ed61a074cafb49fa42deb20d521>:0
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (System.Threading.Tasks.Task task) [0x00028] in <4fdc5ed61a074cafb49fa42deb20d521>:0
at System.Runtime.CompilerServices.TaskAwaiter.ValidateEnd (System.Threading.Tasks.Task task) [0x00008] in <4fdc5ed61a074cafb49fa42deb20d521>:0
at System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1+ConfiguredTaskAwaiter[TResult].GetResult () [0x00000] in <4fdc5ed61a074cafb49fa42deb20d521>:0
at System.Net.Http.HttpClientHandler+<SendAsync>d__63.MoveNext () [0x002e7] in <7e581108ecb143d78ca072a020c287c3>:0
--SocketException
at System.Net.Sockets.Socket.Connect (System.Net.EndPoint remoteEP) [0x000b6] in <a24e193d5cf14a42ac00ebaea26ec7bc>:0
at System.Net.WebConnection.Connect (System.Net.HttpWebRequest request) [0x0016d] in <a24e193d5cf14a42ac00ebaea26ec7bc>:0
回答我自己的问题。问题出在 XCode 9.3。希望他们尽快解决这个问题。
Known Issues
On macOS 10.13.4, booting iOS 11 and later in the Simulator may take several minutes the first time. (35628711)
我使用启动模拟器并在执行测试之前等待的脚本 - 这似乎有助于解决这类问题。
如果您还想在执行测试之前安装 .app 文件,还有一个可选的 .app 文件路径:
#!/bin/sh -
# Boots the iOS simulator using specified OS and simulator name
set -e
SIMULATOR_VERSION="${1:?You must pass an iOS version as the first argument}"
SIMULATOR_NAME="${2:?You must pass a simulator name as the second argument}"
OPTIONAL_APP_PATH=""
SIMULATOR_GUID="$(xcrun simctl list | grep -vi unavailable | sed -e "1,/^-- iOS $SIMULATOR_VERSION --$/d" -e '/^-- .* --$/,$ d' | grep -E "^\s+$SIMULATOR_NAME \(" | sed -e 's/^[^(]*(//g' -e 's/).*//g' | tail -1)"
if [ -z "$SIMULATOR_GUID" ]; then
echo "ERROR: Could not find simulator GUID for $SIMULATOR_NAME" >&2
exit 123
fi
shutDownSimulator()
{
GUID=
echo "==> Shutting down simulator with GUID $GUID..."
if xcrun simctl shutdown "$GUID" ; then
sleep 10s
echo "==> Successfully shutdown desired simulator."
else
echo "==> Desired simulator is already in shutdown state."
fi
}
eraseSimulator()
{
GUID=
echo "==> Erasing..."
xcrun simctl erase "$GUID"
echo "==> Waiting for 30 seconds..."
sleep 30s
}
bootSimulator()
{
GUID=
echo "==> Booting..."
xcrun simctl boot "$GUID"
echo "==> Waiting for 30 seconds..."
sleep 30s
}
installOptionalAppFile()
{
GUID=
if [ -z "$OPTIONAL_APP_PATH" ] ; then
echo "==> No app file to install specified, continuing..."
else
if [ -e "$OPTIONAL_APP_PATH" ]
then
echo "==> Installing app file at $OPTIONAL_APP_PATH"
xcrun simctl install "$GUID" "$OPTIONAL_APP_PATH"
else
echo "==> App file was not found at path: $OPTIONAL_APP_PATH"
fi
fi
}
echo "==> Erasing and launching simulator with name: $SIMULATOR_NAME / iOS version: $SIMULATOR_VERSION / GUID: $SIMULATOR_GUID..."
shutDownSimulator "$SIMULATOR_GUID"
eraseSimulator "$SIMULATOR_GUID"
bootSimulator "$SIMULATOR_GUID"
echo "==> Launching Simulator app..."
open `xcode-select -p`/Applications/Simulator.app
echo "Waiting for simulator to boot for 120 seconds..."
sleep 120s
installOptionalAppFile "$SIMULATOR_GUID"
exit 0
2 分钟的等待时间可能过长,但我这样做是为了以防万一,因为我的一些 Mac Mini 有点旧
我也遇到了物理设备的问题。我发现重启设备可以解决这个问题。
重新启动设备后,UITests 不再在第一个上失败。
我们可以使用名为 libimobiledevice
的库重启设备
https://www.mankier.com/1/idevicediagnostics
我运行正在从 Jenkins 和构建脚本中获取 UITest,然后在测试 运行 我们重启设备
idevicediagnostics -u[deviceUDID] restart
sleep 90s
由于我的 macOS 让我更新到 XCode 9.3,我不得不将 Xamarin.UITest 从 2.2.2 升级到 2.2.4。
问题是,当我 运行 所有测试时,每次第一个测试都会失败并附加错误。我认为这不是测试问题,因为所有测试 运行 在具有 XCode 9.2 和 Xamarin.UITest 2.2.2 的 macOS 上正确。此外,如果我删除该测试,那么下一个将成为第一个的测试将失败并出现相同的错误。
有人能帮帮我吗?非常感谢您!
1) SetUp Error : UI.Tests.TestDashboardDetailsPage(iOS)
Xamarin.UITest.XDB.Exceptions.DeviceAgentException : DeviceAgent start session failed: An error occurred while sending the request
----> System.Net.Http.HttpRequestException : An error occurred while sending the request
----> System.Net.WebException : Error: ConnectFailure (Connection refused)
----> System.Net.Sockets.SocketException : Connection refused
at Xamarin.UITest.XDB.Services.iOSDeviceAgentService+<RequestAsync>c__async14`1[T].MoveNext () [0x0010e] in <1bd397951f434cd4913ddc08b7bc45af>:0
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw () [0x0000c] in <4fdc5ed61a074cafb49fa42deb20d521>:0
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess (System.Threading.Tasks.Task task) [0x0003e] in <4fdc5ed61a074cafb49fa42deb20d521>:0
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (System.Threading.Tasks.Task task) [0x00028] in <4fdc5ed61a074cafb49fa42deb20d521>:0
at System.Runtime.CompilerServices.TaskAwaiter.ValidateEnd (System.Threading.Tasks.Task task) [0x00008] in <4fdc5ed61a074cafb49fa42deb20d521>:0
at System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1+ConfiguredTaskAwaiter[TResult].GetResult () [0x00000] in <4fdc5ed61a074cafb49fa42deb20d521>:0
at Xamarin.UITest.XDB.Services.iOSDeviceAgentService+<StartAppAsync>c__asyncE.MoveNext () [0x000ba] in <1bd397951f434cd4913ddc08b7bc45af>:0
--- End of stack trace from previous location where exception was thrown ---
at Xamarin.UITest.iOS.iOSAppLauncher.LaunchAppLocal (Xamarin.UITest.Configuration.IiOSAppConfiguration appConfiguration, Xamarin.UITest.Shared.Http.HttpClient httpClient, System.Boolean clearAppData) [0x00216] in <1bd397951f434cd4913ddc08b7bc45af>:0
at Xamarin.UITest.iOS.iOSAppLauncher.LaunchApp (Xamarin.UITest.Configuration.IiOSAppConfiguration appConfiguration, Xamarin.UITest.Shared.Http.HttpClient httpClient, Xamarin.UITest.TestCloud.TestCloudiOSAppConfiguration testCloudAppConfiguration, Xamarin.UITest.Shared.Http.HttpClient testCloudWsClient, Xamarin.UITest.Shared.Http.HttpClient xtcServicesClient, System.Boolean testCloudUseDeviceAgent) [0x0007a] in <1bd397951f434cd4913ddc08b7bc45af>:0
at Xamarin.UITest.iOS.iOSApp..ctor (Xamarin.UITest.Configuration.IiOSAppConfiguration appConfiguration, Xamarin.UITest.Shared.Execution.IExecutor executor) [0x002de] in <1bd397951f434cd4913ddc08b7bc45af>:0
at Xamarin.UITest.iOS.iOSApp..ctor (Xamarin.UITest.Configuration.IiOSAppConfiguration appConfiguration) [0x00000] in <1bd397951f434cd4913ddc08b7bc45af>:0
at Xamarin.UITest.Configuration.iOSAppConfigurator.StartApp (Xamarin.UITest.Configuration.AppDataMode appDataMode) [0x00017] in <1bd397951f434cd4913ddc08b7bc45af>:0
at UI.Tests.AppInitializer.StartApp (Xamarin.UITest.Platform platform) [0x00041] in <2cd1cd61003a486e92c6ffb9d58f1488>:0
at UI.Tests.TestDashboardDetailsPage.OneTimeSetUp () [0x00000] in <2cd1cd61003a486e92c6ffb9d58f1488>:0
at (wrapper managed-to-native) System.Reflection.MonoMethod:InternalInvoke (System.Reflection.MonoMethod,object,object[],System.Exception&)
at System.Reflection.MonoMethod.Invoke (System.Object obj, System.Reflection.BindingFlags invokeAttr, System.Reflection.Binder binder, System.Object[] parameters, System.Globalization.CultureInfo culture) [0x00032] in <4fdc5ed61a074cafb49fa42deb20d521>:0
--HttpRequestException
at System.Net.Http.HttpClientHandler+<SendAsync>d__63.MoveNext () [0x004ab] in <7e581108ecb143d78ca072a020c287c3>:0
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw () [0x0000c] in <4fdc5ed61a074cafb49fa42deb20d521>:0
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess (System.Threading.Tasks.Task task) [0x0003e] in <4fdc5ed61a074cafb49fa42deb20d521>:0
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (System.Threading.Tasks.Task task) [0x00028] in <4fdc5ed61a074cafb49fa42deb20d521>:0
at System.Runtime.CompilerServices.TaskAwaiter.ValidateEnd (System.Threading.Tasks.Task task) [0x00008] in <4fdc5ed61a074cafb49fa42deb20d521>:0
at System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1+ConfiguredTaskAwaiter[TResult].GetResult () [0x00000] in <4fdc5ed61a074cafb49fa42deb20d521>:0
at System.Net.Http.HttpClient+<SendAsyncWorker>d__47.MoveNext () [0x000ca] in <7e581108ecb143d78ca072a020c287c3>:0
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw () [0x0000c] in <4fdc5ed61a074cafb49fa42deb20d521>:0
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess (System.Threading.Tasks.Task task) [0x0003e] in <4fdc5ed61a074cafb49fa42deb20d521>:0
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (System.Threading.Tasks.Task task) [0x00028] in <4fdc5ed61a074cafb49fa42deb20d521>:0
at System.Runtime.CompilerServices.TaskAwaiter.ValidateEnd (System.Threading.Tasks.Task task) [0x00008] in <4fdc5ed61a074cafb49fa42deb20d521>:0
at System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1+ConfiguredTaskAwaiter[TResult].GetResult () [0x00000] in <4fdc5ed61a074cafb49fa42deb20d521>:0
at Xamarin.UITest.XDB.Services.HttpService+<PostAsJsonAsync>c__async3`1+<PostAsJsonAsync>c__AnonStorey11+<PostAsJsonAsync>c__async10[T].MoveNext () [0x00094] in <1bd397951f434cd4913ddc08b7bc45af>:0
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw () [0x0000c] in <4fdc5ed61a074cafb49fa42deb20d521>:0
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess (System.Threading.Tasks.Task task) [0x0003e] in <4fdc5ed61a074cafb49fa42deb20d521>:0
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (System.Threading.Tasks.Task task) [0x00028] in <4fdc5ed61a074cafb49fa42deb20d521>:0
at System.Runtime.CompilerServices.TaskAwaiter.ValidateEnd (System.Threading.Tasks.Task task) [0x00008] in <4fdc5ed61a074cafb49fa42deb20d521>:0
at System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1+ConfiguredTaskAwaiter[TResult].GetResult () [0x00000] in <4fdc5ed61a074cafb49fa42deb20d521>:0
at Xamarin.UITest.XDB.Services.HttpService+<ExecuteRequestAsync>c__async5.MoveNext () [0x0008b] in <1bd397951f434cd4913ddc08b7bc45af>:0
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw () [0x0000c] in <4fdc5ed61a074cafb49fa42deb20d521>:0
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess (System.Threading.Tasks.Task task) [0x0003e] in <4fdc5ed61a074cafb49fa42deb20d521>:0
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (System.Threading.Tasks.Task task) [0x00028] in <4fdc5ed61a074cafb49fa42deb20d521>:0
at System.Runtime.CompilerServices.TaskAwaiter.ValidateEnd (System.Threading.Tasks.Task task) [0x00008] in <4fdc5ed61a074cafb49fa42deb20d521>:0
at System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1+ConfiguredTaskAwaiter[TResult].GetResult () [0x00000] in <4fdc5ed61a074cafb49fa42deb20d521>:0
at Xamarin.UITest.XDB.Services.HttpService+<RequestAsync>c__async4`1[T].MoveNext () [0x0031b] in <1bd397951f434cd4913ddc08b7bc45af>:0
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw () [0x0000c] in <4fdc5ed61a074cafb49fa42deb20d521>:0
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess (System.Threading.Tasks.Task task) [0x0003e] in <4fdc5ed61a074cafb49fa42deb20d521>:0
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (System.Threading.Tasks.Task task) [0x00028] in <4fdc5ed61a074cafb49fa42deb20d521>:0
at System.Runtime.CompilerServices.TaskAwaiter.ValidateEnd (System.Threading.Tasks.Task task) [0x00008] in <4fdc5ed61a074cafb49fa42deb20d521>:0
at System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1+ConfiguredTaskAwaiter[TResult].GetResult () [0x00000] in <4fdc5ed61a074cafb49fa42deb20d521>:0
at Xamarin.UITest.XDB.Services.HttpService+<PostAsJsonAsync>c__async3`1[T].MoveNext () [0x00132] in <1bd397951f434cd4913ddc08b7bc45af>:0
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw () [0x0000c] in <4fdc5ed61a074cafb49fa42deb20d521>:0
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess (System.Threading.Tasks.Task task) [0x0003e] in <4fdc5ed61a074cafb49fa42deb20d521>:0
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (System.Threading.Tasks.Task task) [0x00028] in <4fdc5ed61a074cafb49fa42deb20d521>:0
at System.Runtime.CompilerServices.TaskAwaiter.ValidateEnd (System.Threading.Tasks.Task task) [0x00008] in <4fdc5ed61a074cafb49fa42deb20d521>:0
at System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1+ConfiguredTaskAwaiter[TResult].GetResult () [0x00000] in <4fdc5ed61a074cafb49fa42deb20d521>:0
at Xamarin.UITest.XDB.Services.iOSDeviceAgentService+<RequestAsync>c__async14`1[T].MoveNext () [0x000be] in <1bd397951f434cd4913ddc08b7bc45af>:0
--WebException
at System.Net.HttpWebRequest.EndGetRequestStream (System.IAsyncResult asyncResult) [0x0003a] in <a24e193d5cf14a42ac00ebaea26ec7bc>:0
at System.Threading.Tasks.TaskFactory`1[TResult].FromAsyncCoreLogic (System.IAsyncResult iar, System.Func`2[T,TResult] endFunction, System.Action`1[T] endAction, System.Threading.Tasks.Task`1[TResult] promise, System.Boolean requiresSynchronization) [0x0000f] in <4fdc5ed61a074cafb49fa42deb20d521>:0
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw () [0x0000c] in <4fdc5ed61a074cafb49fa42deb20d521>:0
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess (System.Threading.Tasks.Task task) [0x0003e] in <4fdc5ed61a074cafb49fa42deb20d521>:0
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (System.Threading.Tasks.Task task) [0x00028] in <4fdc5ed61a074cafb49fa42deb20d521>:0
at System.Runtime.CompilerServices.TaskAwaiter.ValidateEnd (System.Threading.Tasks.Task task) [0x00008] in <4fdc5ed61a074cafb49fa42deb20d521>:0
at System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1+ConfiguredTaskAwaiter[TResult].GetResult () [0x00000] in <4fdc5ed61a074cafb49fa42deb20d521>:0
at System.Net.Http.HttpClientHandler+<SendAsync>d__63.MoveNext () [0x002e7] in <7e581108ecb143d78ca072a020c287c3>:0
--SocketException
at System.Net.Sockets.Socket.Connect (System.Net.EndPoint remoteEP) [0x000b6] in <a24e193d5cf14a42ac00ebaea26ec7bc>:0
at System.Net.WebConnection.Connect (System.Net.HttpWebRequest request) [0x0016d] in <a24e193d5cf14a42ac00ebaea26ec7bc>:0
回答我自己的问题。问题出在 XCode 9.3。希望他们尽快解决这个问题。
Known Issues
On macOS 10.13.4, booting iOS 11 and later in the Simulator may take several minutes the first time. (35628711)
我使用启动模拟器并在执行测试之前等待的脚本 - 这似乎有助于解决这类问题。
如果您还想在执行测试之前安装 .app 文件,还有一个可选的 .app 文件路径:
#!/bin/sh -
# Boots the iOS simulator using specified OS and simulator name
set -e
SIMULATOR_VERSION="${1:?You must pass an iOS version as the first argument}"
SIMULATOR_NAME="${2:?You must pass a simulator name as the second argument}"
OPTIONAL_APP_PATH=""
SIMULATOR_GUID="$(xcrun simctl list | grep -vi unavailable | sed -e "1,/^-- iOS $SIMULATOR_VERSION --$/d" -e '/^-- .* --$/,$ d' | grep -E "^\s+$SIMULATOR_NAME \(" | sed -e 's/^[^(]*(//g' -e 's/).*//g' | tail -1)"
if [ -z "$SIMULATOR_GUID" ]; then
echo "ERROR: Could not find simulator GUID for $SIMULATOR_NAME" >&2
exit 123
fi
shutDownSimulator()
{
GUID=
echo "==> Shutting down simulator with GUID $GUID..."
if xcrun simctl shutdown "$GUID" ; then
sleep 10s
echo "==> Successfully shutdown desired simulator."
else
echo "==> Desired simulator is already in shutdown state."
fi
}
eraseSimulator()
{
GUID=
echo "==> Erasing..."
xcrun simctl erase "$GUID"
echo "==> Waiting for 30 seconds..."
sleep 30s
}
bootSimulator()
{
GUID=
echo "==> Booting..."
xcrun simctl boot "$GUID"
echo "==> Waiting for 30 seconds..."
sleep 30s
}
installOptionalAppFile()
{
GUID=
if [ -z "$OPTIONAL_APP_PATH" ] ; then
echo "==> No app file to install specified, continuing..."
else
if [ -e "$OPTIONAL_APP_PATH" ]
then
echo "==> Installing app file at $OPTIONAL_APP_PATH"
xcrun simctl install "$GUID" "$OPTIONAL_APP_PATH"
else
echo "==> App file was not found at path: $OPTIONAL_APP_PATH"
fi
fi
}
echo "==> Erasing and launching simulator with name: $SIMULATOR_NAME / iOS version: $SIMULATOR_VERSION / GUID: $SIMULATOR_GUID..."
shutDownSimulator "$SIMULATOR_GUID"
eraseSimulator "$SIMULATOR_GUID"
bootSimulator "$SIMULATOR_GUID"
echo "==> Launching Simulator app..."
open `xcode-select -p`/Applications/Simulator.app
echo "Waiting for simulator to boot for 120 seconds..."
sleep 120s
installOptionalAppFile "$SIMULATOR_GUID"
exit 0
2 分钟的等待时间可能过长,但我这样做是为了以防万一,因为我的一些 Mac Mini 有点旧
我也遇到了物理设备的问题。我发现重启设备可以解决这个问题。 重新启动设备后,UITests 不再在第一个上失败。 我们可以使用名为 libimobiledevice
的库重启设备https://www.mankier.com/1/idevicediagnostics
我运行正在从 Jenkins 和构建脚本中获取 UITest,然后在测试 运行 我们重启设备
idevicediagnostics -u[deviceUDID] restart
sleep 90s