Flutter集成测试中如何处理系统权限授予问题(跨平台)
Flutter集成测试:跨平台处理系统权限授权的问题
我正在编写Flutter集成测试,目前能正常定位并点击应用内组件,但在处理系统权限授权时遇到了阻碍:当触发权限请求后,系统弹出的授权界面(例如位置权限的「While using the app」选项)无法通过常规测试代码操作。而且Android和iOS的系统授权界面文本、布局存在差异,没法用同一套逻辑处理。
我尝试过通过adb命令为Android手动授予权限,但没有效果,且这种方案仅适用于Android,无法覆盖iOS测试场景,现在被卡在这一步,没法继续测试依赖权限的后续界面。
我尝试的代码
helpers/grant_required_permissions.dart中的权限授予函数
Future<void> grantRequiredAppPermissions() async { if (!Platform.isAndroid) { return; } const appPackageName = 'my.package'; print( 'We are going to manually grant the required permissions to the android package $appPackageName'); final Map<String, String> envVars = Platform.environment; String adbPath = join( envVars['ANDROID_SDK_ROOT'] ?? envVars['ANDROID_HOME']!, 'platform-tools', Platform.isWindows ? 'adb.exe' : 'adb', ); print('Using adb at $adbPath'); final permissions = [ 'android.permission.READ_EXTERNAL_STORAGE', 'android.permission.WRITE_EXTERNAL_STORAGE', 'android.permission.ACCESS_FINE_LOCATION', 'android.permission.ACCESS_COARSE_LOCATION' ]; for (final permission in permissions) { await Process.run( adbPath, ['shell', 'pm', 'grant', appPackageName, permission]); } }
app/integration_test/driver.dart中的调用代码
import 'dart:io'; import 'package:integration_test/integration_test_driver_extended.dart'; import 'helpers/grant_required_permissions.dart'; Future<void> main() async { await grantRequiredAppPermissions(); await integrationDriver(); }
请问解决该问题的最佳实践是什么?
内容的提问来源于stack exchange,提问作者Kristi Jorgji
相关产品推荐
相关产品推荐

