我在使用 AWS 设备场进行自动 UI 测试时遇到问题。我尝试创建一个新的 UIAutomator 2 测试。这在我的设备和开发计算机上工作正常。
否,我在 AWS 设备场中创建了一个新的测试运行,以在创建屏幕截图输出的所有其他设备上运行此测试。这里的问题似乎在于截取屏幕截图。
使用自动操作2,我使用自动操作框架UIDevie.takeScreenshot
方法截取屏幕截图。此方法将File
作为参数。
如AWS文档中所述,我尝试使用/sdcard/
文件夹以及Environment.getExternalStorageDirectory()
来存储文件。这些目录似乎都不起作用。
有了Environment.getExternalStorageDirectory()
,我得到以下日志:
Error UiAutomatorBridge java.io.FileNotFoundException: /storage/emulated/0/test-screenshots/coupondetail-screen-2.png: open failed: EACCES (Permission denied)
使用/sdcard/
我得到以下日志:
Error UiAutomatorBridge java.io.FileNotFoundException: /sdcard/test-screenshots/coupondetail-screen-2.png: open failed: EACCES (Permission denied)
我还使用了以下参考实现: https://github.com/awslabs/aws-device-farm-sample-app-for-android/blob/master/app/src/androidTest/java/com/amazonaws/devicefarm/android/referenceapp/Util/ScreenShot.java
从Android 6.x开始的新权限系统似乎确实存在问题,用户需要直接接受关键权限。对于测试,有一种解决方法,您可以使用 adb shell 命令接受权限(例如 WRITE_EXTERNAL_STORAGE):
如何管理运行时权限安卓棉花糖浓缩咖啡测试