我需要在x,y中点击Espresso测试。
我有看法:
<view xmlns:android="http://schemas.android.com/apk/res/android" class="uk.co.senab.actionbarpulltorefresh.extras.actionbarcompat.PullToRefreshLayout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="top"
android:id="@+id/pull_to_refresh_layout">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:id="@+id/date_param"
android:textSize="@dimen/default_text_size"
android:textColor="@color/palette_light_gray"
android:layout_marginTop="25dp"
android:layout_marginLeft="28dp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
<example.ui.view.UnderlinedTextIndicator
android:id="@+id/tab_indicator"
android:paddingLeft="@dimen/field_padding"
android:paddingRight="@dimen/field_padding"
android:layout_below="@+id/date_param"
android:layout_marginTop="15dp"
android:layout_width="match_parent"
android:layout_marginBottom="7dp"
android:layout_height="wrap_content"/>
<android.support.v4.view.ViewPager
android:id="@+id/tabbed_content"
android:layout_above="@+id/btn_item"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/tab_indicator"
android:layout_marginTop="10dp"/>
<example.ui.BigButton
android:id="@+id/btn_item"
android:text="@string/btn_convert_rates"
style="@style/BigButton"
android:layout_marginTop="10dp"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true"
android:layout_marginBottom="25dp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
</RelativeLayout>
</view>
因此,在面板视图中:在顶部绘图日期,在字符串下:text1和text2在一行上,在某些内容下,在 - 按钮下。
我在画布上绘制text1和text2。我需要点击Espresso的text1和text2。但是,如果我写:onView(withText(String.valueOf(R.string.text1))).perform(click());
- 我有android.support.test.espresso.NoMatchingViewException: No views in hierarchy found matching: with text: is "2131492993"
,所以,我想点击坐标x,y:
private static ViewAction clickXY(final int x, final int y) {
return new GeneralClickAction(
Tap.SINGLE,
new CoordinatesProvider() {
@Override
public float[] calculateCoordinates(View view) {
final int[] screenPos = new int[2];
view.getLocationOnScreen(screenPos);
final float screenX = screenPos[0] + x;
final float screenY = screenPos[1] + y;
float[] coordinates = {screenX, screenY};
return coordinates;
}
},
Press.FINGER);
}
}
但是,我不知道 - 必须是x,y?如何获得test1的x,y和test2的x,y?
答案 0 :(得分:0)
您不需要在此处单击x,y坐标。 这在屏幕尺寸上不会很好。
问题是这段代码:
String.valueOf(R.string.text1)
R.string.text1是一个在构建时生成的整数,您将其转换为字符串,因此它正在查找一些显示&#34; 2131492993&#34;。
的视图我假设您正在尝试从资源文件中查找字符串值。
你想要这样的东西:
onView(withText(getInstrumentation().getTargetContext().getString(R.string.text1))).perform(click());
甚至:
onView(withText("My Button Text")).perform(click());
答案 1 :(得分:0)
考虑使用
onView(withText(R.string.text1)).perform(click());
请注意区别 - 我没有使用String.valueOf(R.string.text1)。这给你字符串&#34; 2131492993&#34;相反,它会创建一个Matcher,在内部查找资源文件中与2131492993关联的字符串,然后查找包含该文本的视图。