【问题标题】:How to tap OK button in permission dialog that required to access to photos on iOS using Xamarin.UITest?如何在需要使用 Xamarin.UITest 访问 iOS 上的照片的权限对话框中点击确定按钮?
【发布时间】:2015-05-19 04:52:24
【问题描述】:

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

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

我尝试了以下方法,但没有奏效:

  • 使用树命令不显示该对话框的层次结构,因此我 找不到要自动化的 UI 元素

  • 使用 iOSApp.InvokeUia("UIATarget.localTarget().frontMostApp().alert().buttons()[\"OK\"].tap()"); 这显示错误: UIATarget.localTarget().frontMostApp().alert().buttons()["OK"] could not be tapped because the element is not visible tap@[native code]

  • 使用app.TapCoordinate,似乎可以工作,但必须知道正确的坐标取决于不同的屏幕以及何时出现对话框。

有解决这个问题的方法吗? 谢谢。

【问题讨论】:

    标签: ios xamarin


    【解决方案1】:

    权限的系统对话框超出了应用程序的范围,不会显示在tree 或您可以通过 UITest 执行的任何其他查询中。相反,这些通常由葫芦自动处理。 “自动”行为是接受出现的任何权限对话框。

    您的对话框是否使用其他语言,其中“确定”可能会以非英语语言显示?如果是这样,我们可能需要为该特定语言环境提交问题,以便可以实施。

    另外,请确保您拥有最新的 UITest 版本。看看 iOS 10 和 InvokeUia here 的变化。

    【讨论】:

    • 这是正确的问题。但是,在使用测试记录器时,它不会自动关闭对话框。自动确定还意味着您无法针对用户拒绝权限的情况进行 UI 测试。
    • 关于 XTR 的有趣点,我会跟进。您可能会考虑对不依赖于实际接受权限的不同路径使用“后门”技术,以便您可以对要测试的行为进行分支。 developer.xamarin.com/guides/testcloud/uitest/working-with/…
    • 只是此讨论的更新。新版本的 Xamarin 测试记录器实际上会自动关闭权限。 @PhucThai 可能应该接受这个答案,因为这是最正确的。
    【解决方案2】:

    试试这个: target.frontMostApp().mainWindow().elements()[0].elements()[2].elements()[1].tap()

    【讨论】:

      【解决方案3】:

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

      如果您使用的是 Visual Studio Entrerprise Edition,则可以使用 Xamarin 测试记录器使您的测试变得更加容易,它的效果非常好!

      另外需要注意的是,UI 测试通常用于屏幕截图和屏幕布局验证,您的功能应该使用另一个框架或工具包的另一种测试来测试。

      【讨论】:

      • 这不起作用。确定按钮不在应用程序的可视化树中,因为它是从操作系统而不是应用程序启动的。
      • 对此有任何解决方案/更新吗?我面临同样的问题 - 应用程序在首次安装时要求通知权限,似乎没有办法关闭权限对话框。这是使用 Xamarin.UITest。
      猜你喜欢
      • 2016-09-01
      • 1970-01-01
      • 1970-01-01
      • 2016-01-26
      • 2016-02-29
      • 1970-01-01
      • 2014-12-23
      • 2013-07-30
      相关资源
      最近更新 更多