Visual Studio 2019: исключение System.UnauthorizedAccessException: «Доступ к пути» C: / »запрещен - PullRequest
0 голосов
/ 21 марта 2020

В настоящее время я пытаюсь разработать небольшой c# скрипт для скриншота веб-сайта.

Я работаю с Visual Studio 2019 и мой код выглядит следующим образом:

var service = ChromeDriverService.CreateDefaultService();
        ChromeOptions option = new ChromeOptions();


        option.AddArgument("--user-agent=Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/40.0.2214.85 Safari/537.36");

        service.HideCommandPromptWindow = false;
        //option.AddArgument("--headless");

        ChromeDriver driver = new ChromeDriver(service, option);

        driver.Manage().Timeouts().ImplicitWait = TimeSpan.FromSeconds(60);


        driver.Navigate().GoToUrl("https://www.google.com");


        OpenQA.Selenium.ITakesScreenshot screenshotDriver = driver as OpenQA.Selenium.ITakesScreenshot;
        OpenQA.Selenium.Screenshot screenshot = screenshotDriver.GetScreenshot();
        screenshot.SaveAsFile("C:/", OpenQA.Selenium.ScreenshotImageFormat.Png);

Теперь я получаю это сообщение об ошибке:

System.UnauthorizedAccessException: "Access to the path "C:/" was denied.

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

Я думаю, это как-то связано с отсутствующими разрешениями на запись для Visual Studio.

Как я могу решить эту проблему

1 Ответ

0 голосов
/ 21 марта 2020

Вы получаете System.UnauthorizedAccessException, потому что пытаетесь перезаписать каталог Screenshots файлом .png. Вы можете использовать этот метод

  public static string GetImageDirectory()
    {
        string cur = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
        string imageDir = Path.Combine(cur, @"..\..\", "Images");
        SetAccessRule(imageDir);
        return imageDir;
    }

затем

screenshot.SaveAsFile(GetImageDirectory(), ScreenshotImageFormat.Png);
...