at_sergei
(at_sergei)
20.Август.2019 19:05:42
#1
Подскажите пожалуйста, возможно ли реализовать проверку deeplink’a на appium?
Сценарий, примерно, следующий:
Создать deeplink в приложении -> открыть браузер -> перейти по ссылке deeplink в браузере -> перенаправит в приложение на определенную страницу и дальше продолжить работать с приложением.
Интересно, возможно ли свернуть приложение и запустить браузер на мобильном девайсе, перейти по ссылке, которую ранее создал?
Возможно, есть какой-нибудь другой пусть, для проверки этой функциональность?
Тестирую мобильное приложение на appium и pytest.
olyv
21.Август.2019 08:22:37
#2
net neobchodimosti otkryvat’ browser. Deep-links mozno otkryt’ isplzuja appium driver, kotoryi v svoiu ocered’ ispolzuet libo adb
(android), libo simctl
(ios).
at_sergei
(at_sergei)
21.Август.2019 16:21:06
#3
@olyv , a может быть у Вас есть пример реализации?
Нашел такой пример:
driver.execute("mobile: deepLink", {url: 'https://www.realtor.com/realestateandhomes-search/San-Jose_CA', package: 'com.move.realtor'});
Но, у меня не работает, пишет - KeyError: ‘mobile: deepLink’
at_sergei
(at_sergei)
21.Август.2019 20:18:38
#4
Частично заработало: если указать в DesiredCapabilities браузер, но еще нужно использовать нужную версию драйвера, тк на телефоне и аппиуме они могут отличаться.
а в тесте указать: self.driver.get(deeplink)
Но, мне это решение не подходит, тк чтобы пользователь мог открыть приложение по диплинку, надо чтобы он прежде был залогинен в приложении
madvlaydin
(Vladislav Abramov)
22.Август.2019 04:11:27
#5
подложите профиль для запуска браузера с кукой логина
olyv
22.Август.2019 06:47:41
#6
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
at_sergei
(at_sergei)
22.Август.2019 10:15:10
#7
@olyv приложение написано на react native. Кто-то его относит к нативным, а кто-то к гибридным)
at_sergei
(at_sergei)
22.Август.2019 10:27:08
#8
Такой фокус не пройдет, тк я тестирую мобильно приложение
olyv
22.Август.2019 10:31:13
#9
iasno, nu togda rekomenduiu k prochteniu Appium Pro: Speeding Up Tests With Deep Links i eshe obratit’ vnimanie na “app scheme” v url
at_sergei
(at_sergei)
22.Август.2019 12:54:30
#10
Начал смотреть в сторону переключения между приложениями, но наткнулся опять на ошибки:
Переключамся на хром:
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
at_sergei
(at_sergei)
22.Август.2019 13:04:28
#11
Ребята, вообщем все заработало, я просто не правильную команду использовал:
В место execute
, надо execute_script
для python
Вот так все работает и deeplink’y открывает:
self.driver.execute_script("mobile: deepLink", {'url': 'https://link/gNQHDAOXkZ', 'package': 'com.android.chrome'})
Надеюсь, что кому-нибудь пригодится
1 лайк
Мне пригодилось бы, но не работает У меня вываливается ошибка, что подобного метода не существует для mobile. Уточню, что пишу тест для iOS.
WebDriverException("Unknown mobile command 'deepLink')
На iOSe может не получится.
http://appium.io/docs/en/commands/mobile-command/
Как видите эта команда только для Андроида.
Дла айоса
Открываем браузер
driver.activateApp("com.apple.mobilesafari")
В браузере вводим линк и переходим по нему
Для андроида вообще легко
driver.get("yourAppName://yourLink.com");