如何点击权限对话框中的“确定”按钮,以使用Xamarin.UITest访问iOS上的照片?

如何点击权限对话框中的“确定”按钮,以使用Xamarin.UITest访问iOS上的照片?,ios,xamarin,Ios,Xamarin,我正在使用Xamarin.UITest在iOS应用程序上执行自动化 问题是:当访问图库上传照片时,有一个权限对话框,我需要点击“确定”按钮来关闭它 我尝试了以下方法,但都不起作用: 使用tree命令不会显示该对话框的层次结构,所以 无法找到要自动执行的UI元素 使用 iOSApp.InvokeUia(“UIATarget.localTarget().frontMostApp().alert().buttons()[\“OK\”].tap()” 此错误显示为: UIATarget.localTa

我正在使用Xamarin.UITest在iOS应用程序上执行自动化

问题是:当访问图库上传照片时,有一个权限对话框,我需要点击“确定”按钮来关闭它

我尝试了以下方法,但都不起作用:

  • 使用tree命令不会显示该对话框的层次结构,所以 无法找到要自动执行的UI元素

  • 使用
    iOSApp.InvokeUia(“UIATarget.localTarget().frontMostApp().alert().buttons()[\“OK\”].tap()”
    此错误显示为:
    
    UIATarget.localTarget().frontMostApp().alert().buttons()[“确定”]可能会
    无法点击,因为元素不可见点击@[本机代码]

  • 使用
    app.TapCoordinate
    ,它似乎可以工作,但必须知道正确的坐标取决于不同的屏幕和对话框出现的时间
有解决这个问题的办法吗? 谢谢。

试试这个:
target.frontMostApp().mainWindow().elements()[0].elements()[2].elements()[1].tap()权限的系统对话框不在应用程序的范围内,不会显示在
树中或通过UITest执行的任何其他查询中。相反,它们通常由葫芦自动处理。“自动”行为是接受出现的任何权限对话框

您的对话框是否使用其他语言,其中“OK”可能以非英语语言显示?如果是这样,我们可能需要针对该特定区域设置提交一个问题,以便能够实现它

此外,请确保您拥有最新的UITest版本。查看iOS 10和InvokeUI的更改。

如果使用Repl();在代码中,您可以尝试使用tree命令获得OK按钮的标记

如果您使用的是Visual Studio Enterprise版本,那么您可以使用Xamarin测试记录器使您的测试更加轻松,它工作得非常出色


另一件需要注意的事情是,UI测试通常是针对屏幕截图和屏幕布局验证进行的,您的功能应该使用另一种框架或工具包进行测试。

这不起作用。“确定”按钮不在应用程序的可视树中,因为它是从操作系统而不是从应用程序启动的。对此有任何解决方案/更新吗?我也面临着同样的问题——该应用程序在首次安装时要求获得通知权限,而且似乎无法关闭权限对话框。这是使用Xamarin.UITest。这是正确的问题。但是,当使用测试记录器时,它不会自动关闭对话框。自动确定也意味着你不能在用户拒绝许可的情况下进行UI测试。您可能会考虑使用“后门”技术来不依赖于实际接受权限的不同路径,这样您就可以分派想要测试的行为。只是对这次讨论的更新。新版本的Xamarin测试记录器实际上会自动取消该权限@普泰可能会接受这个答案,因为这是最正确的答案。