Intereting Posts
Трансляция действия намерения BOOT_COMPLETED не работает должным образом Предотвращение перекрытия просмотров в RelativeLayout Как получить активность от другого процесса с помощью Robotium Как добавить проект библиотеки в Android Studio и использовать его? (Некоторые из них не вступили в силу) Есть ли HD-видео (более высокое качество) .3gp видео в YouTube для игроков в формате HTML? TextView: добавление текста после многоточия или изменение эллипсиса Профилирование акселерометра Android Как вы можете запустить изображения эмулятора VS Android? Ответ на обновления настроек в Android Android 1.5: Чтение SMS-сообщений Оверлей над панелью навигации в Android 4 Как удалить «.0» в целом числе при использовании double в java? Добавление элементов в Endless Scroll RecyclerView с помощью recycliewiew ReverseLayout Ошибка «Соединение с сервером не увенчалось успехом» в Кордове и jQuery Получение силы сигнала без активности

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) }