2017-09-18 1 views
0

au début de mon test de l'interface utilisateur Jerejeter les services de localisation demande de dialogue

addUIInterruptionMonitor(withDescription: "Location Dialog") { (alert) -> Bool in 
    let button = alert.buttons["Allow"] 
    if button.exists { 
     snapshot("request location service") 
     button.tap() 
     return true 
    } 
    return false 
} 

qui devrait rejeter les services de localisation de la demande de dialogue, mais il ne fait rien et il n'a jamais atteint le gestionnaire. J'ai également essayé de mettre ce code dans setUp() mais cela n'a pas fonctionné non plus.

Je pense que le problème pourrait être que la première chose qui se passe dans l'application est que la boîte de dialogue est affiché, il peut être trop tôt (il peut arriver avant addUIInterruptionMonitor est appelé)

Comment puis-je résoudre ce problème?

Répondre

1

Vous devez interagir avec l'application juste après l'ajout de UIInterruptionMonitor. Cela peut être un simple robinet:

addUIInterruptionMonitor(withDescription: "Location Dialog") { (alert) -> Bool in 
    let button = alert.buttons["Allow"] 
    if button.exists { 
    button.tap() 
     return true 
    } 
    return false 
} 
// interact with the app 
app.tap() 

Si app.tap() interfère avec votre test, vous pouvez également utiliser app.swipeUp()

Soyez conscient que le service de localisation de dialogue d'autorisation modifié en iOS11. Il y a maintenant 3 boutons, donc vous devez utiliser alert.buttons["Always Allow"] pour fermer la boîte de dialogue.

enter image description here