Добрый день. Пытаюсь настроить параллельные автотесты приложения на нескольких андроид устройствах.
Для каждого из устройств создал json файл вида:
{ "capabilities": [ { "deviceName": "LGM700dcbaf29c", "version":"8.1.0", "maxInstances": 10, "platform":"ANDROID" } ], "configuration": { "cleanUpCycle":2000, "timeout":30000, "proxy": "org.openqa.grid.selenium.proxy.DefaultRemoteProxy", "url":"http://127.0.0.1:4723/wd/hub", "host": "127.0.0.1", "port": 4723, "maxSession": 10, "register": true, "registerCycle": 5000, "hubPort": 4444, "hubHost": "127.0.0.1" } }
Запускаю хаб, и отдельные инстансы Аппиума командой вида appium -a 127.0.0.1 -p 4723 -bp 2253 -U LGM700dcbaf29c --nodeconfig /home/test/LGM700dcbaf29c.json
В Environment.py прописал следующее:
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities def before_feature(context, feature): caps = DesiredCapabilities.ANDROID.copy() caps["app"] = WD + "/apps/" + AppName caps["appPackage"] = "ru.messenger.android" caps["appActivity"] = "ru.messenger.android.activity.main.StartActivity" caps["newCommandTimeout"] = "1000" context.driver = webdriver.Remote( command_executor="http://127.0.0.1:4444/wd/hub", desired_capabilities=caps )
Но тут появляется проблема. DesiredCapabilities.ANDROID отдает только {'browserName': 'android', 'version': '', 'platform': 'ANDROID'}. Мне же для подключения еще нужен deviceName. В интернете советуют добавлять deviceName в caps вручную, так же как добавляются и остальные параметры, но тогда как запустить тест на двух устройствах, если вручную прописан deviceName одного из них. Я думал что можно каким-то образом вытаскивать deviceName из json файла который я указываю при запуске инстанса, но DesiredCapabilities.ANDROID.copy() видимо мне в этом не поможет. Есть какой-то вариант?