如何在使用Xamarin.UITest访问iOS上的照片所需的权限对话框中点击确定按钮?

时间:2015-05-19 04:52:25

标签: ios xamarin

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

问题在于:在访问图库上传照片时,有一个权限对话框,我需要点击“#34;确定"按钮解除它。

我尝试了以下方式,但它们并没有起作用:

  • 使用树命令不显示该对话框的层次结构,因此i 找不到要自动化的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,它似乎能够正常工作,但必须知道正确的坐标取决于不同的屏幕以及何时出现对话框。

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

3 个答案:

答案 0 :(得分:5)

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

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

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

答案 1 :(得分:2)

试试这个: target.frontMostApp()。主窗口()。元素()[0] .elements()[2] .elements()[1] .tap()

答案 2 :(得分:0)

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

如果您使用的是Visual Studio Entrerprise Edition,那么使用Xamarin测试记录器可以让您的测试变得更加轻松,它的工作非常棒!

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