Android Espresso – веб-браузер

у меня есть вопрос

Я хочу проверить, запускается ли после нажатия кнопки веб-браузер, используя эспрессо. И вопрос в том, можно ли даже испытать такую ​​вещь? Если да, то какие идеи я могу сделать?

Вообще-то, нет. Espresso позволит вам щелкнуть по кнопке, и как только браузер будет запущен, тест завершится. Альтернатива, которую у вас есть, – это ваш класс, который подстрекает браузер Intent, издеваясь, чтобы вы могли протестировать оставшийся поток (если есть).

Посмотрите в этом ответе: Контролируйте, когда закончится тест автоматизации – Espresso , где я расскажу, как вы могли это достичь.

Хотя это старый вопрос, а просто размещение здесь, чтобы помочь кому-то еще. У меня была такая же ситуация, когда я хотел проверить, был ли запущен конкретный URL-адрес в браузере или нет. Я получил реальную помощь по этой ссылке

Я работал с этим куском кода:

Intents.init(); Matcher<Intent> expectedIntent = allOf(hasAction(Intent.ACTION_VIEW), hasData(EXPECTED_URL)); intending(expectedIntent).respondWith(new Instrumentation.ActivityResult(0, null)); onView(withId(R.id.someid)).perform(click()); intended(expectedIntent); Intents.release(); 

Таким образом, он проверяет, открывается ли браузер с правильным URL-адресом и намеревается () делает магию здесь, позволяя укусить намерение. Используя это, мы можем перехватить его, чтобы он никогда не отправлялся в систему.

Для удобства я предлагаю полный пример:


Производственный код:

 register_terms.text = Html.fromHtml(getString(R.string.register_terms, getString(R.string.privacy_policy_url), getString(R.string.register_terms_privacy_policy), getString(R.string.general_terms_and_conditions_url), getString(R.string.register_terms_general_terms_and_conditions))) 

Строки XML:

 <string name="register_terms">By registering you accept our &lt;a href=\"%1$s\">%2$s&lt;/a&gt; and the &lt;a href=\"%3$s\">%4$s&lt;/a&gt;.</string> <string name="register_terms_privacy_policy">Privacy Policy</string> <string name="register_terms_general_terms_and_conditions">General Terms and Conditions</string> <string name="privacy_policy_url" translatable="false">https://www.privacypolicy.com</string> <string name="general_terms_and_conditions_url" translatable="false">https://www.generraltermsandconditions.com</string> 

Тестовый код:

 @Before fun setUp() { Intents.init() } @After fun tearDown() { Intents.release() } @Test fun when_clickPrivacyLink_then_openPrivacyUrl() { val expected = allOf(IntentMatchers.hasAction(Intent.ACTION_VIEW), IntentMatchers.hasData(string(privacy_policy_url))) Intents.intending(expected).respondWith(Instrumentation.ActivityResult(0, null)) onView(ViewMatchers.withId(R.id.register_terms)) .perform(openLinkWithText(string(register_terms_privacy_policy))) Intents.intended(expected) } 
Intereting Posts
Как перекрыть элементы в LinearLayoutManager – RecyclerView (например, карты укладки) Как переадресовать все входящие вызовы на голосовую почту через кодирование в Android Android: захват видео на устройстве или эмуляторе Импорт не может быть разрешен: import com.google.android.maps. *; Программа генерирует одно и то же «случайное» число с каждым исполнением Как изменить значок MenuItem в ActionBar программно Как запустить приложение на переднем плане на Android версии 5.1 Каков андроидный эквивалент функций конвертирования / конвертации UIView? Изменение вкладок ActionBar подчеркивает цвет программно Как вы можете получить доступ к содержимому баз данных Android Emulator? Подача питания с USB-устройства на планшет Android через кабель OTG Android Studio: Неожиданное исключение верхнего уровня (завершено с ненулевым значением выхода 2 ..) Странное поведение drawableRight для коммутатора Android – объединение двух файлов MP4 Как получить имя изображения ImageView в Android?