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

时间:2019-06-14 17:27:22

标签: flutter flutter-test

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

使用WidgetTester确实很容易使用例如findsOneWidget
但是,在使用public class Q56601920 { public static void main(String[] args) { String regex = ".*ROCK=\"[^\\s\"]{5,}\".*"; String[] tests = { "ROCK=\"U3w9kE_ilAuWm3X1gFggmPBnyzE=\"", "xxxxxxxxROCK=\"U3w9kE_ilAuWm3X1gFggmPBnyzE=\"xxxxxxxx", "ROCK=\"U3w9kE_ilAuWm3X1gFggmPBnyzE=\",ROLL=\"U3w9kE_ilAuWm3X1gFggmPBnyzE=\"", "ROCK=\"U3w9kE ilAuWm3X1gFggmPBnyzE=\"", "ROCK=\"U3w9kE ilAuWm3X1gFggmPBnyzE=", "ROCK=\"U3w9\"" }; for (String stringToBeTested : tests) { if (stringToBeTested.matches(regex)) { System.out.println(stringToBeTested + " matches regexp"); } else { System.out.println(stringToBeTested + " not matches regexp"); } } } } 进行集成测试期间,无法访问FlutterDriver对象。

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

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

1 个答案:

答案 0 :(得分:4)

Flutter驱动程序没有显式方法来检查小部件是否存在/存在,但是我们可以创建一个自定义方法,该方法将使用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;
  }
}

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

enter image description here

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

enter image description here

希望这会有所帮助。