自动化的本地化屏幕截图

时间:2018-09-11 13:00:18

标签: android windows automation localization screenshot

有没有一种方法可以自动从Windows在android上获取本地化的屏幕截图?

我找到了适用于Mac的工具

https://docs.fastlane.tools/getting-started/android/screenshots/

但是在Windows上有办法吗?我需要为11种不同的语言拍摄5张屏幕截图,以某种方式实现自动化非常好。

编辑

在来自{gr3rr}的this post之后,我实现了自动捕获所有本地化的 FirstActivity 。但是,我无法确定如何浏览我的应用程序以及从多个活动中获取屏幕截图,更改本地化并再次进行浏览。流应该是这样的:

'en'
FirstActivity(scr)> MainActivity(scr)> SettingsActivity(scr)...

'de'
FirstActivity(scr)> MainActivity(scr)> SettingsActivity(scr)...

以此类推。

编辑2

自动取款机是通过手动更改

中的活动来实现的
private final CustomActivityTestRule mActivityTestRule = new CustomActivityTestRule<>(StartActivity.class);

并一张一张地截图。

1 个答案:

答案 0 :(得分:0)

Here是有关如何在自动测试失败或成功时(几乎也包括本地化的确切用例)截图的指南,非常有用。您可以按照指南创建ScreenshotWatcher,也可以根据需要简单地调用captureScreenshot方法来获取所需的屏幕截图。我已经在下面复制了相关的课程:

public class ScreenshotWatcher extends TestWatcher {

    @Override
    protected void succeeded(Description description) {
        Locale locale = InstrumentationRegistry.getTargetContext()
                .getResources()
                .getConfiguration()
                .getLocales()
                .get(0);
        captureScreenshot(description.getMethodName() + "_" + locale.toLanguageTag());
    }


    private void captureScreenshot(String name) {
        ScreenCapture capture = Screenshot.capture();
        capture.setFormat(Bitmap.CompressFormat.PNG);
        capture.setName(name);
        try {
            capture.process();
        } catch (IOException ex) {
            throw new IllegalStateException(ex);
        }
    }


    @Override
    protected void failed(Throwable e, Description description) {
        captureScreenshot(description.getMethodName() + "_fail");
    }
}