5

我正在使用FlutterDriverFlutter包执行集成测试。

平台为Android时,脚手架使用AppBar,平台为iOS时,使用CupertinoNavigationBar

在 Android 上测试时,我可以找到带有以下代码的后退按钮

await driver.tap(find.byTooltip('Back'));

但是,这在 iOS 上失败了。由于按钮是自动生成的,我无法以编程方式添加标签。关于如何在 iOS 上选择它有什么建议吗?跨平台解决方案的奖励积分。

另外,对于模拟 android 设备后退按钮点击(在应用程序之外)有什么建议吗?

4

4 回答 4

5
await driver.tap(find.pageBack());
于 2018-11-27T21:18:58.087 回答
2

不幸的是,接受的解决方案await driver.tap(find.pageBack())对我不起作用。

所以我添加KeyAppBar并访问了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);
于 2020-09-08T08:56:37.013 回答
1

我找到了这个

 find.byType(CupertinoNavigationBarBackButton); 

我不知道这是或多或少的性能还是它依赖于其他东西来工作

于 2019-03-01T15:24:17.733 回答
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

于 2020-09-25T13:15:40.913 回答