Selenium ChromeDriver C# работает только в безголовом режимеC#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Selenium ChromeDriver C# работает только в безголовом режиме

Сообщение Anonymous »

Свойства проекта:
  • C# .NET Framework 4.7.2
  • Репозиторий: https://github. com/theomnislayer/ChromeDriverError
  • Visual Studio 2019 Pro. Приведенный выше репозиторий должен работать с VS Code.
Установлены пакеты Nuget:
  • Selenium. .WebDriver 3.141.0
  • Selenium.Support 3.141.0
  • Selenium.WebDriver.ChromeDriver 94.0.4606.6100
    < li>Xunit 2.4.1
  • Xunit.Runner.VisualStudio 2.4.3
Описание ошибки:
  • Начиная с Chrome 93.x и ChromeDriver 93.x или более поздней версии
  • Без аргумента --headless в chromeoptions возникает следующая ошибка:

    Код: Выделить всё

    Message:
    OpenQA.Selenium.WebDriverException : unknown error: Chrome failed to start: crashed.
    (unknown error: DevToolsActivePort file doesn't exist)
    (The process started from chrome location C:\Program Files (x86)\Google\Chrome\Application\chrome.exe is no longer running, so ChromeDriver is assuming that Chrome has crashed.)
    
  • Ожидаемое поведение: Chrome НЕ должен аварийно завершать работу даже без аргумента headless
Репликация ошибки:
  • Пример кода:

    Код: Выделить всё

     public void DisabledHeadless()
    {
    ChromeOptions options = new ChromeOptions();
    
    options.AddArgument("--disable-extensions");
    options.AddArgument("--safebrowsing-disable-download-protection");
    options.AddArguments("no-sandbox");
    options.AddArgument("enable-automation");
    options.AddArgument("test-type=browser");
    options.AddUserProfilePreference("download.prompt_for_download", false);
    options.AddUserProfilePreference("safebrowsing", "enabled");
    options.AddUserProfilePreference("disable-popup-blocking", "true");
    //options.AddArgument("--headless");
    
    var driver = new ChromeDriver(
    Directory.GetCurrentDirectory(),
    options,
    TimeSpan.FromSeconds(30));
    
    driver.Navigate().GoToUrl("https://www.google.com");
    }
    
  • Запустите тест, обнаружена ошибка.
Обходной путь:
  • Пример кода:

    Код: Выделить всё

     public void EnabledHeadless()
    {
    ChromeOptions options = new ChromeOptions();
    
    options.AddArgument("--disable-extensions");
    options.AddArgument("--safebrowsing-disable-download-protection");
    options.AddArguments("no-sandbox");
    options.AddArgument("enable-automation");
    options.AddArgument("test-type=browser");
    options.AddUserProfilePreference("download.prompt_for_download", false);
    options.AddUserProfilePreference("safebrowsing", "enabled");
    options.AddUserProfilePreference("disable-popup-blocking", "true");
    
    //Weird = Starting from V.93, without this argument, CHROME CRASHES!
    options.AddArgument("--headless");
    
    var driver = new ChromeDriver(
    Directory.GetCurrentDirectory(),
    options,
    TimeSpan.FromSeconds(30));
    
    driver.Navigate().GoToUrl("https://www.google.com");
    }
    
Есть ли решение этой проблемы без включения Headless? В Chrome 92 и более ранних версиях ошибок не возникало. Заранее спасибо!

Подробнее здесь: https://stackoverflow.com/questions/694 ... dless-mode
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C#»