Найдите кнопку меню флаттер-сэндвич с помощью flutter_driver
Найдите кнопку меню флаттер-сэндвич с помощью flutter_driver
Scaffold(
key: widget.scaffoldKey,
drawer: Observer(builder: (BuildContext context) {
return DrawerMenu(
user: controller.appStore.user,
onTapLogout: controller.loginController.logout,
);
}),
appBar: widget.appBar,
body: widget.body);
кнопка, которую нужно идентифицировать
test('test by inserting valid username and login', () async {
await driver.tap(buttonFinder);
expect(await driver.getText(loginName), "LoginName");
});
1 ответ
Решение
Сэндвич-меню, о котором вы говорите, называется Drawer
, и вы можете нажать на него, используя его toolTip
свойство. Если вы долго нажимаете на меню ящика, оно покажет вам всплывающую подсказку, как показано ниже:
Затем в тесте драйвера флаттера вы можете идентифицировать этот виджет, объявив средство поиска с помощью byToolTip
метод, как показано ниже:
final drawerFinder = find.byTooltip('Open navigation menu');
А затем напишите свой тест как:
test('tap on drawer menu', () async {
await driver.waitFor(drawerFinder);
await driver.tap(drawerFinder);
print('clicked on drawer');
});
Решение, которое не является 100% безопасным, но позволяет не использовать всплывающую подсказку, следующее:
test('OpenDrawer', () async {
await driver.tap(find.descendant(
of: find.byType('AppBar'),
matching: find.byType('IconButton'),
firstMatchOnly: true,
));
});