Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/222.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
Java Robotium-尝试单击应用程序中的“主页”按钮_Java_Android_Junit_Robotium - Fatal编程技术网

Java Robotium-尝试单击应用程序中的“主页”按钮

Java Robotium-尝试单击应用程序中的“主页”按钮,java,android,junit,robotium,Java,Android,Junit,Robotium,我是新来的robotium,我正在尝试编写一个快速而肮脏的脚本,在应用程序的所有屏幕上运行 我遇到的问题主要是应用程序中的“主页按钮”。我尝试了很多选择,但我似乎无法让它点击那里,除了索引,这不是我想要的 当我用hierarchyviewer查看按钮时,它看起来是这样的: 但是,当我尝试时,例如: assertTrue( "Wait for text (id: myapp.R.id.home) failed.", solo.waitForImageById("myapp.R.id.home",

我是新来的
robotium
,我正在尝试编写一个快速而肮脏的脚本,在应用程序的所有屏幕上运行

我遇到的问题主要是应用程序中的“主页按钮”。我尝试了很多选择,但我似乎无法让它点击那里,除了索引,这不是我想要的

当我用
hierarchyviewer
查看按钮时,它看起来是这样的:

但是,当我尝试时,例如:

assertTrue(
"Wait for text (id: myapp.R.id.home) failed.",
solo.waitForImageById("myapp.R.id.home", 20000));
solo.clickOnImage((ImageView) solo.findViewById("myapp.R.id.home"));            
solo.waitForActivity("MenuActivity");
它在
waitForImageByID
行失败。我尝试了多种选项,如
waitForImageButton
等,但我似乎无法点击它。我错过了什么

junit.framework.AssertionFailedError: View with id: '0' is not found!
at com.jayway.android.robotium.solo.Solo.getView(Solo.java:1990)
at com.jayway.android.robotium.solo.Solo.getView(Solo.java:1970)
at com.bitbar.recorder.extensions.OtherUtils.a(OtherUtils.java:246)
at com.bitbar.recorder.extensions.OtherUtils.b(OtherUtils.java:241)
at com.bitbar.recorder.extensions.v.a(Waiter.java:71)
at com.bitbar.recorder.extensions.ExtSolo.waitForImageButtonById(ExtSolo.java:4176)
at com.example.android.apis.test.Test.testRecorded(Test.java:137)
at java.lang.reflect.Method.invokeNative(Native Method)
at android.test.InstrumentationTestCase.runMethod(InstrumentationTestCase.java:214)
at android.test.InstrumentationTestCase.runTest(InstrumentationTestCase.java:199)
at android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:191)
at android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:176)
at android.test.InstrumentationTestRunner.onStart(InstrumentationTestRunner.java:554)
at android.app.Instrumentation$InstrumentationThread.run(Instrumentation.java:1740)

使用下一行按操作栏中的“主页”按钮

solo.clickOnActionBarHomeButton();

使用下一行按操作栏中的“主页”按钮

solo.clickOnActionBarHomeButton();
那么这个代码呢:

ArrayList<LinearLayout> ll = solo.getCurrentViews(LinearLayout.class);
//You can change 1 with the ordinal number of LinearLayout you want to click.
solo.clickOnView(ll.get(1));
ArrayList ll=solo.getCurrentView(LinearLayout.class);
//可以使用要单击的LinearLayout的序号更改1。
solo.clickOnView(ll.get(1));
或者也

ArrayList<ImageView> iv = solo.getCurrentViews(ImageView.class);
//You can change 0 with the ordinal number of Image you want to click.
solo.clickOnView(iv.get(0));
ArrayList iv=solo.getCurrentView(ImageView.class);
//您可以使用要单击的图像序号更改0。
solo.clickOnView(iv.get(0));
我认为如果您为视图、线性布局或图像视图识别正确的id,它应该可以工作。

这段代码如何:

ArrayList<LinearLayout> ll = solo.getCurrentViews(LinearLayout.class);
//You can change 1 with the ordinal number of LinearLayout you want to click.
solo.clickOnView(ll.get(1));
ArrayList ll=solo.getCurrentView(LinearLayout.class);
//可以使用要单击的LinearLayout的序号更改1。
solo.clickOnView(ll.get(1));
或者也

