Добавить свойство id или name или другие средства идентификации для веб-приложений Flutter?
Создавая веб-приложение Flutter, я пытаюсь использовать фреймворк веб-тестирования пользовательского интерфейса на основе Selenium. К сожалению, мне не удалось идентифицировать HTML-элемент, представляющий определенный виджет флаттера, по его атрибуту id или name. Ключ виджета отсутствует в документе HTML.
Мне удается использовать содержимое текстового виджета, чтобы найти текстовую часть виджета, и я могу найти его родительский элемент, представляющий виджет, содержащий текст, но это не удается для изображений, холста и т. Д.
Есть ли какой-либо механизм, который я могу использовать для добавления идентификатора / имени (или любых других средств идентификации) в суп HTML-тегов?
Есть ли способ с помощью JavaScript пройти по внутреннему логическому дереву виджетов и оттуда завершить представляющий элемент HTML (например, по его расположению и размеру)?
2 ответа
Я не думаю, что это правильный способ использовать какую-либо среду тестирования Selenium для Flutter Web.
Причина в том, что вы (как веб-разработчик) не можете контролировать, как выглядит сгенерированный DOM. Это означает, что вы не можете использовать XPath и другие средства для выбора элементов.
Я полагаю, что единственный способ тестирования приложений Flutter (включая Flutter Web) - использовать драйвер Flutter: https://api.flutter.dev/flutter/flutter_driver/flutter_driver-library.html
В настоящее время вы не можете последовательно добавлять идентификационную информацию для отображения виджетов на разных устройствах.
Однако для достижения своей цели вы можете использовать драйвер Flutter. Пакет 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");
});
Для получения дополнительной информации посетите: