Android アプリケーションのテストを自動化しています。実際のテストを開始する前に、待機したいアプリをロードするときにスプラッシュ スクリーンが表示されます。を使用して、スプラッシュ スクリーンが非表示になるまで待機waitUntilInvisible
するメソッドを作成しました。FluentWait
問題は、スプラッシュ スクリーンのポーリングが、waitUntil
回線に到達してから数秒後にしか開始されないことです。これにより不要な遅延が発生しますが、これを取り除きたいと考えています。
私は何か間違ったことをしていますか?これはおそらく設計/技術的な制限によるものですか?
方法:
public static boolean waitUntilInvisible(AndroidDriver driver, int timeLimitInSeconds, String targetResourceId) {
boolean isElementAbsent;
try {
MobileElement mobileElement = (MobileElement) driver.findElementByAndroidUIAutomator("new UiSelector().resourceId(\"" + targetResourceId + "\")");
Wait wait = new FluentWait(driver).withTimeout(Duration.ofSeconds(timeLimitInSeconds)).pollingEvery(Duration.ofMillis(1000)).ignoring(NoSuchElementException.class);
// For some reason this takes like 5 seconds to start polling for the element.
wait.until(ExpectedConditions.invisibilityOf(mobileElement));
System.out.println("Element "+targetResourceId+"is absent");
return true;
} catch (Exception e) {
isElementAbsent = false;
System.out.println("WaitForAbsence exception:");
System.out.println(e.getMessage());
return false;
}
}
私はそれを使用して呼び出します:
Utilities.waitUntilInvisible(driver, 120, "resourceId");