Есть отличная удаленная работа для php+codeception+jenkins+allure+docker спецов. 100% remote! Присоединиться к проекту

Как настроить работу Appium на удаленной машине через Grid

grid
appium
Теги: #<Tag:0x00007f7b6988f7c0> #<Tag:0x00007f7b6988f270>

(Ramon Menezes) #1

доброе время суток
столкнулся со следующей проблемой:
локально настроил Appium + Android SDK для тестирования веб приложения на мобильном устройстве. но когда решил перейти на СI то тесты не работают

Что сделал:

  1. на вм (слейв) поставил Appium и Android SDK

  2. подключаю ноду к хабу : java -jar selenium-server-standalone-2.44.0.jar -role node -hub http://GridHost:4444/grid/register

  3. запускаю тесты c локальной машины на слейве: driver = new RemoteWebDriver(new URL(“http://GridHost:4444/wd/hub”)…
    в ответ

    Exception in thread “main” org.openqa.selenium.WebDriverException: Error forwarding the new session cannot find : Capabilities [{app=Android, platform=WINDOWS, autoWebview=true, deviceName=test1, platformName=Android, browserName=Android, device=Android, version=4.4}]

судя по логам я понимаю что этот вариант не правильный, но понять что именно не правильно пока не могу, пните пожалуйста в правильную сторону
заранее спасибо


(Sergey Korol) #2

Когда-то помню копался уже с гридом под мобайл. Проблема была в adb, который заточен сугубо под localhost. Т.е. хаб не мог найти нод устройства. После некоторого гугления где-то на просторах инета находил пересобранный (одним хорошим человеком) adb, умеющий работать не только с localhost. Тогда проблема решилась. Конкретные ссылки не приведу, т.к. было это года 1.5 назад.


(Ramon Menezes) #3

еще в процессе но все же вопрос наперед,
если создать джобу в дженкинсе, которая будет посылать команду на сборку и запуск проекта на вм, с проекта уже вызывать локалхост апиума
имеет право на жизнь или не мучатся?


(Sergey Korol) #4

Без фикса adb получится только в случае, если hub / node сконфигурированы на localhost. Хотя, может конечно за 1.5 года что-то поменялось. :blush:


(Ramon Menezes) #5

Как я это вижу. Когда мы запусеаем на локальной машине, то сервер Апиум у нас уже поднят. В тесте мы поднимаем драйвер WebDriver driver = new AppiumDriver(new URL(“http://127.0.0.1:4723/wd/hub”), capabilities) , оно обращается к апиуму и тот уже дальше исполняет тесты. CI мы используем как правило для стгивание последнего кода из репозитория, и запуска по расписанию. То есть все запускается точно также, просто процесы автоматизированы. Ну и на этой же машине где CI должен быть поднят Апиум по адресу (new URL(“http://127.0.0.1:4723/wd/hub”), и тогда все по теории должно работать
Разве не?


(Sergey Korol) #6

Ну допустим вы подняли хаб на тачке с CI, но ноды ведь тоже должны быть там, если уж вы ссылаетесь на localhost.


(Ramon Menezes) #7

хаб поднят, вм к нему подключается как слейв, ну все как обычно. после этого запускается тест в котором вызываеться 127,0,0,1 – апиума, который в свою очаредь дергает нужный эмулятор…надо пробовать, теория это здорово но практика обычно говорит свое…отпишусь по результатам


(cactus) #8

Нужно запустить аппиум с флагом --nodeConfig nodeConfig.json , пример файла - http://appium.io/slate/en/v1.2.0/?java#grid-node-configuration-example-json-file .