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

How to check if widget is visible using FlutterDriver

我不确定如何使用 FlutterDriver.

检查当前是否显示小部件

使用 WidgetTester this is really easy to perform using e.g. findsOneWidget.
但是,在使用 FlutterDriver 进行集成测试期间,无法访问 WidgetTester 对象。

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

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

Flutter Driver 没有明确的方法来检查小部件是否存在/存在,但我们可以创建一个自定义方法来使用 waitFor 方法来达到目的。例如,我在屏幕上有一个简单的 text 小部件,我将使用自定义方法编写一个 flutter 驱动程序测试来检查该小部件是否存在 isPresent.

主要代码:

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 小部件代码然后 运行 测试,它检测到小部件不存在: