Принудительно не используйте Selenium RC в сетке

Я должен предоставить сетку Selenium и хотел бы обеспечить, чтобы наши разработчики больше не использовали RC API. Из того, что я узнал, RC устарел, и на стороне клиента вам нужно импортировать устаревший код: https://seleniumhq.github.io/selenium/docs/api/java/deprecated-list.html

Но что, если разработчик использует старые вызовы RC? Я не нашел способа отключить поддержку RC на хабе. Я сделал свои попытки на Selenium 3.4.0

1 ответ

Нет прямого способа сделать это. Но вот хак о том, как это можно сделать.

  • В вашем тестовом проекте создайте новый пакет org.openqa.grid.selenium.proxy
  • Теперь скопируйте класс DefaultRemoteProxy в этот пакет, который вы создали (Это заставит Java теперь начать использовать вашу версию DefaultRemoteProxy вместо того, что доступно в базе кода Selenium)
  • Теперь в пределах скопированной версии DefaultRemoteProxy измените его конструктор, как показано ниже.
  • Используйте один из приведенных ниже механизмов для создания артефакта, который будет использоваться для запуска вашего Хаба.
    • Создайте uber jar из своего тестового проекта, чтобы его можно было использовать в качестве автономного jar Selenium (или)
    • Создайте банку из своего проекта, поместите ее в CLASSPATH автономной банки Selenium, а затем используйте java -cp (Не стесняйтесь выбирать тот вариант, который вам подходит)
  • Используйте артефакт, созданный выше, начните с концентратора.

После этого вы сможете запретить людям регистрировать свои узлы на вашем концентраторе, где используется протокол Selenium RC.

public DefaultRemoteProxy(RegistrationRequest request, Registry registry) {
    super(request, registry);
    for (TestSlot slot : getTestSlots()) {
        if (slot.getProtocol() == SeleniumProtocol.Selenium) {
            throw new IllegalStateException("Selenium RC Protocol is NOT supported.");
        }
    }

    pollingInterval = config.nodePolling != null ? config.nodePolling : DEFAULT_POLLING_INTERVAL;
    unregisterDelay = config.unregisterIfStillDownAfter != null ? config.unregisterIfStillDownAfter : DEFAULT_UNREGISTER_DELAY;
    downPollingLimit = config.downPollingLimit != null ? config.downPollingLimit : DEFAULT_DOWN_POLLING_LIMIT;
}

Это должно помочь вам достичь того, что вы хотите.

Обратная сторона этого заключается в том, что вам необходимо убедиться, что вы постоянно отслеживаете содержимое org.openqa.grid.selenium.proxy.DefaultRemoteProxy в базе кода Selenium и продолжаете обновлять свою локальную версию, иначе вы можете столкнуться с ситуацией, когда выйти из синхронизации

Другие вопросы по тегам