xCode 7.1 中警报的 UITesting

2024-05-12

我正在 xCode 7.1 中编写 UITests,并且在测试警报时遇到问题(在我的情况下允许通知)。 创建测试时,xCode 会写入以下代码:

app.alerts["\U201cAppName\U201d Would Like to Send You Notifications"].collectionViews.buttons["OK"].tap()

这会立即导致错误:

文字中的转义序列无效

所以我将 xCode 的代码替换为:

app.alerts["\u{201c}AppName\u{201d} Would Like to Send You Notifications"].collectionViews.buttons["OK"].tap()

但是当我运行 UITest 时它失败并显示消息:

UI 测试失败 - 未找到警报的匹配项

代码也一样

app.alerts["“AppName” Would Like to Send You Notifications"].collectionViews.buttons["OK"].tap()

我也尝试过

app.alerts.collectionViews.buttons["OK"].tap()

正如人们建议的那样here https://stackoverflow.com/questions/31746225/xcode7-xcode-ui-tests-how-to-handle-location-service-alert,但同样的故事...

相信很多人在 xCode 7.1 中进行 UITesting 时都遇到过这样的问题

请分享您的经验或任何解决建议。 提前致谢!


请参阅下面的示例

import XCTest

let systemAlertHandlerDescription = "systemAlertHandlerDescription"

class LoginPerformingTestCase: XCTestCase {

var systemAlertMonitorToken: NSObjectProtocol? = nil

override func setUp() {
    continueAfterFailure = false

    let app = XCUIApplication()
    app.launchArguments = [TestingEnvironment.resetLaunchArgument, TestingEnvironment.testingEnvironmentArgument]
    app.launch()

    systemAlertMonitorToken = addUIInterruptionMonitorWithDescription(systemAlertHandlerDescription) { (alert) -> Bool in
        if alert.buttons.matchingIdentifier("OK").count > 0 {
            alert.buttons["OK"].tap()
            return true
        } else {
            return false
        }
    }
}

override func tearDown() {
    if let systemAlertMonitorToken = self.systemAlertMonitorToken {
        removeUIInterruptionMonitor(systemAlertMonitorToken)
    }

    super.tearDown()
}

func loginWithApp(app: XCUIApplication) {
    let signInButton = app.buttons["SIGN IN"]
    signInButton.tap()
    let emailAdressTextField = app.textFields.matchingIdentifier("EmailAddress").elementBoundByIndex(0)
    emailAdressTextField.tap()
    emailAdressTextField.typeText("[email protected] /cdn-cgi/l/email-protection")

    let passwordSecureTextField = app.secureTextFields["Password"]
    passwordSecureTextField.tap()
    passwordSecureTextField.typeText("1111")
    signInButton.tap()

    let exists = NSPredicate(format: "exists == 1")
    let iconAlarmButton = app.buttons["icon alarm"]

    let expectation = expectationForPredicate(exists, evaluatedWithObject: iconAlarmButton, handler: nil)
    waitForExpectationsWithTimeout(60) { (error) -> Void in
        if let _ = error {
            expectation.fulfill()
        }
    }

    app.tap()//workaround to hide system alert
    let darkNavigaitonBar = app.otherElements.matchingIdentifier("darkNavigationView").elementBoundByIndex(0)
    if darkNavigaitonBar.hittable == true {
        app.tap()
    }

}

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

xCode 7.1 中警报的 UITesting 的相关文章

随机推荐

  • 有没有办法跨应用程序使用 ASP.NET Bundles

    我使用 ASP NET Web Optimization 包来捆绑和缩小 javascript css 文件 我有一些使用相同 javascript css 文件的 ASP NET 应用程序 现在我在每个应用程序中设置捆绑包 我想知道是否有
  • 如何附加到 xml

    我有这个xml
  • 从窗口内容截取屏幕截图(无边框)

    我正在寻找有关如何使用 C 将表单内容保存在位图中的解决方案 我已经尝试过使用 DrawToBitmap 但它捕获了所有带边框的窗口 这就是这段代码的结果 public static Bitmap TakeDialogScreenshot
  • 为什么结构中“[0]byte”的位置很重要?

    0 byte在golang中不应该占用任何内存空间 但这两个结构体的大小不同 type bar2 struct A int 0 byte type bar3 struct 0 byte A int 那么为什么这个位置 0 byte这里重要吗
  • 指定的 sqlite3 gem 未加载

