需要获取IEDriverServer.exe的进程ID,以便我可以获取浏览器的子进程PID。

问题描述 投票:0回答:1

问题是我需要获得IE浏览器实例的PID,以便关闭IE浏览器(用C#语言工作).我使用Selenium启动了IE浏览器,然后使用Driver Service类作为:-。

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

计划是获取端口,然后有它的子进程。通过手动输入Port的值,我可以使用调试器来实现。但是,通过driverdetails.Port获取的端口并不是我的驱动程序实际使用的端口。

有没有什么办法可以让我找到任何一个驱动服务的端口?

对于IE来说,我有一个替代方法,启动IE并获得带有端口的URL,其中写道 http:/localhost:. 然而,其他浏览器的情况并非如此。我想制作通用代码,因此我使用了驱动服务对象。

c# internet-explorer selenium-webdriver
1个回答
1
投票

据我所知 InternetExplorerDriverService的ProcessID属性。 获取正在运行的驱动服务可执行文件的进程ID,而我们无法通过InternetExplorer webdriver获取IE浏览器实例的PID。如果你想获得PID,你可以尝试使用 流程类.

从你的描述来看,你似乎想通过使用IE Webdriver关闭IE标签或窗口。如果是这样,我建议你可以使用 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();

    }
© www.soinside.com 2019 - 2024. All rights reserved.