Хобрук: Ваш путь к мастерству в программировании

Нужно получить идентификатор процесса IEDriverServer.exe, чтобы я мог получить дочерние PID для браузера.

Проблема в том, что мне нужно получить PID экземпляров браузера IE, чтобы я мог закрыть браузер IE (работает на С#). Я запустил браузер IE с помощью Selenium, а затем использовал класс службы драйверов как: -

InternetExplorerDriverService driverdetails = InternetExplorerDriverService.CreateDefaultService();
        Console.WriteLine(driverdetails.Port);

План состоит в том, чтобы получить порт, а затем иметь его дочерний процесс. Я могу сделать это с помощью отладчика, введя значение порта вручную. Но порт, полученный с помощью driverdetails.Port, не был фактическим портом, используемым моим драйвером.

Есть ли какой-нибудь, я могу найти порт для любой данной службы драйверов?

Для IE у меня есть альтернатива запуску IE и получению URL-адреса с портом, который говорит http://localhost:. Однако это не относится к другим браузерам. Я хочу сделать общий код, и поэтому я использую объект Driver Service.


Ответы:


1

Насколько мне известно, свойство ProcessID InternetExplorerDriverService получает идентификатор процесса исполняемого файла службы драйвера, и мы не можем получить PID экземпляра браузера IE через веб-драйвер InternetExplorer. Если вы хотите получить PID, вы можете попробовать использовать Класс процесса.

Из вашего описания кажется, что вы хотите закрыть вкладку или окно IE с помощью IE Webdriver. Если это так, я предлагаю вам использовать InternetExplorerDriver WindowHandles, чтобы получить открытые окна, затем используйте метод switchto для переключения окна и проверки URL-адреса или заголовка, наконец, вызовите метод Close, чтобы закрыть окно IE. Пожалуйста, обратитесь к следующему примеру кода:

    private const string URL = @"https://dillion132.github.io/login.html";
    private const string IE_DRIVER_PATH = @"D:\Downloads\webdriver\IEDriverServer_x64_3.14.0";  // where the Selenium IE webdriver EXE is.
    static void Main(string[] args)
    { 
        InternetExplorerOptions opts2 = new InternetExplorerOptions() { InitialBrowserUrl = "https://www.bing.com", IntroduceInstabilityByIgnoringProtectedModeSettings = true, IgnoreZoomLevel = true };
        using (var driver = new InternetExplorerDriver(IE_DRIVER_PATH, opts2))
        {
            driver.Navigate(); 
            Thread.Sleep(5000);
            //execute javascript script
            var element = driver.FindElementById("sb_form_q");
            var script = "document.getElementById('sb_form_q').value = 'webdriver'; console.log('webdriver')";
            IJavaScriptExecutor jse = (IJavaScriptExecutor)driver;
            jse.ExecuteScript(script, element);


            InternetExplorerDriverService driverdetails = InternetExplorerDriverService.CreateDefaultService(IE_DRIVER_PATH);
            Console.WriteLine(driverdetails.Port);

            // open multiple IE windows using webdriver.
            string url = "https://www.google.com/";
            string javaScript = "window.open('" + url + "','_blank');";

            IJavaScriptExecutor jsExecutor = (IJavaScriptExecutor)driver;
            jsExecutor.ExecuteScript(javaScript);

            Thread.Sleep(5000);

            //get all opened windows (by using IE Webdriver )
            var windowlist = driver.WindowHandles;
            Console.WriteLine(windowlist.Count);

            //loop through the list and switchto the window, and then check the url 
            if(windowlist.Count > 1)
            { 
                foreach (var item in windowlist)
                {
                    driver.SwitchTo().Window(item);
                    Console.WriteLine(driver.Url);

                    if(driver.Url.Contains("https://www.bing.com"))
                    {
                        driver.Close(); //use the Close method to close the window. The Quit method will close the browser window and dispose the webdriver.

                    }

                }
            }

            Console.ReadKey();
        }

        Console.ReadKey();

    }
30.04.2020
  • Спасибо за помощь ... хотя я нашел выход ... Где я сначала использую DriverService, а затем инициализирую веб-драйвер с помощью DriverService. Итак, он работает таким образом. Моя проблема заключалась в том, чтобы закрыть все экземпляры браузера, открытые в тесте.. и, к сожалению, driver.quit() не работает нормально каждый раз. :( 30.04.2020
  • Я все еще не получил правильный порт для экземпляра IE. Чтобы закрыть все открытое окно браузера IE, вы можете обратиться к приведенному выше коду, пройтись по дескрипторам и вызвать метод driver.Close, чтобы закрыть окно. 30.04.2020
  • Новые материалы

    Создание кнопочного меню с использованием HTML, CSS и JavaScript
    Вы будете создавать кнопочное меню, которое имеет состояние наведения, а также позволяет вам выбирать кнопку при нажатии на нее. Финальный проект можно увидеть в этом Codepen . Шаг 1..

    Внедрите OAuth в свои веб-приложения для повышения безопасности
    OAuth — это широко распространенный стандарт авторизации, который позволяет приложениям получать доступ к ресурсам от имени пользователя, не раскрывая его пароль. Это позволяет пользователям..

    Классы в JavaScript
    class является образцом java Script Object. Конструкция «class» позволяет определять классы на основе прототипов с чистым, красивым синтаксисом. // define class Human class Human {..

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

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

    Обзор: Машинное обучение: классификация
    Только что закончил третий курс курса 4 часть специализации по машинному обучению . Как и второй курс, он был посвящен низкоуровневой работе алгоритмов машинного обучения. Что касается..

    Разработка расширений Qlik Sense с qExt
    Использование современных инструментов веб-разработки для разработки крутых расширений Вы когда-нибудь хотели кнопку для установки переменной в приложении Qlik Sense? Когда-нибудь просили..