- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
我正在使用新的 Xcode 7 UI 测试功能编写 UI 测试用例。在我的应用程序的某个时刻,我要求用户授予相机访问权限和推送通知。因此会出现两个 iOS 弹出窗口:“MyApp 想要访问相机”
弹出窗口和 “MyApp 想要向您发送通知”
弹出窗口。我希望我的测试消除两个弹出窗口。
UI 录制为我生成了以下代码:
[app.alerts[@"cameraAccessTitle"].collectionViews.buttons[@"OK"] tap];
但是,[app.alerts[@"cameraAccessTitle"] exists]
解析为 false,上面的代码会产生错误:Assertion Failure: UI Testing Failure - Failure getting refresh snapshots错误 Domain=XCTestManagerErrorDomain Code=13“复制属性时出错 -25202”
。
那么在测试中消除一堆系统警报的最佳方法是什么?系统弹出窗口会中断我的应用程序流程并立即使我的正常 UI 测试用例失败。事实上,任何关于如何绕过系统警报以便我可以恢复测试通常流程的建议都值得赞赏。
这个问题可能与这个没有答案的 SO 帖子有关:Xcode7 | Xcode UI Tests | How to handle location service alert?
提前致谢。
最佳答案
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 Beta 6 中的单个“系统警报”:
let app = XCUIApplication()
app.launch()
// trigger location permission dialog
app.alerts.element.collectionViews.buttons["Allow"].tap()
Beta 6 引入了一系列针对 UI 测试的修复,我相信这就是其中之一。
另外请注意,我直接在 -alerts
上调用 -element
。在 XCUIElementQuery
上调用 -element
会强制框架选择屏幕上的“唯一”匹配元素。这对于您一次只能看到一个的警报非常有用。但是,如果您尝试对一个标签执行此操作并且有两个标签,则框架将引发异常。
关于ios - Xcode 7 UI 测试 : how to dismiss a series of system alerts in code,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32148965/
我如何在 HP Fortify SSC 上定义警报,只有在发现新问题或自上次扫描以来问题数量增加时才会发出警报。 我可以定义一个包含静态问题数量的警报,但每次警报数量发生变化时都需要手动更新,我想避免
由于未知原因,我的 Alert.alert 拒绝工作。我基本上是在重用之前工作的代码。获取错误: Exception NSArrayl length; unrecognized selector se
我的注销用户功能似乎根本不起作用。我在登录时通过警报调用它,但它似乎没有调用它。如果我尝试在末尾添加“()”,它只会给我一个错误。 loginUser = (email, password) => {
alert() 和 window.alert() 函数有什么区别?看起来效果一样。 最佳答案 因为 window 是全局对象,您可以通过简写调用 alert:alert( 'Hello!' ); 或通
我正在尝试整理此错误消息: Exception '-[_NSDisctionary0 length]: unrecognized selector sent to instance 0x7896412
有什么方法可以改变 JavaScript 中alert 或prompt 的外观吗?诸如添加图像、更改字体颜色或大小之类的事情,以及任何会使它看起来不同的事情。 最佳答案 扩展 Matthew Abbo
我正在尝试创建一个警报,以确保用户提交了正确的信息,如果单击“确定”而不是取消,则单击链接并 发送。我几乎已经实现了,警报激活,但如果单击确定则不会激活。不幸的是,我还不是 js 向导...... 编
看起来 AngularJS $window.alert() 和 Javascript alert() 是一样的。在什么条件下我们应该使用其中的哪一个?还是根本没有区别? 最佳答案 这是一回事——Jav
我的应用需要在不同时间向用户显示一些信息。我决定使用 AlertControllers 但我不能同时显示两个 Alert Controllers。因此我需要知道是否显示了警报 Controller ,
在 Brad's tutorial Alerts 组件使用以下方式导出: export default withAlert(Alerts) 这导致了错误: The above error occurr
我正在使用 Twitter Bootstrap 3 并使用 jQuery AJAX 发送表单数据。这是我的代码: $.ajax({ type: $(form).attr('method
我遇到了 的问题(SSL 警报编号 46) 140097325019584:error:14094416:SSL routines:ssl3_read_bytes:sslv3 alert certif
我正在尝试使用 Alert React Native 中的组件以在 Android 和 iOS 之间创建一致的体验。我正在尝试运行示例警报。我导入了警报组件(为简洁起见省略了其他导入): import
考虑这段代码: var input = document.getElementById("hello"); input.addEventListener('blur', function() {
请检查代码, import { Alert, } from 'react-native'; checkForSendingOtp = () => { let hash = 'aBcDeG
我刚开始学习和练习 React Native,我遇到了第一个我自己似乎无法解决的问题。 我有以下代码,非常简单,但是当我在网络上运行时 Alert.alert() 不起作用。如果我单击该按钮,则没有任
在 Safari 浏览器中遇到一个问题,以下是我的场景(带示例)。 当我点击删除帐户的按钮时,我会打开警告消息。在该警报窗口中有两个操作“确定”和“取消”。如果我单击"is",它将重定向到另一个 UR
使用 Cordova CLI 版本 5.4.1,平台是iOS,在 iOS 模拟器上运行 来 self 应用的 onDeviceReady处理程序,我正在调用一个函数来设置一个 Hook ,以便使用 n
我正在使用 selenium IDE。我需要验证在成功填写数据并单击保存按钮后显示的闪现消息。 我正在使用 assertText css=div.alert.alert-success × Succe
我有一个 .pfx 文件,在 Windows 客户端上使用时可以完美连接到远程服务器。我现在想使用 Linux 客户端连接到服务器。 问题 1) 我使用以下 openssl 命令从 pfx 文件中提取
我是一名优秀的程序员,十分优秀!