gpt4 book ai didi

ios - Xamarin.UITests - 在真实设备上测试 - iOS - 应用权限弹出窗口问题

转载 作者:可可西里 更新时间:2023-11-01 03:30:24 24 4
gpt4 key购买 nike

我的 iOS 应用需要一些权限(GPS、推送通知)。当应用程序首次启动时,iOS 会询问用户是否可以将这些权限授予应用程序。我已经编写了一些 UITest,并希望在本地连接的 iPhone 上自动运行它们。

问题是我无法覆盖权限问题并且我的测试失败了。我发现由 IDE (Xamarin Studio) 部署的应用程序会请求权限,但通过 UITests 部署的应用程序不会。所以我尝试使用 .AppBundle(path_to_app) 但它说这仅对部署到模拟器有效。

SetUp : System.Exception : This app bundle is not valid for running on a simulator. To fix this issue please ensure that your target device is a simulator. DTPlatformName is 'iphoneos', not 'iphonesimulator' in the apps Info.plist.

就像它试图将 iPhone 应用程序部署到模拟器。但是 Xamarin Studio 中的 Target 设置为真实设备。我尝试添加 .DeviceIdentifier。当与 .InstalledApp 一起使用时,它正在启动(仍在请求权限)。但是当我使用 DeviceIdentifierAppBundle 时,出现了与上面相同的错误。

我的测试在 Test Cloud 上运行良好。他们在模拟器上运行良好。当我手动部署到设备、启动应用程序并批准权限然后运行 ​​UI 测试时,它们工作正常。

我无法实现的是让 UITest 覆盖真实设备上的权限问题。有人做过这个吗?

最后一件事是我在 AppBundle 方法的文档中找到的“将强制在模拟器上运行” https://developer.xamarin.com/api/member/Xamarin.UITest.Configuration.iOSAppConfigurator.AppBundle/p/System.String/

所以我可能注定无法完成这项任务,但也许有人知道解决方法?

最佳答案

您可以使用 InvokeUIA 关闭带有 UITest 的系统对话框。下面的测试通过点击 iOS 系统警报的“确定”按钮进行:

[Test]
public void AppLaunches ()
{
app.Screenshot ("First screen.");
app.InvokeUia ("uia.query('[:view {:marked \"OK\"}]')");
app.InvokeUia ("uia.tapMark(\"OK\")");
}

一个可用的示例应用程序和 UITest 也在这里: https://github.com/King-of-Spades/InvokeUia-for-System-Dialogs

有关 Test Cloud 中系统对话框的警告

您在 Test Cloud 中看不到此问题的原因是因为 Test Cloud 会自动消除系统警报;所以通常你不必担心它。但是,如果您的警报启动得太早;以便它在自动化完全启动您的应用程序之前出现,然后它将无法检测并关闭警报并导致您的测试失败。

因此,您要确保在 Test Cloud 中运行您的应用程序时,权限请求会延迟,或者如果特定测试未明确需要它们,您甚至可以停用它们。本葫芦指南中提供了更多信息:https://github.com/calabash/calabash-ios/wiki/Managing-Privacy-Alerts%3A--Location-Services%2C-APNS%2C-Contacts

(即使它是 Calabash,您也可以在 UITest 中使用相同的策略;尽管使用 C# 语法。)

Xcode 8/iOS 10 更新

Xcode 8/iOS 10 删除了 UIAutomation,因此 InvokeUIA 解决方法只有在您使用 Xcode 7 和 iOS 7-9 时才能继续使用。引用资料:

关于ios - Xamarin.UITests - 在真实设备上测试 - iOS - 应用权限弹出窗口问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37673041/

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