Как проверить видимость виджета с помощью FlutterDriver - PullRequest
7 голосов
/ 14 июня 2019

Я не уверен, как проверить, отображается ли виджет в данный момент или нет, используя FlutterDriver.

Использование WidgetTester это действительно легко выполнить, например, используя findsOneWidget.
Однако во время интеграционных тестов с использованием FlutterDriver доступ к объекту WidgetTester отсутствует.

Метод FlutterDriver.waitFor не указывает, был ли виджет найден за указанный промежуток времени.

Как проверить, отображается ли виджет на экране, используя FlutterDriver?

1 Ответ

4 голосов
/ 19 июня 2019

Flutter Driver не имеет явного метода для проверки наличия / наличия виджета, но мы можем создать собственный метод, который будет служить цели, используя метод waitFor. Например, у меня есть простой text виджет на экране, и я напишу тест драйвера флаттера, чтобы проверить, присутствует ли этот виджет или нет, используя пользовательский метод isPresent.

Основной код:

body: Center(
      child:
      Text('This is Test', key: Key('textKey'))

Проверка драйвера Flutter для проверки наличия или отсутствия данного виджета, как показано ниже:

test('check if text widget is present', () async {
      final isExists = await isPresent(find.byValueKey('textKey'), driver);
      if (isExists) {
        print('widget is present');
      } else {
        print('widget is not present');
      }
    });

isPresent - это пользовательский метод, определение которого приведено ниже:

isPresent(SerializableFinder byValueKey, FlutterDriver driver, {Duration timeout = const Duration(seconds: 1)}) async {
  try {
    await driver.waitFor(byValueKey,timeout: timeout);
    return true;
  } catch(exception) {
    return false;
  }
}

Запуск теста обнаруживает наличие виджета:

enter image description here

Если я закомментирую код виджета text и затем выполню тест, он обнаружит, что виджет отсутствует:

enter image description here

Надеюсь, это поможет.

...