我在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);
}
谢谢!
答案 0 :(得分:0)
尝试增加拍摄屏幕快照的时间。
Handler handler = new Handler();
handler.postDelayed(new Runnable() {
@Override
public void run() {
//Do something after 100ms
saveScreenshot();
}
}, 100);