如何获得已经在硒中打开IE浏览器的句柄?

时间:2017-11-08 06:25:51

标签: c# selenium selenium-webdriver selenium-chromedriver selenium-ide

我有一个已经打开的IE浏览器,有一些网址。 在此之后,我运行下面的代码将打开另一个IE浏览器。但它在下面的代码中只给了我一个窗口句柄。 是否有可能获得以前打开的IE浏览器处理?

        IWebDriver IEdriver = new InternetExplorerDriver();
        IReadOnlyCollection<String> browsers = IEdriver.WindowHandles;
        foreach (String item in browsers)
        {
            IEdriver.SwitchTo().Window(item);
            String url = IEdriver.Url;

        }

3 个答案:

答案 0 :(得分:1)

我认为这是你正在寻找的东西:

String winHandleBefore = driver.getWindowHandle();
//Do whatever operations you have to do
for(String winHandle : IEdriver.getWindowHandles()){
IEdriver.switchTo().window(winHandle);
}

答案 1 :(得分:0)

小心你正在尝试做的事情,并不是编写测试用例的强大解决方案。如果一个测试用例导致浏览器崩溃,则会导致所有测试用例失败。

此外,我认为默认情况下应该可以在以前打开的窗口上获取句柄,因为当你编写代码时

    IWebDriver IEdriver = new InternetExplorerDriver();

它调用InternetExplorerDriver类的构造函数并打开Internet Explorer的新实例。

答案 2 :(得分:0)

您可以通过从任务管理器中终止ie进程来关闭所有浏览器,然后再开始执行测试用例。

        foreach (Process process in Process.GetProcessesByName("iexplore"))
        {
            process.Kill();
        }