在 UiAutomator Android 中的事件之间提供延迟

如何在UiAutomator Android中提供事件点击之间的延迟。

第一个事件是在 EditText 中输入 url:

new UiObject(new UiSelector().text("Search here")).setText("abc.com");
getUiDevice.waitForIdle(15000); 

在这里,我正在Web视图中加载一个网页。因此,当URL加载完成后,我需要检查第二个事件。

第二个事件是检查对象的内容描述:

UiObject curClass = new UiObject(new UiSelector().className("android.widget.RelativeLayout"));  
UiObject yCur = curClass.getChild(new UiSelector().description("ye"));
getCurCol();

public void getCurCol() throws UiObjectNotFoundException {
try {
    if (yCur.getContentDescription() != null)
        report.append("Success");
} catch (Exception e) {
    System.err.println("\nCaught Exception: " + e.getMessage());
}

但这似乎不起作用。

我只想让应用程序在检查第二个事件之前等待一段时间。

我知道这三种方法都是在UI自动机中为延迟提供的 -

public void waitForIdle(long timeout)

public void waitForIdle()

public boolean waitForWindowUpdate(String packageName, long timeout)

但我不知道如何使用这些方法。

请给我一个如何使用这些的例子。

任何帮助将不胜感激。

谢谢!


答案 1

试试

sleep(5000);

让我知道它是否有效。或者你可以试试 WaitForIdle( ) 方法。


答案 2

如果您在按下按钮后需要等待

 UiObject settingsButton = mDevice.findObject(new UiSelector().text("Settings"));
        settingsButton.clickAndWaitForNewWindow();

settingsButton.waitUntilGone(1000);

如果从意图启动新活动,这种方式是我能找到的等待设置包出现的最容易的方法:

mDevice.wait(Until.hasObject(By.pkg("com.android.settings").depth(0)), 2000);
UiObject settingsValidation = mDevice.findObject(new UiSelector().packageName("com.android.settings").text("Settings"));
        assertTrue("Unable to detect Settings", settingsValidation.waitForExists(4000));

推荐