在Flutter端到端测试中允许权限对话框?

Kya*_*Tun 5 testing end-to-end flutter

在Flutter端到端测试中,在测试期间必须允许权限。driver.tap(find.text("ALLOW")不起作用。如何单击“允许”。

在此处输入图片说明

jit*_*555 12

如果您使用最新的Flutter 集成测试,其他答案将不会对您有帮助,因为我们不需要FlutterDriver进行连接。

所以现在,您需要在我们初始化的test_driver.dart文件中添加以下代码integrationDriver()

Future<void> main() async {
    final Map<String, String> envVars = Platform.environment;
    String? adbPath = join(envVars['ANDROID_SDK_ROOT'] ?? envVars['ANDROID_HOME']!,
      'platform-tools',
      Platform.isWindows ? 'adb.exe' : 'adb',
    );
  await Process.run(adbPath , ['shell' ,'pm', 'grant', 'com.example', 'android.permission.CAMERA']);
  await Process.run(adbPath , ['shell' ,'pm', 'grant', 'com.example', 'android.permission.WRITE_EXTERNAL_STORAGE']);
  await integrationDriver();
}
Run Code Online (Sandbox Code Playgroud)

需要进行此更改,因为FlutterDriver一旦初始化并连接它,就会建立连接,但是新的集成测试流程已经有了连接,因此我们需要在连接发生之前对其进行初始化。

要运行代码,请在终端上使用以下命令,如您所见,为了获得更好的结果,我创建了两个文件夹,

  1. test_driver:包含上面提到的驱动程序代码。

  2. Integration_test:包含测试文件。

    flutter drive --driver=test_driver/test_driver.dart --target=integration_test/my_test.dart
    
    Run Code Online (Sandbox Code Playgroud)


apa*_*sio 5

您可以在运行测试之前授予权限。

import 'dart:io';
import 'package:path/path.dart';

// ...

setUpAll(() async {
  final envVars = Platform.environment;
  final adbPath = join(
    envVars['ANDROID_SDK_ROOT'] ?? envVars['ANDROID_HOME'],
    'platform-tools',
    Platform.isWindows ? 'adb.exe' : 'adb',
  );
  await Process.run(adbPath, [
    'shell',
    'pm',
    'grant',
    'com.example.yourapp', // replace with your app id
    'android.permission.RECORD_AUDIO'
  ]);
  driver = await FlutterDriver.connect();
});
Run Code Online (Sandbox Code Playgroud)

  • iOS如何授予权限? (6认同)
  • 嘿,执行时这给了我“ProcessException:没有这样的文件或目录”错误 (3认同)