Принудительно не используйте 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 и продолжаете обновлять свою локальную версию, иначе вы можете столкнуться с ситуацией, когда выйти из синхронизации