2017-01-28 6 views
1

Деловая ситуация: Я пытаюсь автоматизировать производственный процесс, чтобы заменить людей автоматикой. Я получаю много триггеров из приложения в определенный день с различными интервалами и как только i получить триггер, скрипты должны запускаться автоматически. У меня есть 80 узлов (на 80 машинах), настроенных на концентратор Selenium.Как эффективно распределить нагрузку с помощью селеновой сетки

Сценарий: Trigger 1 должен выполнить сценарий 1 в одном из свободного узла. Триггер 2 должен выполнить скрипт 2 в одном из свободных узлов. Триггер 3 должен выполнить скрипт 3 в одном из свободных узлов. Триггер 4 должен выполнить сценарий 1 в одном из свободных узлов.

В приведенном выше сценарии сценарий 1 всегда будет выполняться только на одном конкретном компьютере. Это связано с тем, что при создании объекта удаленного веб-драйвера обязательно указывать URL удаленного хоста. Поэтому, если я получаю два триггера для запуска сценария 1 на В то же время выполнение будет происходить последовательно на одной машине, хотя у меня много компьютеров, сидящих без дела. Параллельное выполнение не является идеальным выбором здесь, так как я получаю триггеры для запуска 50-60 исполнений одного и того же сценария одновременно.

Устранение проблемы: Я не могу эффективно распределять нагрузку на свободные машины.

Это ограничение сетки селена? Есть ли лучший способ управлять распределением нагрузки? Можно ли создать удаленный webdriver без указания URL-адреса узла?

ответ

1

В приведенном выше сценарии Сценарий 1 всегда будет получить выполнены в одной отдельные машины only.This, потому что это обязательно указать удаленный URL хоста при создании удаленного веб-драйвер object.So, если я получаю два триггер выполните сценарий 1 одновременно, тогда выполнение будет происходить последовательно на одной машине, хотя у меня много компьютеров , сидящих без дела. Параллельное выполнение не является идеальным выбором здесь , поскольку я получаю триггеры, чтобы начать 50-60 исполнений одного и того же сценария на одновременно.

Сетка была построена таким образом, чтобы обеспечить правильное распределение распределения, и ваши тесты не должны это понимать. Как вы создаете свой RemoteWebDriver? Какой URL-адрес вы передаете ему? Вы должны передавать URL-адрес Grid-хаба, а не URL-адрес узла.

До тех пор, пока ваши тесты ограничиваются только ароматом браузера в DesiredCapabilities, концентратор будет иметь возможность распределять тесты равномерно по всем узлам. Если вы также включите PLATFORM в уравнение, то количество узлов, которые соответствуют совпадению, будет уменьшено. В любом случае вам нужно будет указать следующие дополнительные сведения для вашей проблемы, чтобы получить конкретный ответ:

  1. Как вы начинаете свои узлы? [Есть ли какая-либо конфигурация узла JSON? ]
  2. Как вы инстанцирование вашего RemoteWebDriver
+0

Я начинаю узел вручную с помощью команды «Java -jar Селена-серверного автономного-3.0.0.jar -ролевого узла -hub Http: // : 4444/grid/register -browser browserName = firefox, maxInstances = 1 -maxSession 1 ". Я могу вызвать скрипт на удаленной машине, когда URL-адрес узла передается объекту удаленного веб-драйвера. Однако, если URL-адрес концентратора передан то я получаю ошибку ниже –

+0

30 января 2017 10:12:55 org.openqa.selenium.remote.ProtocolHandshake createSession INFO: Попытка сеанса би-диалекта, предполагая, что закон права Postel справедлив на удаленном конце Jan 30, 2017 10:12:55 AM org.openq a.selenium.remote.ProtocolHandshake createSession INFO: Возврат к оригинальному протоколу OSS JSON. Jan 30, 2017 10:12:55 AM org.openqa.selenium.remote.ProtocolHandshake createSession INFO: Возвращение к прямому удаленным конечным соединениям W3C –

+0

Исключение из потока «main» org.openqa.selenium.SessionNotCreatedException: невозможно создать новый удаленный сеанс. желаемые возможности = возможности [{marionette = true, browserName = firefox, version = 48.0.1, platform = WINDOWS}], необходимые возможности = возможности [{}] Информация о сборке: версия: '3.0.0', версия: '350cf60 ', время:' 2016-10-13 10:48:16 -0700 ' Системная информация: host:' ', ip:' ', os.name:' Windows Server 2012 R2 ', os.arch:' amd64 ', os.version:' 6.3 ', java.version:' 1.8.0_101 ' Информация о драйвере: driver.version: RemoteWebDriver –

-1

При использовании Selenium Grid концентратор настроен так, что физические машины регистрируются с определенными возможностями. Например, Mac зарегистрируется как Mac с Safari. Linux-машина как таковая с FireFox и Windows-машиной в качестве машины, способной работать в IE.

В вашем тесте вы подключаетесь к HUB и запрашиваете подключение к машине с определенными возможностями. Затем концентратор отвечает адресом доступного компьютера, к которому затем подключается скрипт. Это единственная роль, которую играет Hub, и поэтому она должна быть именно тем, что вы ищете.

Пройдитесь по образцу на сайте Selenium HQ, и он должен уточнить его для вас. Этот пример можно запустить на одной машине, но в идеале было бы неплохо разбить его на несколько.