Как автоматически обновить chromeDriver и geckDriver в селене - PullRequest
1 голос
/ 26 марта 2019

У меня настроена сетка селена с несколькими узлами, где я вручную загружаю chromeDriver и geckoDriver на все узлы селена и использую их для браузеров Chrome и Firefox соответственно.

Теперь для браузеров Chrome и Firefox (на всех компьютерах с селеновым узлом) установлено «Автоматическое обновление» (что необходимо, поскольку я хочу, чтобы мое приложение всегда тестировалось на последних версиях браузера), из-за этого браузеры на моих компьютерах-узлах продолжают обновляться чаще, и поскольку соответствующие обновления драйверов выполняются вручную, я вынужден входить на каждый компьютер-узел селена и обновлять их вручную .

Может ли этот процесс быть автоматизирован?

PS: я знаю, что докеризованная сетка селена может использоваться для извлечения / извлечения последних изображений браузера и их драйверов, однако переход от традиционной сетки селена к докеризованной сетке селена - это другое дело, и для ее реализации потребуется некоторое время.

1 Ответ

3 голосов
/ 26 марта 2019

Я бы сказал, что ваш нынешний подход не осуществим. Новые версии браузеров выпускаются без учета Selenium (или любых других драйверов). Как только будет выпущено новое обновление браузера, существует достаточно высокая вероятность того, что НЕТ существующего драйвера, который работает с этой версией. Команды Selenium часто выпускают обновленные драйверы в соответствии с новейшей версией браузера.

А поскольку вы автоматически обновляете свои браузеры, то, возможно, вы автоматически нарушаете свои тесты Selenium до тех пор, пока не будет выпущена новая версия драйвера или пока вы не понизите версию браузера.

Теперь вы можете с этим справиться и можете отключить тесты браузера, пока самые последние драйверы Selenium не будут работать с самой последней версией браузера. Если это так, то вот несколько решений:

1) Если вы используете C #, храните ваши драйверы в тестовом решении в виде пакета Nuget или в папке зависимостей. Затем укажите ссылку на этот драйвер, независимо от того, где он работает. Когда вам нужно обновить драйвер, вам буквально нужно обновить его только в одном месте и проверить изменения. Все клиентские машины, используя ваш CI-процесс, извлекают последний код, который включает этот новый драйвер.

2) Если по какой-то причине вы не хотите, чтобы драйвер в вашем проекте представлял собой пакет Nuget или сохраненную вручную зависимость, то ваш CI должен обработать процесс обновления. Направьте ваш код автоматизации на драйвер, расположенный в некотором общем каталоге на клиентском компьютере, на котором он в данный момент работает -> везде, где ваш компьютер хранит зависимости после их загрузки. Например; загрузка файлов селена через консоль на машине с Windows поместит их куда-то в% APPDATA% "C: \ Users \ xxxxxx \ AppData \ Roaming \ npm \ node_modules". Вот где должно выглядеть ваше тестовое решение.

Затем в ваших скриптах CI перед запуском каких-либо тестов загрузите последнюю версию драйвера. Синтаксис почти одинаков, если не идентичен в ядрах Windows и Linux / Unix. Предполагается, что у вас установлен npm.

npm install -g selenium

Если у вас уже есть последняя версия, то ничего не произойдет. Если вы этого не сделаете, последний скрипт будет загружен вашим скриптом CI перед запуском тестов. Затем ваше тестовое решение будет указывать, где драйвер хранится на клиенте, и оно будет автоматически использовать новейший драйвер.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...