Android屏幕错误状态截图

时间:2018-06-21 08:12:15

标签: android user-interface testing screenshot android-espresso

我在UI测试中有一些步骤:

rotateDevice(Orientation.LANDSCAPE);
closeSoftKeyboard();
assertActionBarTitle(getString(R.string.demo_activity_title));
assertButtonsAreDisplayedInScrollView(mExpectedDisplayedButtonIds);
saveScreenshot();

运行测试时,可以在屏幕上看到动作,当assertButtonsAreDisplayedInScrollView方法启动时:将显示滚动到底部,直到最后一个按钮,确保在调用该saveScreenshot方法之后显示最低按钮。

但是当我打开screenshot.png时,我看到它已经达到了初始屏幕状态,即使用了上方的按钮(就像它没有滚动到底部一样)。

有人可以帮助解决这个问题吗?我必须截图屏幕的最后状态。

截屏方法的正文:

Bitmap bitmap = InstrumentationRegistry.getInstrumentation().getUiAutomation().takeScreenshot();

File screenshotFile = getScreenshotFile();

try (FileOutputStream outputStream = new FileOutputStream(screenshotFile)) {
    bitmap.compress(Bitmap.CompressFormat.JPEG, 100, outputStream);
    Log.i(mTag, "Saved screenshot: " + screenshotFile.getAbsolutePath());
} catch (IOException e) {
    Log.e(mTag, "Could not save screenshot", e);
}

谢谢!

1 个答案:

答案 0 :(得分:0)

尝试增加拍摄屏幕快照的时间。

Handler handler = new Handler();
handler.postDelayed(new Runnable() {
      @Override
      public void run() {
        //Do something after 100ms
        saveScreenshot();
      }
}, 100);