使用 flutter_driver 查找颤振三明治菜单按钮

Posted

技术标签:

【中文标题】使用 flutter_driver 查找颤振三明治菜单按钮【英文标题】:Find flutter sandwich menu button using flutter_driver 【发布时间】:2020-09-16 05:01:30 【问题描述】:

使用flutter_driver查找flutter三明治菜单按钮


    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);

button to be identified


 test('test by inserting valid username and login', () async 
      await driver.tap(buttonFinder);

      expect(await driver.getText(loginName), "LoginName");
    );

【问题讨论】:

【参考方案1】:

不是 100% 安全但允许您不使用工具提示的解决方案是:

test('OpenDrawer', () async 
      await driver.tap(find.descendant(
        of: find.byType('AppBar'),
        matching: find.byType('IconButton'),
        firstMatchOnly: true,
      ));
    );

【讨论】:

【参考方案2】:

您所指的三明治菜单称为Drawer,您可以使用它的toolTip 属性点击它。 如果你长按抽屉菜单,它会显示一个工具提示,如下:

然后,在你的flutter驱动测试中,你可以通过使用byToolTip方法声明一个finder来识别这个widget,如下:

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');
      );

【讨论】:

以上是关于使用 flutter_driver 查找颤振三明治菜单按钮的主要内容,如果未能解决你的问题,请参考以下文章

可视化用于颤振测试(或颤振驱动程序)的敲击/手势

所以,因为poseapp依赖于sdk中的音频播放器^0.17.0和flutter_driver any,版本解析失败

Flutter应用程序在使用flutter_driver运行时无法加载Json文件

Flutter:flutter_driver 错误消息和应用程序屏幕在测试时保持黑色

因为sdk的flutter_driver每个版本都依赖crypto 2.1.5,Cruise依赖crypto 3.0.0,所以sdk的flutter_driver是被禁止的

有没有办法在颤振应用程序中使用firebase查找具有相同孩子名字的孩子的总数?