我不确定如何使用FlutterDriver判断小部件当前是否显示.

使用WidgetTester可以很容易地使用例如findsOneWidget来执行此操作.
但是,在使用FlutterDriver进行集成测试期间,不能访问WidgetTester对象.

FlutterDriver.waitFor方法不指示是否在给定的持续时间内找到小部件.

如何使用FlutterDriver判断小部件是否在屏幕上?

推荐答案

Flutter 驱动没有明确的方法来判断窗口小部件是否存在,但我们可以创建一个自定义方法,它将使用waitFor方法来服务于此目的.例如,我在屏幕上有一个简单的text小部件,我将使用自定义方法isPresent编写一个Flutter 驱动测试来判断该小部件是否存在.

主要代码:

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

Flutter相关问答推荐

如何在flater中实现Notch?

Flutter bloc -如何使用BlocBuilder?

所需引用Firebase处不存在任何对象

下拉图标未居中

MobX Build_Runner问题:不生成.G文件(Flutter )

自定义ItemBuilderFlutter

Flutter 蜂窝单元测试

'Flutter的无效常数值错误

SingleChildScrollView在ErrorWidget.builder中不工作

如何处理平台游戏的对象冲突?

Flutter Web Dio XMLHttpRequest 上传大文件时出错

构建上下文不能跨异步间隙使用

Flutter - Stripe:类型List 不是类型Map 的子类型? method_channel_stripe.dart 中的错误:263

在 Flutter 中从 FireStore 获取数据并编译它们需要太多时间

像图像一样Flutter 自定义标签

Android 模拟器在 Apple M2 芯片 EXC_BAD_ACCESS / KERN_INVALID_ADDRESS 上随机崩溃

有没有办法在没有收缩包装的情况下在列中使用 ListView.Builder?

Flutter 动保存新的变量值

如何防止卡子在底部溢出?

Flutter 上Denim blue colored颜色 的 colored颜色 矩阵代码是什么?