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

Распараллеливание тестов для реальных Android Selenium Grid +Appium согласно udid устройства.

selenium-grid
android
appium
Теги: #<Tag:0x00007f7b64dd97f8> #<Tag:0x00007f7b64dd9690> #<Tag:0x00007f7b64dd93e8>

(елена бырканова) #1

Доброго времени суток. Никак не могу решить вопрос уже несколько дней. Распараллеливаю тесты на реальных андроид устройствах в selenium grid + appium.
Настройки все прописала в json файлах, udid там указаны. Стартую 2 нода:
appium --nodeconfig /home/lena/appium/samsung_SM-G531H.json -p 4725
appium --nodeconfig /home/lena/appium/galaxy_G1_mini.json -p 4726
И хотя в настройках указаны и порты, и udid устройств, но сессии устройств с определнным udid могут начаться не на том порте, который нужен! Никак не могу понять, что не так?
Вот файлы настроек:
===============samsung_SM-G531H.json -p 4725:============================
{
“capabilities”:
[
{
“browserName”: “SAMSUNG_SM-G531H”,
“version”:“5.1.1”,
“maxInstances”: 1,
“platform”:“ANDROID”,
“device”:“420098e1a00a5300”
}],

"configuration":

{
“nodeTimeout”:120,
“port”:4725,
“hubPort”:4444,
“proxy”: “org.openqa.grid.selenium.proxy.DefaultRemoteProxy”,
“url”:“http://127.0.0.1:4725/wd/hub”,
“hub”: “127.0.0.1:4444/grid/register”,
“host”: “127.0.0.1”,
“hubHost”:“127.0.0.1”,
“nodePolling”:2000,
“registerCycle”:10000,
“register”:true,
“cleanUpCycle”:2000,
“timeout”:30000,
“maxSession”:1,
“unregisterIfStillDownAfter”: 60000
}
}

==============galaxy_G1_mini.json -p 4726================================
{
“capabilities”:
[
{
“browserName”: “galaxy_G1_mini”,
“version”:“5.1.1”,
“maxInstances”: 1,
“platform”:“ANDROID”,
“device”:“920104b368f5834a”
}],

"configuration":

{
“nodeTimeout”:120,
“port”:4726,
“hubPort”:4444,
“proxy”: “org.openqa.grid.selenium.proxy.DefaultRemoteProxy”,
“url”:“http://127.0.0.1:4726/wd/hub”,
“hub”: “127.0.0.1:4444/grid/register”,
“host”: “127.0.0.1”,
“hubHost”:“127.0.0.1”,
“nodePolling”:2000,
“registerCycle”:10000,
“register”:true,
“cleanUpCycle”:2000,
“timeout”:30000,
“maxSession”:1,
“unregisterIfStillDownAfter”: 60000
}
}

Капабилитес (DeviceName - это и есть udid):
public void setCapabilities(String deviceName, String platformVersion) {
File callApp = new File(FOLDER_NAME + FILE_NAME);
capabilities.setCapability(“noReset”, NO_RESET_APP);
capabilities.setCapability(MobileCapabilityType.PLATFORM_VERSION, platformVersion);
capabilities.setCapability(MobileCapabilityType.PLATFORM_NAME, PLATFORM_NAME);
capabilities.setCapability(“appPackage”, APP_PACKAGE);
capabilities.setCapability(“appActivity”, APP_PACKAGE + “.ui.activity.MainActivity”);
capabilities.setCapability(“udid”, deviceName);
capabilities.setCapability(MobileCapabilityType.NEW_COMMAND_TIMEOUT, NEW_COMMAND_TIMEOUT);
capabilities.setCapability(“unicodeKeyboard”, true);
capabilities.setCapability(“autoAcceptAlerts”, true);
capabilities.setCapability(“app”, callApp.getAbsolutePath());
}

Что тут не так?


(Bogdan) #2

Попробуй сделать как здесь http://www.vimalselvam.com/2016/05/15/selenium-grid-for-appium-mobile-automation/ а потом передавай applicationName через xml файл в Testng через аннотацию @Parameters({ “mobile” }) должно получиться


(елена бырканова) #3

Все получилось, спасибо огромное!:smiley: