Xcode 7 UI 测试:如何在代码中消除一系列系统警报

2024-04-30

我正在使用新的 Xcode 7 UI 测试功能编写 UI 测试用例。在我的应用程序的某个时刻,我会请求用户允许相机访问和推送通知。所以会出现两个 iOS 弹出窗口:"MyApp Would Like to Access the Camera"弹出窗口和"MyApp Would Like to Send You Notifications"弹出窗口。我希望我的测试能够消除这两个弹出窗口。

UI 记录为我生成了以下代码:

[app.alerts[@"cameraAccessTitle"].collectionViews.buttons[@"OK"] tap];

然而,[app.alerts[@"cameraAccessTitle"] exists]解析为 false,上面的代码会生成错误:Assertion Failure: UI Testing Failure - Failure getting refresh snapshot Error Domain=XCTestManagerErrorDomain Code=13 "Error copying attributes -25202".

那么在测试中消除一堆系统警报的最佳方法是什么?系统弹出窗口中断了我的应用程序流程,并立即使我的正常 UI 测试用例失败。事实上,任何关于如何绕过系统警报以便我可以恢复测试通常流程的建议都是值得赞赏的。

这个问题可能与这个SO帖子有关,该帖子也没有答案:Xcode7 | Xcode UI 测试 |如何处理位置服务提醒? https://stackoverflow.com/questions/31746225/xcode7-xcode-ui-tests-how-to-handle-location-service-alert?rq=1

提前致谢。


Xcode 7.1

Xcode 7.1 终于解决了系统警报的问题。然而,有两个小问题。

首先,您需要在呈现警报之前设置“UI 中断处理程序”。这是我们告诉框架如何处理出现的警报的方式。

其次,呈现警报后,您必须与界面进行交互。只需点击应用程序即可正常工作,但这是必需的。

addUIInterruptionMonitorWithDescription("Location Dialog") { (alert) -> Bool in
    alert.buttons["Allow"].tap()
    return true
}

app.buttons["Request Location"].tap()
app.tap() // need to interact with the app for the handler to fire

“位置对话框”只是一个字符串,用于帮助开发人员识别访问了哪个处理程序,它并不特定于警报类型。

我相信回归true来自处理程序的将其标记为“完成”,这意味着它不会再次被调用。对于你的情况我会尝试返回false因此第二个警报将再次触发处理程序。

Xcode 7.0

以下内容将消除 Xcode 7 Beta 6 中的单个“系统警报”:

let app = XCUIApplication()
app.launch()
// trigger location permission dialog

app.alerts.element.collectionViews.buttons["Allow"].tap()

Beta 6 引入了一系列 UI 测试修复,我相信这就是其中之一。

