Мы столкнулись с той же проблемой в нашем решении Visual Studio + Azure. Чтобы иметь возможность выполнять тесты, нам нужно более высокое разрешение на виртуальной машине, чем 1027 x 768. Но поскольку это Azure и вы платите за включенные машины, мы также хотим выключать их после каждого запуска, чтобы снизить стоимость ( особенно полезно, когда вы хотите немного увеличить масштаб).
Поэтому очень неприятно, что нет простого варианта, позволяющего загружать виртуальную машину в определенном (указанном) разрешении. Если есть что-то более простое, чем то, что я вам покажу, дайте мне знать, но я не нашел ничего. Поэтому я поддержал идею, упомянутую Несси. В качестве обходного пути мы сделали следующее.
Идеи возможного решения
По сути, мы использовали этот пост как руководство. Наиболее важными вещами, которые мы использовали, были учетные данные Windows и TERMSRV.
Наша установка
- Сервер сборки Visual Studio
- Четыре виртуальные машины Azure, одна машина - это сетка селена, остальные три - узлы.
Наше решение
Сначала мы позволяем серверу сборки запускать все машины в группе ресурсов (пока все хорошо). Затем мы создали сценарий Powershell, который запускается на сервере сборки для проверки узлов и ожидает, пока служба RDP станет доступной. Это было необходимо, поскольку может пройти до 10 минут, прежде чем мы увидим, что эта служба активна. И, наконец, мы запускаем Powershell на виртуальной машине selenium-grid-hub, чтобы установить RDP-подключения ко всем узлам с определенным разрешением.
Немного подробнее, чтобы убедиться, что все происходит автоматически и без необходимости ручного ввода:
- Создание и экспорт / импорт сертификатов из каждого узла в хаб
- Убедитесь, что учетные данные хранятся в диспетчере учетных данных> Windows Credentails (мы создали одного пользователя на всех машинах, чтобы немного облегчить жизнь)
- Creating a script for checking if the RDP service is active
- We call this script
C:\Scripts\RDPServiceRunCheck.ps1
(see example below) in a VS build block with the arguments $(Password) $(Chrome-node) $(Username)
- Где все эти аргументы были сохранены в переменных на сервере сборки
- Вот код для скрипта на github
- Creating a executable for starting a RDP in a certain resolution
- We call this script
C:\Scripts\Resolution.RDP.Remoting.exe
(see example below) in a VS building block with the arguments "C:\Scripts\$(Chrome-node).rdp" 1600 1200
- Где файл * .rdp для каждой машины хранился (заранее) в этой папке, а
1600 1200
- это разрешение, которое мы хотим установить
- Вот код исполняемого файла на github.
person
Mark Duivesteijn
schedule
20.12.2017