ArrayList<ImageView> iv = solo.getCurrentViews(ImageView.class);
//You can change 0 with the ordinal number of Image you want to click.
solo.clickOnView(iv.get(0));
ArrayList iv=solo.getCurrentView(ImageView.class);
//您可以使用要单击的图像序号更改0。
solo.clickOnView(iv.get(0));

我认为,如果您为视图、线性布局或图像视图识别正确的id,它应该可以工作。

问题是,它引用的id不在您的应用程序中,而是在androids默认的R文件中,请尝试android.R.id.home,它应该可以正常工作。但是值得注意的是,如果您的应用程序使用action bar sherlock来支持action bar 4.0之前的版本,那么它将具有不同的ID,并且您必须在测试中处理这个问题


您可以亲自查看:

问题是它引用的id不在您的应用程序中,它在androids默认的R文件中,请尝试android.R.id.home,它应该可以正常工作。但是值得注意的是,如果您的应用程序使用action bar sherlock来支持action bar 4.0之前的版本,那么它将具有不同的ID,并且您必须在测试中处理这个问题


您可以亲自查看:

当您使用ActionBarSherlock时,您必须检查两个不同的id,android.R.id.home用于API级别>11,abs_uhome用于较低级别(由ActionBarSherlock提供):


当您使用ActionBarSherlock时,您必须检查两个不同的id,android.R.id.home用于API级别>11,abs__home用于较低级别(由ActionBarSherlock提供):


戴夫C的回答对我来说只起了部分作用。按钮被单击,但在加载前一个屏幕之前,断言已经启动,因此总是错误的。解决方案是在主线程上运行“home click”(Robotium 5.2.1):


戴夫C的回答对我来说只起了部分作用。按钮被单击,但在加载前一个屏幕之前,断言已经启动,因此总是错误的。解决方案是在主线程上运行“home click”(Robotium 5.2.1):


从你的问题我可以看出这是一个图像视图。您可以使用以下代码单击任何视图

View view = solo.getView("View_name_from_hierachy_viewer");
solo.clickOnView(view);
在您的案例中,从分层查看器查看\u name\u将是“home”。
如果这不起作用,请告诉我。

从您的问题中,我可以看出这是一个图像视图。您可以使用以下代码单击任何视图

View view = solo.getView("View_name_from_hierachy_viewer");
solo.clickOnView(view);
在您的案例中,从分层查看器查看\u name\u将是“home”。
如果这不起作用,请告诉我。

我也有同样的问题。你有这个图像的android:contentDescription集吗?我自己还没有开发这个应用程序,所以我唯一的信息就是我可以从hierarchyviewer中提取的信息。好的!当您使用hierarchyviewer时,是否在三角形中看到感叹号,表示屏幕中存在NAF节点?更多信息,请看下面的内容:感谢迄今为止对Flavio的帮助。我已经在uiautomator中查看了它,我看到了以下内容:看起来有一些关于线性布局的描述。你知道我是否可以在此基础上单击它吗?我没有看到任何关于NAF节点的内容。让我们尝试使用solo.clickOnView(“…”)单击;并插入内容描述的标签作为参数。让我知道它是否有效。我在这里提出了一个类似的问题:我也有同样的问题。你有这个图像的android:contentDescription集吗?我自己还没有开发这个应用程序,所以我唯一的信息就是我可以从hierarchyviewer中提取的信息。好的!当您使用hierarchyviewer时,是否在三角形中看到感叹号,表示屏幕中存在NAF节点?更多信息,请看下面的内容:感谢迄今为止对Flavio的帮助。我已经在uiautomator中查看了它,我看到了以下内容:看起来有一些关于线性布局的描述。你知道我是否可以在此基础上单击它吗?我没有看到任何关于NAF节点的内容。让我们尝试使用solo.clickOnView(“…”)单击;并插入内容描述的标签作为参数。让我知道它是否有效。我在这里打开了一个关于类似问题的问题:这不只是模拟按下设备上的home(主页)按钮吗?我正在尝试单击应用程序中包含id为home的imageview的视图。无论如何,我尝试了你的解决方案,但没有得到任何进一步我上传了另一个uiautomator图像在这里:基本上我试图选择红色轮廓的部分。在右边可以看到元素的层次结构