Драйвер Chrome не работает в веб-приложениях Azure

Я использовал приложение.NetCore2 и пытаюсь сделать снимок экрана с заданным URL. Он отлично работает на локальном компьютере, но после развертывания в Azure возникают проблемы при создании Webdriver.

 at OpenQA.Selenium.DriverService..ctor(String servicePath, Int32 port, String driverServiceExecutableName, Uri driverServiceDownloadUrl)
↵   at OpenQA.Selenium.Chrome.ChromeDriverService..ctor(String executablePath, String executableFileName, Int32 port)
↵   at OpenQA.Selenium.Chrome.ChromeDriver..ctor(String chromeDriverDirectory, ChromeOptions options)
↵   at SceenshotApp.Service.Screenshot.TakeScreenshot(String url, Int32 width, Int32 height, Int32 delay) in D:\Projects\TFT\Bitbucket-Linkury\Website\Tools\ScreenshotAPI\DotNetCore\SceenshotApp\SceenshotApp\Service\Screenshot.cs:line 21
↵   at SceenshotApp.Controllers.HomeController.TakeScreenshot(String url, Int32 width, Int32 height, Int32 scale, Int32 delay) in D:\Projects\TFT\Bitbucket-Linkury\Website\Tools\ScreenshotAPI\DotNetCore\SceenshotApp\SceenshotApp\Controllers\HomeController.cs:line 51"

ниже моего кода

 public static string GetScreenshot(string url)
    {
        ChromeOptions options = new ChromeOptions();
        var driver = new ChromeDriver(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location), options);
        driver.Manage().Window.Size = new System.Drawing.Size(1000, 768);
        driver.Manage().Timeouts().ImplicitWait = TimeSpan.FromMilliseconds(100);
        driver.Navigate().GoToUrl(url);
        driver.Close();
        driver.Quit();
        return path;
    }

Как я могу использовать драйвер Chrome в Azure?

1 ответ

Как сказал @IvanYang, Selenium не поддерживается в службе приложений Azure для Windows, как показано на рисунке ниже Azure Web App sandbox,

Причина в Win32k.sys (User32/GDI32) Restrictions

Однако вы можете попытаться развернуть свое основное приложение.net в службе приложений Azure в Linux, основанной на образе докера.

Таким образом, вы можете следовать краткому руководству Create an ASP.NET Core app in App Service on Linux перенести ваше текущее приложение для Linux. И из-за Selenium требуется безголовый хром, необходимо установить chromium или же chrome или их безголовые дистрибутивы и webdriver в образе докера или сначала напишите в Dockerfile, пожалуйста, обратитесь к официальному документу Tutorial: Build a custom image and run in App Service from a private registry знать это.

В качестве справки, есть много блогов, которые помогают вам, и вы можете искать через Google/Bing, такие как Selenium in Docker with DotNetCore Chrome in Linux and Headless Mode,

Надеюсь, это поможет.

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