【问题标题】:How to find iOS back button programatically with FlutterDriver如何使用 Flutter Driver 以编程方式查找 iOS 后退按钮
【发布时间】:2018-12-17 19:47:52
【问题描述】:

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

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

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

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

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

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

【问题讨论】:

  • 您有没有想过使用WillpopScope 小部件在按下后退按钮或后退箭头时进行捕捉?
  • @Arendhal 这就是问题所在,我无法让 FlutterDriver 点击后退按钮,因为我找不到合适的选择器。 WillpopScope 在这种情况下没有用处。

标签: flutter flutter-test


【解决方案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

【讨论】:

    【解决方案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);
    

    【讨论】:

      【解决方案3】:

      我找到了这个

       find.byType(CupertinoNavigationBarBackButton); 
      

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

      【讨论】:

        【解决方案4】:
        await driver.tap(find.pageBack());
        

        【讨论】:

        • 欢迎来到stackoverflow。请充分解释你的答案。虽然您可能很清楚,但一行代码并不是高质量的响应。
        • 老实说,再简洁不过了
        猜你喜欢
        • 1970-01-01
        • 2019-06-29
        • 2012-05-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-01-07
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多