首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >XCUItest系统警报

XCUItest系统警报
EN

Stack Overflow用户
提问于 2018-02-19 23:48:39
回答 2查看 607关注 0票数 1

我正在尝试使用XCUITest和黄瓜自动化我的应用程序,我不能点击系统警报,如位置和联系人的权限,但不能点击“允许”或“确定”,它是点击“不允许”或“允许”任意。

这是我尝试在步骤定义中使用的代码:

代码语言:javascript
复制
systemAlertMonitorToken = addUIInterruptionMonitor(withDescription: "Location Dialog") { (alert) -> Bool in
    if alert.buttons.matching(identifier: "Allow").count > 0 {
      alert.buttons["Allow"].tap()
      return true
    }
    else if alert.buttons.matching(identifier: "OK").count > 0{
      alert.buttons["OK"].tap()
      return true
    }
    else {
      return false
    }
  }
EN

回答 2

Stack Overflow用户

发布于 2019-02-28 14:59:44

我使用以下代码在我的应用程序中点击权限屏幕:

代码语言:javascript
复制
let springboard = XCUIApplication(bundleIdentifier: "com.apple.springboard")
            
let allowBtn = springboard.buttons[identifier]
            
if allowBtn.waitForExistence(timeout: 4) {
    allowBtn.tap()
}

其中[identifier]将是“允许”或“不允许”或您选择的任何选项。

票数 4
EN

Stack Overflow用户

发布于 2020-01-25 05:05:09

我怀疑使用匹配(identifier:“.count”)允许有问题。也许Xcode认为“不允许”和“允许”按钮是同一个XCUIElement。

如果你知道“允许”和“确定”按钮总是在相同的boundBy位置,你可以点击按钮的位置。我只需要检查按钮是否存在,然后根据按钮的boundBy编号点击按钮。

例如,如果警报有两个按钮,左边的按钮说“允许”,右边的按钮说“不允许”,代码将如下所示:

代码语言:javascript
复制
systemAlertMonitorToken = addUIInterruptionMonitor(withDescription: "Location Dialog") { (alert) -> Bool in
    if alert.buttons["Allow"].exists || alert.buttons["OK"].exists {
        alert.buttons.element(boundBy: 1).tap()
        return true
    }
    else {
        return false
    }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48869601

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档