我正在尝试使用XCUITest和Cucumberish自动化我的应用程序,我无法点击系统提醒,例如位置和联系人的权限,但我无法点击"允许"或者"好的",它点击"不允许"或者"允许"任意&#34 ;.
这是我在我的步骤定义中尝试使用的代码:
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
}
}
答案 0 :(得分:1)
我使用以下代码在我的应用中点击权限屏幕:
let springboard = XCUIApplication(bundleIdentifier: "com.apple.springboard")
let allowBtn = springboard.buttons[identifier]
if allowBtn.waitForExistence(timeout: 4) {
allowBtn.tap()
}
[标识符]为“允许”或“不允许”或您选择的任何选项。
答案 1 :(得分:0)
我怀疑使用match(identifier:“ Allow”)。count存在问题。也许Xcode认为“ Dont Allow”和“ Allow”按钮是相同的XCUIElement。
如果您知道“允许”和“确定”按钮将始终位于相同的boundBy位置,则可以按该位置点按该按钮。我只需要检查按钮的存在,然后根据按钮的boundBy数字点击按钮即可。
例如,如果警报具有2个按钮,则左侧按钮显示“允许”,而右侧按钮显示“不允许”,代码如下:
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
}
}