静的なテキスト要素の値をチェックし、数秒待ってから変更を確認するUIテストがあります。階層が更新されていないため、最初は機能しませんでした。私はログにこれを気付いた。アクセシビリティ階層のキャッシュをクリア/リフレッシュする方法はありますか?
使用、キャッシュされたアクセシビリティ階層は
のために私は単に/メニューや開口部にタップを追加するイベントが合成され、階層が更新されるように、それを閉じることでこれを回避するに置かれています。
しかし、キャッシュを直接クリアする方法や強制的に更新する方法があった方が良いでしょう。私はAPIで1つを見つけませんでした。何か不足していますか?
アイデア?
これは私がやっていることです。
XCTAssertEqual(app.staticTexts["myText"].label, "Expected 1")
sleep(20)
menu.tap()
sleep(1)
menu.tap()
XCTAssertEqual(app.staticTexts["myText"].label, "Expected 2")
私は、これはどちらかMYTEXT年代まで待ちます
let myText = app.staticTexts["myText"]
let waitFor = NSPredicate(format: "label = 'Expected 2'")
label.tap()
self.expectationForPredicate(waitFor, evaluatedWithObject: myText, handler: nil)
self.waitForExpectationsWithTimeout(2.0, handler: nil)
...の線に沿って、それは
XCTAssertEqual(app.staticTexts["myText"].label, "Expected 1")
sleep(20)
app.elements.refresh()
XCTAssertEqual(app.staticTexts["myText"].label, "Expected 2")
使用しているコードを含めることはできますか?あなたは 'expectationForPredicate'と' waitForExpectationsWithTimeout'を使って待っていますか? – Michael
それは、私がここに来たのは同じような問題のためです。私は画面上のボタンを移動するmyButton.tap()をやっています。その後、おそらくmyButtonは別のボタンを参照しています。恐らくキャッシングマジック – Michael
が上に追加されています。あなたの場合、私はあなたに反対の問題があると思います。イベントを合成するボタンをタップすると、ボタンをタップするとキャッシュがクリアされるように要素階層がリロードされます。 –