通过UIAutomator快速设置

时间:2014-03-27 08:28:16

标签: android uiautomator

我正在尝试通过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?

2 个答案:

答案 0 :(得分:1)

您是否从uiautomatorviewer获得了这些文字 - BRIGHTNESS,AIRPLANE MODE?

从我的Nexus 4设备查看uiautomatorviewer的截图 -

enter image description here

这里清楚地显示'亮度'不是'亮度'所以它应该像:

一样使用
new UiObject(new UiSelector().text("Brightness")).click();

同样适用于'飞机模式' -

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

检查 - 你可以做一件事 -

请注意,当'飞行模式'开启时 - > wifi显示'WI-FI OFF'以及'飞行模式'关闭时 - > 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");
}

同样可以检查飞机模式何时关闭。

答案 1 :(得分: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()
}