Необходимо получить идентификатор процесса IEDriverServer.exe, чтобы я мог получить дочерние PID для браузера - PullRequest
0 голосов
/ 30 апреля 2020

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

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

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

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

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

1 Ответ

1 голос
/ 30 апреля 2020

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

. Из вашего описания кажется, что вы хотите закрыть вкладку или окно IE, используя IE Вебдрайвер. Если это так, я предлагаю вам использовать InternetExplorerDriver WindowHandles , чтобы получить открытый windows, затем использовать метод 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();

    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...