t.me/atinfo_chat Telegram группа по автоматизации тестирования

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

design-patterns
pytest
appium
mobile
selenium
python
Теги: #<Tag:0x00007fb2fb13bdd8> #<Tag:0x00007fb2fb13bc98> #<Tag:0x00007fb2fb13ba18> #<Tag:0x00007fb2fb13b888> #<Tag:0x00007fb2fb13b608> #<Tag:0x00007fb2fb13b428>

(at_sergei) #1

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

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


#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) #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) #4

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

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

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


(Vladislav Abramov) #5

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


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

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


(at_sergei) #8

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


#9

iasno, nu togda rekomenduiu k prochteniu https://appiumpro.com/editions/7 i eshe obratit’ vnimanie na “app scheme” v url


(at_sergei) #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) #11

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

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

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

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