另请注意,我正在打电话-element直接在-alerts。呼唤-element on an XCUIElementQuery强制框架选择屏幕上“唯一”的匹配元素。这对于一次只能显示一个警报的情况非常有用。但是,如果您尝试对一个标签执行此操作并且有两个标签,则框架将引发异常。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Xcode 7 UI 测试:如何在代码中消除一系列系统警报 的相关文章

  • 如何在ios中以编程方式添加水平间距和垂直间距?

    我在 ios 8 中创建了一个应用程序 因为我有 4 个可垂直使用的标签 它应该在某些条件下更改位置 所以我已禁用自动布局并以编程方式设置约束 现在的问题是 我可以设置水平和垂直位置 宽度和高度的约束 但我找不到任何方法来添加标签之间的水平
  • 增加 NSData 的长度

    基本上 我有一个 46 个字符的 NSString 我将其转换为 NSData 我需要将字符串填充到 48 个字符 仅在 NSString 末尾添加 是行不通的 所以 我只是使用以下方法增加了 NSData 的长度 NSString str
  • 播放(非库)Apple Music 内容 - 请求失败

    我正在尝试使用以下代码播放专辑 let predicate MPMediaPropertyPredicate value 1459938538 forProperty MPMediaItemPropertyAlbumPersistentID
  • 如何自动为 Swift 类创建初始化程序?

    UPDATE 使用结构而不是类 struct 在很多方面都更好 它有自己的初始化器 这是我的模型课 是否有可能创建init自动方法 每次我都必须将所有变量一一初始化 这会花费很多时间 class Profile var id String
  • iOS 对 Google 云消息传递的支持

    我在谷歌的开发者控制台中看到 GCM 允许为 iOS 生成 API 密钥 我在网上搜索了有关如何在 iOS 应用程序中通过 GCM 实现推送通知的任何类型的文档 但没有找到答案 真的有可能在 iOS 应用程序中使用 GCM 实现推送通知 j
  • 下标:使用字符串枚举访问我的字典值

    我想做类似的事情 使用字符串枚举访问我的字典值 我试图重载字典的下标但没有成功 访问字典 let district address JsonKeys district 其中 JsonKeys 是 enum JsonKeys String c
  • Xcode MyProjectName-Bridging-Header.h 不存在

    我想开始在我的 Objective C 项目中使用 Swift 所以我添加了一个快速类 import Foundation objc class System NSObject objc func printSome println Pri
  • 具有非零“内容”的 QTMovieLayer 的 iOS 替代品?

    背景 QTKit QuickTime Kit 是一个来自 10 3 天的 Mac 框架 在 10 5 中添加了一些层 例如QTMovieLayer QTMovieLayer 的好处之一是您可以使用常规访问电影内容content图层上的属性并
  • 访问iOS 7隐藏的UITableViewCellScrollView?

    苹果改变了UITableViewCelliOS 7 中的层次结构 使用iOS 6 1 SDK
  • Apple 帮助创作

    我正在跟进本指南 http developer apple com library mac documentation Carbon Conceptual ProvidingUserAssitAppleHelp authoring help
  • 多个 ViewController(containerView?childView?viewController 的实例?)

    我需要在另一个视图之上添加一个新视图 带有 ViewController 用户与这个新视图交互了一段时间 然后我想将其删除 在旧版本的 Xcode 中 我可以将其添加为子视图 我现在收到 EXC BAD ACCESS 错误 我不希望添加的视
  • UIWebView 未正确加载 JavaScript - 嵌入式 Facebook 帖子

    Facebook 有一项新功能 允许用户将公共帖子嵌入网页中 我想尝试在 UIWebView 内的 iPhone 应用程序中使用它 转义必要的代码非常简单 但即使我手动转义代码 Web 视图也不会正确加载帖子 JavaScript 根本不起
  • UIWebView 如何检测 被点击

    我知道下面的方法可以检测链接元素点击 但我想知道是否UIView可以检测是否img元素被点击 BOOL webView UIWebView webView shouldStartLoadWithRequest NSURLRequest re
  • 在 swift 中设置状态栏的自定义颜色?

    在视图控制器上 我想将状态栏的颜色设置为黑色 但我无法更改它 我为此目的使用下面的代码 func setUpUI self navigationController setNavigationBarHidden true animated
  • iPhone ImageView序列动画

    嘿 尝试将一个简单的 png 序列动画放入我的应用程序中 我在 IB 中放置了第一个框架 并将图形动画出口连接到它 序列中有 54 个 png 名称为 Comp 1 0000 png 到 Comp 1 00053 png 这是我的代码 vo
  • 防止 UITableView 滚动到某个点以下

    如何让 UITableView 允许在某个索引行上方滚动 但在低于某个点时阻止滚动 例如 如果我有第 1 行到第 100 行 其中在给定时间视图中仅出现 5 行 我希望允许用户在第 1 50 行之间滚动 但在第 50 行可见时阻止进一步向下
  • 当 Firebase 函数以 Swift 结束时

    我在我的应用程序中使用 Firebase 它查询大量用户并获取所需的特定数据 但是当它开始查询时 其余功能也继续运行 而不仅仅是查询 所以我无法理解当它结束时 例如在这段代码中 ref observeEventType ChildAdded
  • OpenGL ES 1.1 顶点缓冲区对象不工作

    我正在使用 OpenGL ES 1 1 开发一款 iPhone 游戏 需要使用顶点缓冲区对象来渲染 500 多个粒子而不降低性能 我的游戏能够使用非 VBO 方法成功绘制 但现在我尝试合并 VBO 却不再绘制任何内容 请帮助我找出我做错了什
  • Flutter - 删除 ListView 中项目之间的空间

    我正在使用 ListView builder 函数来创建项目列表 然而 iOS 中每个项目之间的空间很大 截图 你知道如何删除项目吗 看来是默认的 因为我没有添加它 code 列表显示 return Scaffold body ListVi
  • iOS SWIFT - WebRTC 从前置摄像头更改为后置摄像头

    WebRTC 视频默认使用前置摄像头 效果很好 但是 我需要将其切换到后置摄像头 但我无法找到任何代码来执行此操作 我需要编辑哪一部分 是 localView 或 localVideoTrack 还是捕获器 斯威夫特3 0 对等连接只能有一

