Flutter Driver从日期选择器中选择日期

时间:2019-10-08 07:48:24

标签: flutter flutter-test

我希望通过日期选择器选择一个日期,作为抖动驱动程序测试的一部分。但是,我似乎无法确切地知道该怎么做?

我已经尝试过使用find.textfind.bySemanticsLabel,但到目前为止还没有运气。

我的代码:

Future<void> executeStep() async {
  await FlutterDriverUtils.waitForFlutter(world.driver);
  NewOrderForm newOrderForm = NewOrderForm(world.driver);
  await newOrderForm.setFieldKontrak();
  //Open Date Picker
  await newOrderForm.setDateKontrak();
  //Select date 24
  await driver.waitFor(find.bySemanticsLabel('24'));
  await driver.tap(find.text('24'),timeout: Duration(seconds: 15));
  await driver.waitFor(find.text('OK'));
  await driver.tap(find.text('OK'));
  await newOrderForm.setProyekField();

}

屏幕截图:

Demo

1 个答案:

答案 0 :(得分:1)

我运行了一个示例测试,该测试从datepicker中选择一个日期,并且效果很好。以下是我的工作:

main.dart单击打开的RaisedButton时会显示一个简单的DatePicker

return Scaffold(
      body: Center(
        child: RaisedButton(
          onPressed: () {
            _showDatePicker();
          },
          child: Text('Click')
        )
      )
    );

void _showDatePicker() async {
    DateTime picked = await showDatePicker(
        context: context,
        initialDate: new DateTime.now(),
        firstDate: new DateTime(2019),
        lastDate: new DateTime(2021)
    );
    if(picked != null) setState(() => _value = picked.toString());
  }

下面是颤振驱动程序测试,它首先识别RaisedButton->点击它->查找要选择的日期->点击它->点击“确定”

test('datepicker test', () async {
        final dateButton = find.text('Click');
        await driver.waitFor(dateButton);
        await driver.tap(dateButton);
        await driver.tap(find.text('15'));
        await driver.tap(find.text('OK'));
        print('October 15 selected and tapped OK');
      });

测试结果:

enter image description here

在您提供的代码中,您可以尝试以下代码段,即,点击24,然后直接点击OK,而不是告诉驱动程序等待OK按钮找到。

/ p>

await driver.tap(find.text('24'));
  await driver.tap(find.text('OK'));

希望这可以帮助您解决问题。