我不确定如何使用FlutterDriver
判断小部件当前是否显示.
使用WidgetTester
可以很容易地使用例如findsOneWidget
来执行此操作.
但是,在使用FlutterDriver
进行集成测试期间,不能访问WidgetTester
对象.
FlutterDriver.waitFor
方法不指示是否在给定的持续时间内找到小部件.
如何使用FlutterDriver
判断小部件是否在屏幕上?
我不确定如何使用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;
}
}
运行测试检测小部件是否存在:
如果我注释掉text
个小部件代码,然后运行测试,它会检测到小部件不存在: