Android UI Automator 等待应用方向更改

问题描述 投票:0回答:4

我正在使用 Android UI automator FW 进行测试。我正在尝试使用以下代码检测设备方向更改期间的内存泄漏:

InstrumentationRegistry.getInstrumentation().getUiAutomation()
                            .setRotation(orientation);

它改变了设备方向,但我的问题是:

等待设备完成方向更改的正确方法是什么(睡眠除外)?

我已经尝试过:

mDevice.wait(Until.hasObject(By.pkg(<MyPackage>).depth(0)), LAUNCH_TIMEOUT);

有时有效,有时无效。

mDevice.waitForIdle();

根本不工作。

还有其他等待方式吗?

android automated-tests android-uiautomator
4个回答
4
投票

您可以使用 UiDevice.setOrientationXXX() 方法代替 UiAutomation.setRotation()

UiDevice 方法内置了对 UiDevice.waitForIdle() 的调用,它将阻塞,直到 UI 至少 500 毫秒没有更改。


2
投票

看起来像:

mDevice.wait(Until.hasObject(By.pkg(<MyPackage>).depth(0)), LAUNCH_TIMEOUT);

如果执行得太早,就无法等待,所以我这样做了:

SystemClock.sleep(500); // minimal activity restart time is about 300ms
mDevice.wait(Until.hasObject(By.pkg(<MyPackage>).depth(0)), LAUNCH_TIMEOUT);

如果重新启动花费的时间比预期多,它会进行实际等待,但仍然不是 100% 正确的等待。

谁知道更好的答案?


1
投票

你可以使用下面的代码吗?我认为这似乎有效。

mDevice.waitForWindowUpdate(null, 5000);

0
投票

您可以执行以下操作,它将设备方向设置为左侧,然后返回。

val device = UiDevice.getInstance(InstrumentationRegistry.getInstrumentation())
device.setOrientationLeft()
device.setOrientationNatural()
© www.soinside.com 2019 - 2024. All rights reserved.