diff --git a/packages/flutter_driver/lib/src/extension.dart b/packages/flutter_driver/lib/src/extension.dart index d4fe5bd43bd..25fc6a266a3 100644 --- a/packages/flutter_driver/lib/src/extension.dart +++ b/packages/flutter_driver/lib/src/extension.dart @@ -120,7 +120,14 @@ class FlutterDriverExtension { Future getHealth(GetHealth command) async => new Health(HealthStatus.ok); /// Runs [locator] repeatedly until it finds an [Element] or times out. - Future _waitForElement(String descriptionGetter(), Element locator()) { + Future _waitForElement(String descriptionGetter(), Element locator()) async { + // Short-circuit if the element is already on the UI + Element element = locator(); + if (element != null) { + return element; + } + + // No element yet, so we retry on frames rendered in the future. Completer completer = new Completer(); StreamSubscription subscription;