如何使用 Flutter Driver 以编程方式查找 iOS 后退按钮
How to find iOS back button programatically with FlutterDriver
我正在使用 FlutterDriver to perform integration testing for a Flutter 包。
当平台为Android时,使用AppBar is used in the scaffold, and when the platform is iOS, a CupertinoNavigationBar。
在 Android 上测试时,我可以使用以下代码找到后退按钮
await driver.tap(find.byTooltip('Back'));
然而这在 iOS 上失败了。由于按钮是自动生成的,因此我无法以编程方式添加标签。关于如何在 iOS 上 select 有什么建议吗?跨平台解决方案的奖励积分。
此外,对于模拟 android 设备后退按钮点击(在应用程序外部)有什么建议吗?
await driver.tap(find.pageBack());
我找到了这个
find.byType(CupertinoNavigationBarBackButton);
我不知道这是或多或少的性能,还是它依赖于其他东西来工作
不幸的是,公认的解决方案 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);
事实证明 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
我正在使用 FlutterDriver to perform integration testing for a Flutter 包。
当平台为Android时,使用AppBar is used in the scaffold, and when the platform is iOS, a CupertinoNavigationBar。
在 Android 上测试时,我可以使用以下代码找到后退按钮
await driver.tap(find.byTooltip('Back'));
然而这在 iOS 上失败了。由于按钮是自动生成的,因此我无法以编程方式添加标签。关于如何在 iOS 上 select 有什么建议吗?跨平台解决方案的奖励积分。
此外,对于模拟 android 设备后退按钮点击(在应用程序外部)有什么建议吗?
await driver.tap(find.pageBack());
我找到了这个
find.byType(CupertinoNavigationBarBackButton);
我不知道这是或多或少的性能,还是它依赖于其他东西来工作
不幸的是,公认的解决方案 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);
事实证明 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