未经WRITE_EXTERNAL_STORAGE许可,Android UIAutomator 2如何在应用程序上截屏?

时间:2018-11-22 12:47:34

标签: android uiautomator

假设我们有一个名为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中,错误将消失,但这是不合适的,因为这仅出于测试目的,实际的应用不需要该许可。 / p>

注意:屏幕截图是我注意到的解决方法,但我正在寻找围绕uiautomator本身的解决方案。

环境:仿真器API 25

1 个答案:

答案 0 :(得分:0)

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

@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
    )