我正在尝试通过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?
答案 0 :(得分:1)
您是否从uiautomatorviewer获得了这些文字 - BRIGHTNESS,AIRPLANE MODE?
从我的Nexus 4设备查看uiautomatorviewer的截图 -
这里清楚地显示'亮度'不是'亮度'所以它应该像:
一样使用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
值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()
}