Очередные сессии для Appium - PullRequest
0 голосов
/ 19 сентября 2019

Я пытаюсь создать простую ферму устройств (пока что расставим приоритеты для Android) с помощью Selenium Grid и Appium (v1.13.0), и мне нужна помощь с тестовыми очередями для Appium.

Например, яна хабе 2 узла Appium (работающих с 2 эмуляторами андроида), я хочу, чтобы тестовые запуски стояли в очереди для узла, если есть 2 тестовых прогона, указывающих на узел, то при последующем тестовом прогоне придется ждать первогоодин, чтобы закончить, прежде чем начать на этом узле.

В настоящее время, с моей настройкой, последующий тестовый запуск будет прерывать первый (принудительное завершение) вместо ожидания.

Ниже приведен мой файл json дляузел, другой узел будет иметь разные deviceName и port

{
    "capabilities":
    [
        {
            "browserName":"Nexus 5X",
            "platform":"Android",
            "version":"9",
            "maxInstances":1,
            "deviceName":"Nexus 5X"
        }
    ],
    "configuration":
    {
        "cleanUpCycle":2000,
        "timeout":30000,
        "proxy":"org.openqa.grid.selenium.proxy.DefaultRemoteProxy",
        "maxSession":1,
        "url":"http://127.0.0.1:4741/wd/hub",
        "host":"127.0.0.1",
        "port":4741,
        "register":true,
        "registerCycle":5000,
        "hubPort":4444,
        "hubHost":"127.0.0.1"
    }
}

Насколько я понимаю, Selenium Grid поддерживает организацию очередей сеансов, но Appium не поддерживает (или не знаю, о чем я знал).Когда я пытаюсь запустить другой сеанс Appium в том же узле, сеанс действительно должен дождаться закрытия предыдущего сеанса Appium, прежде чем начинать.Итак, чтобы достичь того, чего я хочу, у меня должно быть что-то посередине, чтобы запустить сеанс Appium на узле, когда запускается тестовый запуск, и закрывать его, когда заканчивается запуск теста.

Есть ли более простой способ сделатьэто?Или есть конфигурация Appium, поддерживающая это, о которой я не знаю?

1 Ответ

0 голосов
/ 19 сентября 2019
  • Насколько я понимаю, вам нужно запустить два тестовых примера на двух разных устройствах без каких-либо ручных действий.
  • Для этого вам нужно управлять действиями запуска и остановки Appium программным способом., это более простой и наиболее часто используемый полный путь.
  • Таким образом, вы можете управлять двумя или более двумя устройствами.

Ссылочный код приведен ниже для управления запуском и остановкой Appiumдействие программно.

def service = AppiumDriverLocalService.buildService(new AppiumServiceBuilder() .usingDriverExecutable(new File("/Applications/Appium.app/Contents/Resources/node/bin/node")) .withAppiumJS(new File("/Applications/Appium.app/Contents/Resources/node_modules/appium/bin/appium.js")) .withIPAddress("127.0.0.1") .usingPort(port as int) .withArgument(GeneralServerFlag.ROBOT_ADDRESS, udid as String) .withArgument(AndroidServerFlag.BOOTSTRAP_PORT_NUMBER, ((port as int) + 2) as String) .withArgument(SESSION_OVERRIDE) .withLogFile(new File("build/${device}.log")));

service.start();

Ссылка: https://www.seleniumeasy.com/appium-tutorials/how-to-start-appium-server-programmatically

...