Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/flash/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android uiautomator 如何使用UIAutomator在不使用索引或x,y坐标的情况下添加帐户?_Android Uiautomator - Fatal编程技术网

Android uiautomator 如何使用UIAutomator在不使用索引或x,y坐标的情况下添加帐户?

Android uiautomator 如何使用UIAutomator在不使用索引或x,y坐标的情况下添加帐户?,android-uiautomator,Android Uiautomator,我现在正在使用Nexus5设备 我正试图点击屏幕上的“删除帐户”。我使用UIAutomatorViewer工具,找到了屏幕上所有元素的节点详细信息。有三个元素对应于我正在查看的“addaccount” 以下是布局层次结构: (1) 线性布局[468265][1056509] -(0)相对值[516400][1008473] --(0)文本视图:删除帐户[516400][1008473] (1) 线性布局[468265][1056509] 指标1 文本空值 资源id为空 类android.widg

我现在正在使用Nexus5设备

我正试图点击屏幕上的“删除帐户”。我使用UIAutomatorViewer工具,找到了屏幕上所有元素的节点详细信息。有三个元素对应于我正在查看的“addaccount”

以下是布局层次结构: (1) 线性布局[468265][1056509] -(0)相对值[516400][1008473] --(0)文本视图:删除帐户[516400][1008473]

(1) 线性布局[468265][1056509] 指标1 文本空值 资源id为空 类android.widget.LinearLayout 包com.android.settings 内容描述空值 可点击的真实

(0)相对值[516400][1008473] 指标1 文本 资源id 类android.widget.LinearLayout 包com.android.settings 内容描述空值 点击错误

(0)文本视图:删除帐户[516400][1008473] 索引0 文本删除帐户 资源id android:id/标题 类android.widget.TextView 包com.android.settings 内容描述空值 点击错误

理想情况下,我希望通过单击包含文本“Remove account”的元素来实现这一点,但这是不可能的,因为该元素不可单击。 UiObject nextButton=新UiObject(新UiSelector().text(“删除帐户”)

或者,我可以通过其索引和类名引用clickable元素 UiObject nextButton=newuiobject(newuiselector().index(1).className(“android.widget.LinearLayout”); 或者参考x,y坐标 getUiDevice()。单击(600450); 然而,这两种方法可能会导致今后的维护成本


这是Android上最基本的屏幕之一。我希望会有一个比我在这里发布的更好的解决方案。有人有其他建议吗?

更好的方法是使用
getFromParent()
在层次结构中查找
TextView
元素的父UI元素,在我们的示例中是
LinearLayout
,然后单击它:

UiObject nextButton = new UiObject(new UiSelector().text("Remove account"));

UiObject parent =nextButton.getFromParent(new UiSelector().new UiSelector().className("android.widget.LinearLayout");
parent.clickAndWaitForNewWindow();

有打字错误吗?你是说UiObject parent=nextButton.getFromParent(..)而不是UiObject parent=playVideo.getFromParent(..)是打字错误..很抱歉混淆..更正了答案..!!是“new UiSelector().new UiSelector()”类型吗?