gpt4 book ai didi

ios - Xamarin UI 测试 "Unable to set fake location on iOS Simulator"

转载 作者:行者123 更新时间:2023-11-29 11:33:08 26 4
gpt4 key购买 nike

我正在使用 Xamarin.UITest 在 Android 和 iOS 上测试 Xamarin Forms 应用。由于应用程序依赖于 GPS 位置,因此我需要设置一个假位置。我这样做使用

App.Device.SetLocation(latitude, longitude)

...其中 latitudelongitude 是包含所需坐标的 double 类型的变量。

这在 Android 上运行良好,但在 iPhone 模拟器上失败,但出现以下异常:

SetUp : Xamarin.UITest.XDB.Exceptions.DeviceAgentException : Unable to set location

ExitCode: 4

-d,--device-id <device-identifier> iOS Simulator GUID or 40-digit physical device ID
set-location <latitude,longitude>
Expected lat,lng: Got 48,135831,11,573423

我做了一些研究,在 Xamarin 论坛上发现了一个帖子,该帖子说将假坐标四舍五入到小数点后仅 4 位可能会有所帮助,但没有帮助。除此之外,我尝试对坐标进行硬编码并使用 float 而不是 double 但两种尝试均无效。

这是怎么回事,如何解决?

这是我的设置:

  • Xamarin.UITest 版本 2.2.4
  • 在 iPhone 6 上运行 iOS 9.3 的 iOS 模拟器
  • 主机:运行 MacOS High Sierra 10.13.6 的 Mac mini

同样的问题几个月前发生在以下设置中:

  • Xamarin.UITest 版本 2.2.1
  • 在 iPhone X 上运行 iOS 11.2 的 iOS 模拟器
  • 主机:运行 MacOS High Sierra (10.13.3) 的 Mac Mini

当时,我只是不管它,但现在是我需要修复的时候了。

最佳答案

Expected lat,lng: Got 48,135831,11,573423

这似乎是一个错误,因为 Xamarin 在将它们发送到 simctl 时使用您的本地语言环境将这些 double 转换为字符串(并且 simctl 期望基于小数点的字符串引用小数点和因此它正在解析那些是 4 个独立的数字)。

在设置位置之前的测试代码中,将区域性更改为 en-US 并在需要时将其设置回您的实际区域性。

像这样的东西应该可以工作:

var currentCulture = CultureInfo.DefaultThreadCurrentCulture;
CultureInfo.DefaultThreadCurrentCulture = new System.Globalization.CultureInfo("en-US");"

// do some location setting / testing

CultureInfo.DefaultThreadCurrentCulture = currentCulture;

关于ios - Xamarin UI 测试 "Unable to set fake location on iOS Simulator",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51559004/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com