无法使用 Espresso select AutoCompleteTextView 下拉列表中的项目
Not able to select an item from AutoCompleteTextView dropdown using Espresso
以下是我的 AutoCompleteTextView 下拉列表的快照,我正在尝试从中 select 第二项
我的浓缩咖啡代码:
onView(withId(R.id.searchContainer)).check(matches(isDisplayed()));
onData(anything())
.inAdapterView(withId(R.id.searchContainer))
.atPosition(1)
.perform(click());
但我遇到以下异常:
android.support.test.espresso.PerformException: Error performing 'load adapter data' on view 'with id: com.sampleaddressdd.demo:id/searchContainer'
使用 Espresso Recorder 我得到以下代码:
DataInteraction appCompatTextView = onData(anything())
.inAdapterView(childAtPosition(
withClassName(is("android.widget.PopupWindow$PopupBackgroundView")),
0))
.atPosition(0);
appCompatTextView.perform(click());
下拉充气代码:
mSearchView = findViewById(R.id.textSearch);
mSearchView.setDropDownAnchor(R.id.searchContainer);
mHttpClient.fetchAddresss(new HttpClient.AddressCallback() {
@Override
public void run() {
mAdapter = new AddressAdapter(MainActivity.this, mAddresss, new AddressAdapter.OnAddressClickCallback() {
@Override
public void execute(Address Address) {
startActivity(AddressProfileActivity.createIntent(MainActivity.this, Address));
}
});
runOnUiThread(new Runnable() {
@Override
public void run() {
mSearchView.setAdapter(mAdapter);
}
});
}
});
终于通过使用实现了这一目标:
onView(withText(LOCATION_TO_BE_SEARCHED)) .inRoot(withDecorView(not(mActivityTestRule.getActivity().getWindow().getDecorView()))) .check(matches(isDisplayed())) .perform(click());
以下是我的 AutoCompleteTextView 下拉列表的快照,我正在尝试从中 select 第二项
我的浓缩咖啡代码:
onView(withId(R.id.searchContainer)).check(matches(isDisplayed()));
onData(anything())
.inAdapterView(withId(R.id.searchContainer))
.atPosition(1)
.perform(click());
但我遇到以下异常:
android.support.test.espresso.PerformException: Error performing 'load adapter data' on view 'with id: com.sampleaddressdd.demo:id/searchContainer'
使用 Espresso Recorder 我得到以下代码:
DataInteraction appCompatTextView = onData(anything())
.inAdapterView(childAtPosition(
withClassName(is("android.widget.PopupWindow$PopupBackgroundView")),
0))
.atPosition(0);
appCompatTextView.perform(click());
下拉充气代码:
mSearchView = findViewById(R.id.textSearch);
mSearchView.setDropDownAnchor(R.id.searchContainer);
mHttpClient.fetchAddresss(new HttpClient.AddressCallback() {
@Override
public void run() {
mAdapter = new AddressAdapter(MainActivity.this, mAddresss, new AddressAdapter.OnAddressClickCallback() {
@Override
public void execute(Address Address) {
startActivity(AddressProfileActivity.createIntent(MainActivity.this, Address));
}
});
runOnUiThread(new Runnable() {
@Override
public void run() {
mSearchView.setAdapter(mAdapter);
}
});
}
});
终于通过使用实现了这一目标:
onView(withText(LOCATION_TO_BE_SEARCHED)) .inRoot(withDecorView(not(mActivityTestRule.getActivity().getWindow().getDecorView()))) .check(matches(isDisplayed())) .perform(click());