如何在 Android 中使用 UIAutomator 访问 Telegram?

问题描述

我正在尝试使用 UIAutomator,以便能够对我的 Android 应用进行更广泛的 Instrumentation 测试。

我的一个测试应该检查是否可以通过 Telegram 共享来自应用程序的链接

这些是我使用的函数

public static void clickUiTextButton(UiDevice device,String text,boolean waitForNewWindow) throws UiObjectNotFoundException {
    UiObject button = device.findobject(new UiSelector().text(text));
    if (!waitForNewWindow) {
        button.click();
    } else {
        button.clickAndWaitForNewWindow();
    }
}

public static void clickTelegramChat(UiDevice device,String text) throws UiObjectNotFoundException {
    UiObject button = device.findobject(new UiSelector()
            .textMatches(TEXT_TELEGRAM_CHAT_NAME));

    button.click();
}

我使用第一个函数单击共享意图中的“Telegram”文本,它完美无缺。但是,当我尝试单击要共享链接的聊天(使用第二个功能)时,没有任何反应。

我在 docs 中读到有多种方法可以选择文本,但是 .textMatches() 似乎是唯一可以匹配非小部件对象的。

谁能帮我弄清楚如何正确选择正确的 Telegram 聊天?

解决方法

您是否使用 uiautomatorviewer 检查了屏幕的转储?

调用该方法时可能不会显示文本。还要检查它是否真的是文本,它可能是内容描述,因此 textMatches 不起作用。