システム警告を消す方法を考えましたが、システムアラートが表示されないので、表示するのを待つことができません。私はapp.debugDescriptionとapp.alerts.countでデバッグしようとしましたが、運はありませんでした。位置アラート(システムアラート)が表示されるのを待つ方法
答えて
addUIInterruptionMonitor:withDescription:handler:
を使用して割り込みモニタを登録します。システムアラートが表示されるのを待つには、処理されたときにハンドラを使用して変数を設定し、アラートを待つときにアプリケーションとのやり取りを実行します。
対話はトリガー割り込みの監視対象であるため、待機中は引き続きアプリケーションと対話する必要があります。 @Olethaが書いたよう
class MyTests: XCTestCase {
let app = XCUIApplication()
func testLocationAlertAppears() {
var hasDismissedLocationAlert = false
let monitor = addUIInterruptionMonitor(withDescription: "LocationPermissions") { (alert) in
// Check this alert is the location alert
let location = NSPredicate(format: "label CONTAINS 'Location'")
if alert.staticTexts.element(matching: location).exists {
// Dismiss the alert
alert.buttons["Allow"].tap()
hasDismissedLocationAlert = true
return true
}
return false
}
// Wait for location alert to be dismissed
var i = 0
while !hasDismissedLocationAlert && i < 20 {
// Do some benign interaction
app.tap()
i += 1
}
// Clean up
removeUIInterruptionMonitor(monitor)
// Check location alert was dismissed
XCTAssertTrue(hasDismissedLocationAlert)
}
}
おかげでオレサ! –
あなたはaddUIInterruptionMonitor
を使用する必要があります。
ここで難しいのは、システムアラートボタンがアクセシビリティ識別子を使用しないため、テキストを検索してタップする必要があることです。このテキストは、シミュレータ/デバイスを実行している言語に翻訳されています。これは、英語の横にある複数の言語のテストを実行する場合には難しい場合があります。
簡略化するためにAutoMate frameworkを使用できます。 locationAlert.allowElement.tap()
上記の例では
func locationWhenInUse() {
let token = addUIInterruptionMonitor(withDescription: "Location") { (alert) -> Bool in
guard let locationAlert = LocationWhenInUseAlert(element: alert) else {
XCTFail("Cannot create LocationWhenInUseAlert object")
return false
}
locationAlert.allowElement.tap()
return true
}
// Interruption won't happen without some kind of action.
app.tap()
// Wait for given element to appear
wait(forVisibilityOf: locationPage.requestLabel)
removeUIInterruptionMonitor(token)
}
自動化は、iOSシミュレータでサポートされている任意の言語を扱うことができるので、可能である:ここでは、自動化を使用して、システムのアラートに対処する方法の例を持っています。あなたがこれまでに試してみました何PermissionsTests.swift
- 1. ログインシェルにメッセージが表示されるのを待つ方法
- 2. 要素が表示されるのを待つ方法
- 3. ポップインが表示されるまで待つ方法は?
- 4. アンドロイドでRecyclerの表示位置を見つける方法は?
- 5. HtmlElementが.NETのWebブラウザーに表示されるのを待つ方法
- 6. Swift 3で表示されるUITouchの位置を検出する方法
- 7. アラートが表示されない - (void)alertView:clickedButtonAtIndex:method
- 8. キャプチャにアラートが表示されない
- 9. jqueryアラートが表示されない
- 10. アラートが表示されない
- 11. APN - アラートが表示されない
- 12. GeoFenceアラートが表示されない
- 13. アラートが表示されない
- 14. JavaScriptアラートが表示されません
- 15. Android:オブジェクトが表示されるのを待つ
- 16. Webdriver TEXTが表示されるのを待つ
- 17. AutoITコントロールエレメントが表示されるのを待つ
- 18. 現在の位置に表示位置を表示+地図表示
- 19. Cのリッチテキストボックスにカーソルの位置を表示する方法
- 20. Android PopupMenuが間違った位置に表示される
- 21. 現在の位置がdidFinishLaunchingWithOptionsに設定されるまで待つ
- 22. アラートを一度だけ表示させる方法
- 23. 正確な右クリックイベントの位置を表示する方法
- 24. ビューバーの位置をアクションバーに表示する方法は?
- 25. osmdroidに現在の位置ポインタを表示する方法は?
- 26. ブートストラップスライダでマウスの位置にツールヒント値を表示する方法
- 27. テキストを所定の位置に表示する方法は?
- 28. PHP Googleマップ - 位置が赤いバルーンが表示されない
- 29. インストゥルメント - リーク:コードの位置が表示されない拡張リーク
- 30. WPテーマチェックプラグインのエラーで位置が表示されない
:自動化を使用して、システムのアラートに対処する方法の詳細例については
はに見てください?を参照してください:[質問]。 [MCVe]を投稿してください。あなたはまた、尋ねる前に2分間のサイトツアーを完了させるのに気にしませんでした。 –