Flutter 如何使用驱动程序以编程方式查找iOS后退按钮
我正在使用来执行包的集成测试 当平台为Android时,脚手架中使用an,当平台为iOS时,使用a 在Android上测试时,我可以找到带有以下代码的后退按钮Flutter 如何使用驱动程序以编程方式查找iOS后退按钮,flutter,flutter-test,Flutter,Flutter Test,我正在使用来执行包的集成测试 当平台为Android时,脚手架中使用an,当平台为iOS时,使用a 在Android上测试时,我可以找到带有以下代码的后退按钮 await driver.tap(find.byTooltip('Back')); 但是,这在iOS上失败。由于按钮是自动生成的,我无法通过编程方式添加标记。关于如何在iOS上选择它,有什么建议吗?跨平台解决方案的额外积分 还有,有没有关于模拟android设备后退按钮点击(在应用程序之外)的建议?我发现了这个 find.byType
await driver.tap(find.byTooltip('Back'));
但是,这在iOS上失败。由于按钮是自动生成的,我无法通过编程方式添加标记。关于如何在iOS上选择它,有什么建议吗?跨平台解决方案的额外积分
还有,有没有关于模拟android设备后退按钮点击(在应用程序之外)的建议?我发现了这个
find.byType(CupertinoNavigationBarBackButton);
我不知道这是否或多或少有性能,或者它是否依赖于其他东西工作不幸的是,接受的解决方案
等待驱动程序。点击(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);
结果表明,
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();
}
}
来源:你有没有想过在按下后退按钮或后退箭头时使用
WillpopScope
小部件进行捕获?@Arendhal这就是问题所在,我无法让驱动程序点击后退按钮,因为我找不到合适的选择器。WillpopScope在此场景中不可用。欢迎使用stackoverflow。请充分解释你的答案。虽然您可能很清楚,但一行代码并不是高质量的响应。老实说,它再简洁不过了
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();
}
}