I am trying to dismiss alerts on my XCUITest suite, I am currently using
app.alerts.buttons["OK"].tap()
Using this dismisses the alert, but then the application carries on trying to tap the button and then fails with the error message "UI TESTING FAILURE- No matches found for alert"
This is the console output
t = 0.00s Start Test at 2016-11-03 14:07:30.827
t = 0.00s Set Up
t = 0.00s Launch uk.co.myapp
t = 4.89s Waiting for accessibility to load
t = 12.55s Wait for app to idle
t = 18.46s Snapshot accessibility hierarchy for uk.co.myapp
t = 19.24s Find: Descendants matching type Button
t = 19.25s Find: Elements matching predicate '"Enable notifications" IN identifiers'
t = 19.26s Tap "Enable notifications" Button
t = 19.26s Wait for app to idle
t = 19.40s Find the "Enable notifications" Button
t = 19.40s Snapshot accessibility hierarchy for uk.co.myapp
t = 27.43s Find: Descendants matching type Button
t = 27.48s Find: Elements matching predicate '"Enable notifications" IN identifiers'
t = 27.52s Wait for app to idle
t = 27.93s Synthesize event
t = 28.31s Wait for app to idle
t = 33.94s Tap "OK" Button
t = 33.94s Wait for app to idle
t = 35.19s Find the "OK" Button
t = 35.20s Snapshot accessibility hierarchy for uk.co.myapp
t = 39.68s Find: Descendants matching type Alert
t = 39.69s Wait for app to idle
t = 39.82s App event loop idle notification not received, will attempt to continue.
t = 39.82s App animations complete notification not received, will attempt to continue.
t = 39.83s Check for UI interruption: Descendants matching type Alert
t = 39.83s Snapshot accessibility hierarchy for com.apple.springboard
t = 39.93s Find: Descendants matching type Alert
t = 39.94s Find the "“VoucherCodes” Would Like to Send You Notifications" Alert
t = 39.94s Use cached accessibility hierarchy for com.apple.springboard
t = 39.97s Find: Descendants matching type Alert
t = 39.97s Find: Identity Binding
t = 39.98s Use cached accessibility hierarchy for com.apple.springboard
t = 39.99s Find: Descendants matching type Alert
t = 40.00s Find: Identity Binding
t = 40.01s Find: Descendants matching type Button
t = 40.01s Find: Elements matching predicate 'userTestingAttributes CONTAINS "cancel-button"'
t = 40.01s Get number of matches for: Descendants matching type Button
t = 40.13s Snapshot accessibility hierarchy for com.apple.springboard
t = 40.23s Find: Descendants matching type Alert
t = 40.23s Find: Identity Binding
t = 40.24s Find: Descendants matching type Button
t = 40.24s Get all elements bound by accessibility element for: Elements matching predicate 'userTestingAttributes CONTAINS "default-button"'
t = 40.34s Snapshot accessibility hierarchy for com.apple.springboard
t = 40.43s Find: Descendants matching type Alert
t = 40.45s Find: Identity Binding
t = 40.46s Find: Descendants matching type Button
t = 40.46s Find: Elements matching predicate 'userTestingAttributes CONTAINS "default-button"'
t = 40.47s Use cached accessibility hierarchy for com.apple.springboard
t = 40.49s Find: Descendants matching type Alert
t = 40.49s Find: Identity Binding
t = 40.50s Find: Descendants matching type Button
t = 40.50s Find: Elements matching predicate 'userTestingAttributes CONTAINS "default-button"'
t = 40.50s Find: Identity Binding
t = 40.50s Tap "OK" Button
t = 40.50s Wait for app to idle
t = 40.61s App event loop idle notification not received, will attempt to continue.
t = 40.61s App animations complete notification not received, will attempt to continue.
t = 40.62s Find the "OK" Button
t = 40.62s Snapshot accessibility hierarchy for com.apple.springboard
t = 40.70s Find: Descendants matching type Alert
t = 40.71s Find: Identity Binding
t = 40.71s Find: Descendants matching type Button
t = 40.71s Find: Elements matching predicate 'userTestingAttributes CONTAINS "default-button"'
t = 40.72s Find: Identity Binding
t = 40.72s Wait for app to idle
t = 40.84s App event loop idle notification not received, will attempt to continue.
t = 40.84s App animations complete notification not received, will attempt to continue.
t = 40.84s Synthesize event
t = 41.17s Wait for app to idle
t = 41.43s App event loop idle notification not received, will attempt to continue.
t = 41.43s App animations complete notification not received, will attempt to continue.
t = 41.44s Snapshot accessibility hierarchy for com.apple.springboard
t = 41.52s Find: Descendants matching type Alert
t = 41.53s Find: Identity Binding
t = 41.54s Wait for view controller view-did-disappear
t = 42.21s Snapshot accessibility hierarchy for uk.co.myapp
t = 45.68s Find: Descendants matching type Alert
t = 45.69s Wait for app to idle
t = 46.82s Find the "OK" Button (retry 1)
t = 46.82s Snapshot accessibility hierarchy for
myapp t = 50.18s Find: Descendants matching type Alert t = 50.19s Wait for app to idle t = 51.38s Find the "OK" Button (retry 2) t = 51.38s Snapshot accessibility hierarchy for uk.myapp t = 55.06s Find: Descendants matching type Alert t = 55.06s Wait for app to idle t = 55.44s Assertion Failure: signUpSetUp.swift:21: UI Testing Failure - No matches found for Alert Query input was {( Application 0x7fb51cf80840: {{0.0, 0.0}, {375.0, 667.0}}, label
Is there a better way of solving this issue? Or is there a solution to where I have gone wrong? Been puzzled on this for a while now!
I improve the answer of @user3271402
addUIInterruptionMonitorWithDescription("alert description") { (alert) -> Bool in
let alertButton = alert.buttons["OK"]
if alertButton.exists {
alertButton.tap()
return true
}
return false
}
app.tap()
Just tap if the alert exists. If the alert doesn't happen return false and after tap the app and the end.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With