我希望通过日期选择器选择一个日期,作为抖动驱动程序测试的一部分。但是,我似乎无法确切地知道该怎么做?
我已经尝试过使用find.text
和find.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();
}
屏幕截图:
答案 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');
});
测试结果:
在您提供的代码中,您可以尝试以下代码段,即,点击24
,然后直接点击OK
,而不是告诉驱动程序等待OK
按钮找到。
/ p>
await driver.tap(find.text('24'));
await driver.tap(find.text('OK'));
希望这可以帮助您解决问题。