通过UIAutomator进行快速设置

问题描述 投票:1回答:2

我正在尝试通过uiautomator访问“快速设置”中的一项。我可以通过device.openQuickSettings();打开快速设置。此后,我无法进入某个特定项目,例如WiFi /飞行模式。某些机构可以帮助我在此快速设置中选择一个项目吗?

我尝试了以下内容

if (new UiObject(new UiSelector().text("BRIGHTNESS")).exists())
{
    new UiObject(new UiSelector().text("BRIGHTNESS")).click();
}

if (new UiObject(new uiSelector().className("android.widget.GridView").description("AEROPLANE MODE")).exists())
{
    new UiObject(new UiSelector().className("android.widget.GridView").description("AEROPLANE MODE")).click();
}

但是没有成功..

谢谢


我将使用以下内容访问这些项目

UiScrollable scroll = new UiScrollable(new UiSelector().scrollable(true));
UiObject airplane = scroll.getChildByText(new UiSelector().className(android.widget.TextView.class.getName()), "Aeroplane mode");

但是,有人可以帮我如何在此快速设置菜单中设置在飞机模式下的uiautomator中进行决定吗?

android android-uiautomator
2个回答
1
投票

您是否从uiautomatorviewer中获得了这些文本-亮度,飞机模式?

在我的Nexus 4设备上检查uiautomatorviewer的屏幕截图-

“在此处输入图像描述”

这里清楚地显示了“亮度”而不是“亮度”,因此应像这样使用:

new UiObject(new UiSelector().text("Brightness")).click();

同样适用于“飞机模式”-

new UiObject(new UiSelector().text("Airplane mode")).click();

支票-您可以做一件事-

注意,当“飞行模式”为开-> wifi显示为“ WI-FI关”,而当“飞行模式”为关-> wifi仅显示“ WI-FI'

所以您可以这样做-

//put airplane mode ON
new UiObject(new UiSelector().text("Airplane mode")).click();

//add some delay
sleep(3000);    //3sec delay

//check for wifi text
if(new UiObject(new UiSelector().text("Wi-Fi Off")).exists()) {
    System.out.println("Airplane Mode ON");
} else {
    System.out.println("Airplane Mode OFF");
}

与您可以检查何时关闭飞行模式相同。


0
投票

[这是我在运行Android 7.0的Galaxy S8上在Kotlin中进行的操作。

  • 使用uiautomatorviewer在快速设置中找到飞行模式元素的属性
  • 删除了content-desc元素的Airplane,mode,Off.,Button

uiautomatorviewer screenshot

启用飞行模式

private val testApp = UiDevice.getInstance(getInstrumentation())

private fun enableAirplaneMode() = apply {
  testApp.uiDevice.openQuickSettings()
  testApp.uiDevice.waitForIdle()

  var airplaneModeIcon = checkNotNull(testApp.uiDevice.findObject(By.desc("Airplane,mode,Off.,Button")))

  airplaneModeIcon.click()
}

禁用飞行模式

private val testApp = UiDevice.getInstance(getInstrumentation())

private fun disableAirplaneMode() = apply {
  testApp.uiDevice.openQuickSettings()
  testApp.uiDevice.waitForIdle()

  var airplaneModeIcon = checkNotNull(testApp.uiDevice.findObject(By.desc("Airplane,mode,On.,Button")))

  airplaneModeIcon.click()
}
© www.soinside.com 2019 - 2024. All rights reserved.