使用颤振驱动程序中的系统后退按钮

Posted

技术标签:

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

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

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

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

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

非常感谢

【问题讨论】:

【参考方案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 及其用法,但谢谢

以上是关于使用颤振驱动程序中的系统后退按钮的主要内容,如果未能解决你的问题,请参考以下文章

颤振:如何在按下后退按钮时不退出应用程序

颤振:我怎样才能抓住后退按钮按下退出我的应用程序

在颤振中,按下后退按钮时如何返回上一个 URL?

设备为 iPhone 时如何显示后退按钮

颤振回调到后退按钮上的原始小部件

Flutter 应用程序后退按钮事件未重定向到后页