flutter - 如何使用 FlutterDriver 检查小部件是否可见

我不确定如何使用 FlutterDriver 检查小部件当前是否显示。 .

使用 WidgetTester这真的很容易使用例如findsOneWidget .
但是,在使用 FlutterDriver 的集成测试期间,无法访问 WidgetTester 对象。

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

如何使用 FlutterDriver 检查小部件是否在屏幕上?

最佳答案

Flutter Driver 没有明确的方法来检查小部件是否存在/存在,但我们可以创建一个自定义方法,使用 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;
  }
}

运行测试检测到小部件存在:

如果我注释掉 text 小部件代码然后运行测试,它会检测到该小部件不存在:

https://stackoverflow.com/questions/56602769/

相关文章:

dart - 桶填充 flutter

flutter - 从网络加载图像时如何修复 Listview 滚动卡顿

dart - Flutter 自定义范围 slider

flutter - 如何从 TextField 中删除内容填充?

android - Flutter 项目超过 .dex 方法引用计数限制

dart - Flutter 不会使用不同的参数重建相同的小部件

dart - Flutter:如何正确实现 FlutterError.OnError

dart - 在 RichText 小部件中向 TextSpan 背景添加额外的填充

android - 如何禁用使用 Flutter 1.0 在 Google map 中点击标记时出现

text - 如何使用 Flutter 编写带有要点的段落?