Что использовать вместо веб-приложений Azure, чтобы разрешить установку Google Chrome в среде приложений? - PullRequest
0 голосов
/ 06 июня 2018

Я только что создал функцию для нашего приложения, которая генерирует отчет PowerPoint из данных, которые данный пользователь имеет в нашей системе.

Короче говоря, сервер порождает экземпляр Google Chrome, используя Selenium ChromeDriver , и оттуда очищает графики от нашего приложения, работающего в Chrome.Это было сделано таким образом, чтобы диаграммы в отчете выглядели точно так же, как они отображаются в браузерах клиентов.

Мы используем Azure Web Apps для размещения наших сред разработки и производства,и хотя моя функция отчетов отлично работает в локальных средах, она не работает после развертывания в любых других средах, поскольку она зависит от установленного Chrome, и я не могу установить его в изолированной среде Azure Web App в изолированной среде .(вы можете увидеть этот другой мой вопрос, чтобы узнать, где что-то идет не так: PowerShell StartProcess: неверный дескриптор )

SO

Что я очень хочу знать, так это то, что, если я буду смотреть дальше, если среда веб-приложения Azure не позволит мне установить Google Chrome.

  • Похоже, что использование Service Fabric может позволить мне установить то, что мне нужно (https://docs.microsoft.com/en-us/azure/app-service/choose-web-site-cloud-service-vm),, но кажется, что сделать большие изменениячтобы упростить эту небольшую часть функции.

  • Другой вариант - просто изменить архитектуру функции, чтобы она не зависела от того, как сервер порождает экземпляр Google Chrome.... но я бы предпочел избегать этого, если бы у меня был простой способ получить то, что у меня работает.

  • В идеале, был бы просто способ установить Google Chromeв данной среде, но я потратил целых 10 часов, пытаясь добиться этого сейчас, и это не выглядит многообещающе.

Ответы [ 2 ]

0 голосов
/ 12 марта 2019

У меня возникла эта проблема с chromedriver.exe, нуждающимся в реальном Chrome.Поскольку я не могу установить Chrome в службе приложений Azure, я пытаюсь использовать переносную версию Chrome.При использовании веб-драйвера Chrome я сообщаю ему, где найти двоичный файл Chrome.

var options = new ChromeOptions();
options.AddArguments("headless"); // any options you need
options.BinaryLocation = "YOUR CHROME BINARY PATH HERE";
var driver = new ChromeDriver("YOUR CHROME DRIVER PATH HERE", options);

Вы должны иметь возможность копировать переносимые файлы Chrome, так как установка не требуется.Несмотря на большой объем, 250 МБ, поскольку он включает в себя непереносимую версию.

Обязательно используйте версию Chrome, совместимую с вашим ChromeDriver, как указано в документации

0 голосов
/ 06 июня 2018

Есть пара решений, которые будут работать - в зависимости от вашего кода и зависимостей фреймворка.

IMO - самый простой способ - создать код в док-контейнере (в котором работает Selenium ChromeDriver) и развернуть его либо с помощью функций контейнера в веб-приложениях, либо запустить его по требованию через ACI (экземпляры контейнера Azure).) и создайте отчет и поместите его в хранилище Azure.В контейнере у вас есть намного больше опций - и у вас есть множество опций о том, как его запустить.Ускорение ACI по требованию для выполнения работы может быть выполнено несколькими способами (например, с помощью кода или с помощью логических приложений или автоматизации Powershell / Azure).

Вот некоторые ссылки на запущенные контейнеры в службе приложений.:

https://docs.microsoft.com/en-us/azure/app-service/containers/

https://docs.microsoft.com/en-us/azure/app-service/containers/tutorial-custom-docker-image

Вы можете начать с создания и добавления кода из этого изображения: https://github.com/SeleniumHQ/docker-selenium

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

Множество опций - но в обычной изолированной программной среде веб-приложения - вы ограничены.

...