已应用Android UI Automator等待方向更改

时间:2016-01-19 08:23:12

标签: android automated-tests uiautomator android-uiautomator

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

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

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

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

我试过了:

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

有时工作,有时不工作。

mDevice.waitForIdle();

根本不工作。

还有其他等待方法吗?

3 个答案:

答案 0 :(得分: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 :(得分:2)

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

UiDevice方法有一个对UiDevice.waitForIdle()的内置调用,它将阻塞,直到UI没有改变至少500ms。

答案 2 :(得分:1)

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

mDevice.waitForWindowUpdate(null, 5000);