Свернуть браузер и перейти по deeplink'y

Подскажите пожалуйста, возможно ли реализовать проверку deeplink’a на appium?
Сценарий, примерно, следующий:
Создать deeplink в приложении -> открыть браузер -> перейти по ссылке deeplink в браузере -> перенаправит в приложение на определенную страницу и дальше продолжить работать с приложением.
Интересно, возможно ли свернуть приложение и запустить браузер на мобильном девайсе, перейти по ссылке, которую ранее создал?
Возможно, есть какой-нибудь другой пусть, для проверки этой функциональность?

Тестирую мобильное приложение на appium и pytest.

net neobchodimosti otkryvat’ browser. Deep-links mozno otkryt’ isplzuja appium driver, kotoryi v svoiu ocered’ ispolzuet libo adb (android), libo simctl (ios).

@olyv, a может быть у Вас есть пример реализации?

Нашел такой пример:

driver.execute("mobile: deepLink", {url: 'https://www.realtor.com/realestateandhomes-search/San-Jose_CA', package: 'com.move.realtor'});

Но, у меня не работает, пишет - KeyError: ‘mobile: deepLink’

Частично заработало: если указать в DesiredCapabilities браузер, но еще нужно использовать нужную версию драйвера, тк на телефоне и аппиуме они могут отличаться.

а в тесте указать: self.driver.get(deeplink)

Но, мне это решение не подходит, тк чтобы пользователь мог открыть приложение по диплинку, надо чтобы он прежде был залогинен в приложении

подложите профиль для запуска браузера с кукой логина

mobile:deepLink “Opens a deep-link URL for testing Instant Apps”. To est’ eto ne budet rabotat’ dla nativnogo prilozenia.

U Vas native app ili hybrid? Po hybrid ne podskazu

@olyv приложение написано на react native. Кто-то его относит к нативным, а кто-то к гибридным)

Такой фокус не пройдет, тк я тестирую мобильно приложение

iasno, nu togda rekomenduiu k prochteniu Appium Pro: Speeding Up Tests With Deep Links i eshe obratit’ vnimanie na “app scheme” v url

Начал смотреть в сторону переключения между приложениями, но наткнулся опять на ошибки:

Переключамся на хром:

self.driver.start_activity('com.android.chrome', 'com.google.android.apps.chrome.Main')

Открываю ссылку:

self.driver.get("https://link/gNQHDAOXkZ")

Падает с ошибкой, что нужное приложение не запущено:

            raise exception_class(message, screen, stacktrace, alert_text)
       raise exception_class(message, screen, stacktrace)
E       selenium.common.exceptions.WebDriverException: Message: An unknown server-side error occurred while processing the command. Original error: Error attempting to start URI. Original error: Error: Starting: Intent { act=android.intent.action.VIEW dat=https://link/... pkg=com.ofss.fcdb.mobile.android.phone.AER.launcher }
E       Error: Activity not started, unable to resolve Intent { act=android.intent.action.VIEW dat=https://link/... flg=0x10000000 pkg=com.ofss.fcdb.mobile.android.phone.AER.launcher }

../../venv/lib/python3.6/site-packages/selenium/webdriver/remote/errorhandler.py:242: WebDriverException

Ребята, вообщем все заработало, я просто не правильную команду использовал:
В место execute, надо execute_script для python

Вот так все работает и deeplink’y открывает:

self.driver.execute_script("mobile: deepLink", {'url': 'https://link/gNQHDAOXkZ', 'package': 'com.android.chrome'})

Надеюсь, что кому-нибудь пригодится

1 Like

Мне пригодилось бы, но не работает :slightly_frowning_face: У меня вываливается ошибка, что подобного метода не существует для mobile. Уточню, что пишу тест для iOS.

WebDriverException("Unknown mobile command 'deepLink')

На iOSe может не получится.
http://appium.io/docs/en/commands/mobile-command/
Как видите эта команда только для Андроида.

Дла айоса

  1. Открываем браузер
    driver.activateApp("com.apple.mobilesafari")
  2. В браузере вводим линк и переходим по нему

Для андроида вообще легко
driver.get("yourAppName://yourLink.com");