【问题标题】:how to get already opened IE browser handle in selenium?如何在Selenium浏览IE浏览器句柄?
【发布时间】:2018-04-20 17:45:36
【问题描述】:

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

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

        }

【问题讨论】:

  • 使用Robot类可以导航到之前打开的IE浏览器
  • 不行,打开的IE浏览器无法获取。您可以打开一个新的 IEDriver 或连接到现有的 IEDriver,然后打开一个新窗口。
  • 您能否根据您的标签确认您是否使用 C# 绑定而不是 java 绑定?
  • 是的,我正在使用 C#
  • @Buaban 是的,你想得对,所以不可能已经手动打开浏览器来使用 selenium 访问

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


【解决方案1】:

我想这就是你要找的东西:

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

【讨论】:

    【解决方案2】:

    要小心,因为您正在尝试做的事情并不是编写测试用例的可靠解决方案。如果一个测试用例导致浏览器崩溃,您将导致所有测试用例都失败。

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

        IWebDriver IEdriver = new InternetExplorerDriver();
    

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

    【讨论】:

      【解决方案3】:

      您可以在开始执行测试用例之前关闭所有浏览器,方法是从任务管理器中终止 ie 进程。

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2013-11-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多