【问题标题】:using the system back button from flutter driver使用颤振驱动程序中的系统后退按钮
【发布时间】:2019-07-23 16:06:49
【问题描述】:

如何在集成测试中使用系统后退按钮?

所以我正在使用flutter并正在编写集成测试,在大多数情况下我可以使用AppBar导航,通过工具提示找到它看起来像这样:

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

但是我的一个测试打开了一个网页,打开后我需要继续我的测试,这意味着我需要按下系统返回按钮,这可能吗?

非常感谢

【问题讨论】:

    标签: testing flutter integration-testing flutter-test flutterdriver


    【解决方案1】:

    如果您的机器上安装了adb,您可以运行命令以使用按键事件执行回压:

    import 'dart:io';
    
    await Process.run(
      'adb', 
      <String>['shell', 'input', 'keyevent', 'KEYCODE_BACK'], 
      runInShell: true,
    );
    

    【讨论】:

    • iPhone 怎么样?我们如何以编程方式按下主页按钮等。
    • iPhone 的主页按钮不是后退按钮,它会将用户引导至设备主页。如果您想在 iOS 上测试等效的 backpress,您可能需要尝试从右向左拖动。
    • 有没有办法以编程方式在 iPhone 上按下主屏幕?
    【解决方案2】:

    也许这对你有帮助

     await device.shellExec('input', <String>['keyevent', 'KEYCODE_BACK']);
    

    在官方的 Flutter 驱动测试之一中发现 link

    【讨论】:

    • 似乎 device.shellExec 依赖于仅在框架内可用的flutter_devicelab
    【解决方案3】:

    查看this 链接。简而言之,您需要使用 WillPopScope 类来处理带有回调的设备后退按钮。

    【讨论】:

    • 不适用于颤振驱动程序,我知道 willPopScope 及其用法,但谢谢
    猜你喜欢
    • 2021-03-22
    • 2019-10-29
    • 2020-02-27
    • 2019-04-28
    • 2022-09-26
    • 1970-01-01
    • 2020-08-31
    • 2020-05-11
    • 2020-07-26
    相关资源
    最近更新 更多