Быстрая настройка через 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 установлен режим полета или нет в этом меню быстрых настроек?


person Rahul    schedule 27.03.2014    source источник


Ответы (2)


Вы получили эти тексты - ЯРКОСТЬ, РЕЖИМ САМОЛЕТА от uiautomatorviewer?

Посмотрите здесь скриншот uiautomatorviewer с моего устройства Nexus 4 -

введите здесь описание изображения

Здесь он ясно показывает «Яркость», а не «ЯРКОСТЬ», поэтому его следует использовать следующим образом:

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

То же самое касается и «режима полета».

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

Для проверки - можно сделать одно -

Обратите внимание, что когда "Режим полета" включен -> Wi-Fi показывает "WI-FI ВЫКЛЮЧЕН", а когда "Режим полета" ВЫКЛЮЧЕН -> Wi-Fi показывает только "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");
}

То же самое вы можете проверить, когда режим полета отключен.

person Smriti    schedule 28.03.2014

Вот как я сделал это в Kotlin на своем Galaxy S8 под управлением Android 7.0.

  • Используется uiautomatorviewer для поиска свойств элемента режима полета в быстрых настройках.
  • Заметил значение content-desc элемента Airplane,mode,Off.,Button

скриншот uiautomatorviewer

Включить режим полета

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()
}
person Thomas    schedule 13.05.2020