3

У меня есть приложение для Android, которое использует ViewPager, и каждый фрагмент в представлении пейджера имеет свой собственный WebView. Я могу написать тестовый пример, чтобы проверить навигацию на ViewPager. Но как я могу проверить, поддерживает ли div в webview, который является первым дочерним элементом пейджера представления, предоставленной строки?Эспрессо-тестирование на веб-просмотре в ViewPager

onWebView().withElement(findElement(Locator.ID, "desgination")). 
       check(webMatches(getText(), containsString("Doctor"))); 

Это один бросает

android.support.test.espresso.AmbiguousViewMatcherException: 'WebView с JS Enabled' совпадает с множеством представлений в иерархии. Задача виды отмечены знаком «**** MATCHES ****».

ответ

3

Изменить код

onWebView(Matchers.allOf(isDisplayed(), isJavascriptEnabled())) 
    .withElement(findElement(Locator.ID, "desgination")) 
    .check(webMatches(getText(), containsString("Doctor"))); 

Метод isDisplayed() необходим для автоматического выбрать тот, который в данный момент на экране.

0

В моем случае у меня было несколько фрагментов с вложенными WebView. Я использовал add/show/hide с помощью функции fragmentManager. Это означало, что isDisplayed() вернул несколько совпадений. В конце концов, я назначен уникальный contentDescription каждому WebView:

webView.setContentDescription("webView[0]"); 

и расположен конкретный WebView с Эспрессо с:

onWebView(withContentDescription("webView[0]")) 
    .withElement(findElement(Locator.ID, "submit")) 
    .perform(webClick()); 

Edit: После прочтения немного больше о contentDescription стало ясно, что это является неправильным использованием переменной-члена, предназначенной для обеспечения доступности. docs

Смежные вопросы