    虽然我对 Ruby on Rails 比较陌生 但我开发应用程序已经有一段时间了 我似乎遇到的问题是 当我创建一个新的 Rails 应用程序 本地 使用 c9 时 当我启动 apache 服务器时 我似乎收到此错误 Specified sq
  • 无法仅在控制台中启动 androidstudio

    你好 我的问题是下一个 我下载了Android Studio如果我去 路径 android studio bin 我执行studio sh 我收到以下错误 No JDK found Please validate either STUDIO
  • 无法使用 wxPython 打开在 folium 中生成的本地 HTML 文件

    我目前正在尝试将 GPS 坐标绘制为地图上的标记 并在 wxPython 中显示结果 我使用 folium 绘制坐标标记并生成 HTML 文件 import folium fmap folium Map 43 5321 172 6362 z
  • Docker 无法解析主机名

    我需要知道在同一台机器上运行的某些容器的主机名 或 IP 地址 正如我已经评论过的here https stackoverflow com questions 26269870 how do docker containers resolv
  • 返回早期概念在 PHP 中有何用处

    我已经在以下链接中了解了最佳实践https pear php net manual en standards bestpractices php https pear php net manual en standards bestprac
  • 通过管道连接到 findstr 的输入

    我有一个文本文件 其中包含宏名称列表 每行一个 我的最终目标是打印宏名称在当前目录的文件中出现的次数 宏的名称位于C temp macros txt type C temp macros txt在命令提示符下可以正常打印列表 现在我想将该输
  • 如何在 Apache Spark 中通过 DStream 使用特征提取

    我有通过 DStream 从 Kafka 到达的数据 我想进行特征提取以获得一些关键词 我不想等待所有数据的到达 因为它是可能永远不会结束的连续流 所以我希望以块的形式执行提取 如果准确性会受到一点影响 对我来说并不重要 到目前为止 我整理
  • 纯函数怎么能做IO呢?

    我最近了解到莫纳德随机数 http hackage haskell org package MonadRandom 0 1 13 docs Control Monad Random Class html t 3aMonadRandom图书馆
  • 什么是堆栈随机化以及它如何防止缓冲区溢出攻击?

    我从一本书上读到缓冲区溢出可能被用作注入攻击系统的漏洞代码的一种方式 和堆栈随机化是防止此类攻击的有效方法之一 我不明白是什么堆栈随机化以及它如何防止这些攻击 代替堆栈随机化克服 或更难 堆栈或缓冲区溢出的技术称为地址空间布局随机化 ASL
  • 枚举器上的 [[maybe_unused]]

    查看规格 maybe unused http en cppreference com w cpp language attributes 它指出 出现在类 typedef 变量 非静态数据成员 函数 枚举或枚举器的声明中 如果编译器对未使用
  • 多个资源文件夹

    我正在尝试在我的 Android 项目中添加一个资源文件夹 我创建了一个新文件夹额外分辨率所以我的项目结构如下所示 src main res layout etc extra res layout 所以我将其添加到构建 gradle and
  • 如何找到查询结果的大小

    我在 Rails 中有以下查询 records Record select y id source where source gt source y id gt y id group y id source having count 1 如
  • 在 HTML 电子邮件中嵌入附加图像

    如果我将图像附加到电子邮件中 如何将其放置在 HTML 内容中 我尝试仅使用文件名作为图像源 但这似乎不起作用 更具体地说明如何构建 HTML 邮件消息 结果将是一条多部分 MIME 消息 其中包含 text html 部分 如果您确实使用
  • React setState回调返回值

    我是 React 新手 我希望实现这种流程 set the state execute a function f an async one which returns a promise set the state again return
  • 使用mysql数据按高低价格排序

    这是我所拥有的以及我想做的 我的 MySql 数据库中有 12 个项目 4 个产品为 4 99 4 个产品为 3 99 4 个产品为 2 99 我意识到我可以像这样查询数据库 它会给我一个该价格的产品列表
  • xCode 7.1 中警报的 UITesting

    我正在 xCode 7 1 中编写 UITests 并且在测试警报时遇到问题 在我的情况下允许通知 创建测试时 xCode 会写入以下代码 app alerts U201cAppName U201d Would Like to Send Y