Добавить идентификатор или имя свойства или другие средства идентификации для веб-приложений Flutter? - PullRequest
8 голосов
/ 29 января 2020

При написании веб-приложения Flutter я пытаюсь использовать инфраструктуру Web-UI-Testing на основе Selenium. К сожалению, мне не удается идентифицировать HTML -элемент, представляющий определенный виджет-флаттер по его атрибуту id или name. Ключ виджета отсутствует в документе HTML.

Мне удается использовать содержимое текстового виджета, чтобы найти текстовую часть виджета, и найти его родительский элемент, представляющий виджет, содержащий текст, но это не удается для изображений, canvas et c.

Можно ли использовать какой-либо механизм для добавления идентификатора / имени (или любого другого средства идентификации) в суп * HTML tag?

Использование JavaScript , есть ли способ пройти по внутреннему логическому дереву виджетов и оттуда завершить представляющий элемент HTML (например, по его расположению и размеру)?

Ответы [ 2 ]

4 голосов
/ 05 февраля 2020

Я не думаю, что это правильный способ использовать какую-либо среду тестирования Selenium для Flutter Web.

Причина этого в том, что вы (как веб-разработчик) не можете контролировать, как выглядит сгенерированный DOM. Это означает, что вы не можете использовать XPath и другие средства для выбора элементов.

Я полагаю, что единственный способ тестирования приложений Flutter (включая Flutter Web) - использовать драйвер Flutter: https://api.flutter.dev/flutter/flutter_driver/flutter_driver-library.html

1 голос
/ 10 февраля 2020

В настоящее время вы не можете последовательно добавлять идентификационную информацию для рендеринга виджетов на разных устройствах.

Для достижения своей цели вы можете использовать Flutter Driver. Пакет flutter_driver Dart специально разработан для тестирования пользовательского интерфейса приложений Flutter и предоставляет API для приложений на реальных устройствах, симуляторах или эмуляторах. Чтобы начать тестирование драйвера Flutter, вам необходимо:

  • Получить пакет flutter_driver
  • Создать тестовый каталог
  • Создать инструментальное приложение для тестирования
  • Создание тестов пользовательского интерфейса с помощью API-интерфейса flutter_driver
  • Выполнение тестов пользовательского интерфейса на реальном устройстве или в симуляторе

Чтобы найти виджет Flutter, вы можете использовать SerializableFinder, Например:

test('verify the text on home screen', () async {
    SerializableFinder message = find.text("Widget Title");
    await driver.waitFor(message);
    expect(await driver.getText(message), "Widget Title");
});

Для получения дополнительной информации проверьте:

...