Как запустить параллельно 2 веб-диска Chrome, один из которых «безголовый», а другой стандартный?

#c# #selenium #selenium-chromedriver #nunit-3.0

#c# #селен #selenium-chromedriver #nunit-3.0

Вопрос:

У меня есть 2 веб-драйвера Chrome для параллельной проверки администратора и пользователя.

Я хочу, чтобы только один из них работал в режиме «без головы» (а второй в стандартном режиме).

Когда я установил 2 веб-драйвера Chrome; первый -безголовый, второй-стандартный, стандартный режим для второго веб-драйвера не сработал, и оба были выполнены как «безголовые».

Просто если я установлю первый как стандартный, а второй как «безголовый», он работает правильно (первый как стандартный, а второй как безголовый)

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

Я прошу решения проблемы и не хочу предложения изменить порядок работы драйверов.

Мой код:

         private static ChromeOptions chromeOptions = new ChromeOptions();

        public static void InitBrowser(string browserName , string url)
        {
            if(driverAdmin == null)
                switch(browserName)
                {
                    case nameof(Browsers.ChromeAdmin):
                        chromeOptions.AddArgument("headless");
                        chromeOptions.AddArgument("incognito");
                        driverAdmin = new ChromeDriver(ChromeDriverService.CreateDefaultService() , chromeOptions , commandTimeout);
                        Drivers.Add(Browsers.ChromeAdmin.ToString() , driverAdmin);
                        break;
                        ...
                }

        public static void InitBrowserUser(string browserName , string url)
        {
            browser = browserName;

            if(driverUser == null)
                switch(browserName)
                {
                    case nameof(Browsers.ChromeUser):
                        //chromeOptions.AddArgument("headless");
                        chromeOptions.AddArgument("incognito");
                        driverUser = new ChromeDriver(ChromeDriverService.CreateDefaultService() , chromeOptions , commandTimeout);
                        Drivers.Add(Browsers.ChromeUser.ToString() , driverUser);
                        break;
                        ...
                }

        [SetUp]
        public static void SetUp()
        {
            SetupReport();
            InitBrowser(BrowserAdmin , EnvironmentAdmin);
            InitBrowserUser(BrowserUser , EnvironmentUser);
            PrintTestDetails();
        }


  

Ответ №1:

Кажется, вы используете одни и те же параметры Chrome для инициализации обоих браузеров. Настройте отдельные параметры Chrome для каждого метода, и он будет работать должным образом.

Комментарии:

1. Вау, какое простое решение! Спасибо!