使用Flutter Driver中的系统返回按钮

13
我该如何在集成测试中使用系统返回按钮?
我正在使用Flutter编写集成测试,在大多数情况下,我可以使用AppBar导航,通过工具提示找到它看起来像这样:
driver.tap(find.byTooltip('Back'));

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

非常感谢。

3个回答

9
如果您的计算机已安装adb,则可以使用keyevent运行命令来执行返回操作:
import 'dart:io';

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

1
那么iPhone怎么办呢?我们如何通过编程方式模拟按下Home键等操作? - Abhishek Ghaskata
1
iPhone的主页按钮不是返回按钮,它将用户引导到设备主页。如果您想在iOS上测试相当于后退按键的功能,可以尝试从右向左拖动。 - Miguel Beltran
有没有办法通过编程在iPhone上自动按下主屏幕? - Abhishek Ghaskata

4
也许这可以帮助你。
 await device.shellExec('input', <String>['keyevent', 'KEYCODE_BACK']);

在官方的Flutter Driver测试中发现链接


2
似乎设备.shellExec依赖于flutter_devicelab,而flutter_devicelab仅在框架内可用。 - Miguel Beltran

-3

请查看this链接。简而言之,您需要使用WillPopScope类来处理设备返回按钮并进行回调。


不适用于Flutter Driver,我知道willPopScope及其用法,但还是谢谢。 - martinseal1987

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接