随机推荐

  • Graph 返回错误:API 参数中提供的 appsecret_proof 无效

    我正在使用 facebook PHP sdk v4 来获取用户信息 安装SDK后 我添加代码 fb new Facebook Facebook app id gt my app id app secret gt my app secret
  • 是否可以通过 MX 查找获取端口?

    我正在了解什么是的旅程从 Python 代码发送电子邮件的正确方法 https stackoverflow com questions 50695188 what is the proper way to actually send mai
  • 如果使用简单的异或密码需要申请CCATS吗?

    iTunesConnect 指出 如果在应用程序中使用加密 开发人员需要获得 CCATS 分类 我的应用程序在通过 HTTP 传输数据时使用简单的 XOR 混淆密码 这仍然符合该要求吗 如果不是 那么什么类型的加密需要进行 CCATS 分类
  • android studio 错误:缺少功能:WATCH

    我尝试在我的智能手表上使用 android studio 运行一个简单的应用程序 并收到以下消息 我的智能手表运行 Android 4 4 2 其 API 级别为 19 我尝试过但没有帮助的事情 将最低 SDK 版本更改为 API 19 r
  • 如何替换 NSString 中的 \xA0 字符

    以下代码不起作用 NSString importText textView string stringByReplacingOccurrencesOfString xA0 xA0 withString 编译器声明 由于输入字节不属于输入代码
  • IIS7 权限概述 - ApplicationPoolIdentity

    我们最近升级到 IIS7 作为核心 Web 服务器 我需要一个权限方面的概述 以前 当需要写入文件系统时 我会授予 AppPool 用户 网络服务 对目录或文件的访问权限 在 IIS7 中 我看到默认情况下 AppPool 用户设置为App
  • 什么是 .tpl 文件? PHP、网页设计

    有人希望我重新设计一个用 PHP VideoCMS 运行的网站 但是当我要求他向我发送源代码时 他给了我 tpl 文件而不是 php 其中有一些代码 include file header tpl p article br table wi
  • 使用 ProGuard 对 Android 代码进行混淆...如何知道它已被混淆?

    我有一个 Android 项目 最近通过 ProGuard 进行混淆运行后发布到市场 该项目导出时没有任何复杂性 但我怎么知道它已被混淆 我可以做些什么来验证混淆是否成功 寻找dump txt mapping txt seeds txt a
  • OpenSubKey 不适用于我需要的注册表值

    我安装了 SQL Server In the registry the key MSSQLServer at HKEY LOCAL MACHINE SOFTWARE Microsoft looks like this 以下所有代码行都从注册
  • CoAP 和 DTLS 集成

    我实现了 CoAP libcoap 和 DTLS tinyDTLS 的实现 如何将 CoAP libcoap 与 DTLS tinyDTLS 集成 我将不胜感激任何建议 libcoap 现在完全支持这一点 当您使用其子模块构建它时 git
  • 从查找文件中批量重命名部分文件名

    edit 请参阅底部以了解我的最终解决方案 我有一个包含约 12 700 个文本文件的目录 他们的名字是这样的 1 Re Report Novenator 公开呼吁埋葬 Lizbett 星期四 2009 年 9 月 10 日 txt 其中前
  • 当手机进入睡眠/待机模式时,活动/服务会发生什么?

    当手机 AP进入睡眠模式时 Android应用程序以及属于应用程序的活动和服务会发生什么 框架会破坏活动和服务并且操作系统会杀死进程吗 如果设备处于睡眠状态 将调用 Activity 的 onPause 读活动生命周期 http devel
  • python matplotlib 无边框表格

    我在表格顶部有一个由以下示例生成的图 表格数据被随机数替换 实际绘图被一些任意函数替换 import numpy as np import matplotlib pylab as plt fig ax plt subplots ntp 17
  • python 拆分而不创建空白

    我明白为什么使用 split 创建空白很重要 这要归功于这个问题 https stackoverflow com questions 2197451 why are empty strings returned in split resul
  • 如何使用 Linq to SQL 从存储过程中检索多行?

    我最近开始使用 Linq to SQL 想知道如何通过执行存储过程来获取多行 这是我想要使用的一个简单的 sp CREATE PROCEDURE gsp ftsmultiple SearchKey varchar 100 AS BEGIN
  • 根据另一行中另一列的值将列添加到数据框

    我正在寻找我的具体问题的答案 但没有找到结论 我找到了这个 根据其他列的值将列添加到数据框 https stackoverflow com questions 26067161 add column to data frame based
  • C++ GetDIBits 不工作

    首先我加载图像 cool bmp 加载很好 然后我调用函数 getPixArray 但它失败了 case WM CREATE runs once on creation of window hBitmap HBITMAP LoadImage
  • C# 中的时间跨度总和

    我有一个包含 TimeSpan 变量的对象集合 MyObject TimeSpan TheDuration get set 我想使用 LINQ 来计算这些时间的总和 当然 从 MyCollection 中的 r 选择 r TheDurati
  • javascript - 如何防止 toFixed 对小数进行四舍五入

    我对 html javascript 和 css 很陌生 所以如果我的问题对你来说听起来很愚蠢 请原谅 我的问题是如何阻止该功能toFixed 来自小数的四舍五入 这是我的链接 http jsfiddle net RWBaA 4 http
  • Xcode 7 UI 测试:如何在代码中消除一系列系统警报

    我正在使用新的 Xcode 7 UI 测试功能编写 UI 测试用例 在我的应用程序的某个时刻 我会请求用户允许相机访问和推送通知 所以会出现两个 iOS 弹出窗口 MyApp Would Like to Access the Camera