【问题标题】:How Android UIAutomator 2 takeScreenshot on the App without WRITE_EXTERNAL_STORAGE permission?Android UIAutomator 2 如何在没有 WRITE_EXTERNAL_STORAGE 权限的情况下在 App 上截屏?
【发布时间】:2019-08-23 17:07:16
【问题描述】:

假设我们有一个名为NoseBook 的应用程序,该应用程序没有android.permission.WRITE_EXTERNAL_STORAGE 的权限,我们不打算向用户请求此权限。

uiautomator2 是选定的黑盒测试框架,我们正在尝试在测试期间捕获屏幕截图并将其保存在某处,以后可以从 AVD 中提取并保存为报告。

调用的API是UiDevice#takescreenshot,但显示如下错误

E/UiDevice: failed to save screen shot to file
java.io.FileNotFoundException: /storage/emulated/0/test.png (Permission denied)

如果我们将WRITE_EXTERNAL_STORAGE添加到应用程序NoseBook,错误就会消失,但这并不合适,因为这仅用于我们的测试目的,实际应用程序不需要该权限。

注意:screencap 是我注意到的解决方法,但我正在寻找 uiautomator 本身的解决方案。

环境:模拟器 API 25

【问题讨论】:

    标签: android android-uiautomator


    【解决方案1】:

    您可以像这样授予权限规则

    @RunWith(AndroidJUnit4::class)
    abstract class UiAutomatorRunner {
    
        lateinit var context: Context
    
        @Rule
        @JvmField
        var grantPermissionRule: GrantPermissionRule = GrantPermissionRule.grant(
            Manifest.permission.CAMERA,
            Manifest.permission.RECORD_AUDIO,
            Manifest.permission.WRITE_EXTERNAL_STORAGE
        )
    

    【讨论】:

      猜你喜欢
      • 2020-04-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-01-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多