我正在使用FlutterDriver对Flutter软件包执行集成测试。
当平台为Android时,支架中使用AppBar,而当平台为iOS时,使用CupertinoNavigationBar。
在Android上进行测试时,我可以找到带有以下代码的后退按钮
await driver.tap(find.byTooltip('Back'));
但是,这在iOS上失败。由于按钮是自动生成的,因此我无法以编程方式添加标签。有关如何在iOS上选择它的任何建议?跨平台解决方案的奖励积分。
还有,关于模拟android设备后退按钮点击(在应用程序外部)的任何建议吗?
答案 0 :(得分:2)
await driver.tap(find.pageBack());
答案 1 :(得分:2)
不幸的是,接受的解决方案await driver.tap(find.pageBack())
对我不起作用。
因此我将Key
添加到AppBar
并按如下方式访问BackButton
final appBar = find.byValueKey("appBarKey");
await driver.waitFor(appBar);
final back = find.descendant(
of: appBar,
matching: find.byType('BackButton'),
firstMatchOnly: true,
);
await driver.tap(back);
答案 2 :(得分:1)
结果证明,find.pageBack()
仅在EN语言环境中有效。对于其他语言,它只是找不到小部件。
您可以像这样本地化pageBack
:
SerializableFinder pageBack(String locale) {
switch (locale) {
case "es":
return find.byTooltip("Atrás");
case "fr":
return find.byTooltip("Retour");
case "de":
return find.byTooltip("Zurück");
case "it":
return find.byTooltip("Indietro");
default:
return find.pageBack();
}
}
来源:https://medium.com/@eduard.carreras/flutter-driver-find-pageback-not-localized-56ca092fb026
答案 3 :(得分:0)
我找到了
find.byType(CupertinoNavigationBarBackButton);
我不知道这是或多或少的性能,还是要依靠其他方式来工作