【问题标题】:Closing new window in Selenium在 Selenium 中关闭新窗口
【发布时间】:2015-08-13 09:20:30
【问题描述】:

我已经编写了以下代码来打开一个谷歌地图窗口获取它的 url 然后关闭它并在我之前的窗口上执行操作:

        try 
          {

           String winHandleBefore = driver.getWindowHandle();
            element("icon_google_map").click();
            for(String winHandle : driver.getWindowHandles())
             {
                driver.switchTo().window(winHandle);
             }
           Thread.sleep(9000);
            String currentURL = driver.getCurrentUrl();
            logMessage(currentURL);
            String expectedURL="xyz";
            Assert.assertEquals(currentURL, expectedURL);
            logMessage(currentURL);
            driver.close();
            driver.switchTo().window(winHandleBefore);
            return true;
    }
    catch(Exception e)
    {
        return false;
    }

上面的代码打开地图窗口但没有关闭它,而是当我在前一个窗口执行操作时显示以下错误。

错误: org.openqa.selenium.NoSuchWindowException:没有这样的窗口:目标窗口已经关闭

【问题讨论】:

标签: java selenium-webdriver window-handles


【解决方案1】:

你在切换之前关闭了驱动程序,所以 selenium 找不到窗口。

先切换再关闭驱动。

driver.switchTo().window(winHandleBefore);

driver.close();

【讨论】:

  • 关闭前不会切换,会关闭父窗口吗?
  • 可以只增加等待时间,看看会发生什么?
  • 其实问题出在谷歌窗口,句柄在改变,但没有关闭。
【解决方案2】:

检查下面的代码行

for(String winHandle : driver.getWindowHandles())
             {
                driver.switchTo().window(winHandle);
             }

您没有切换到右侧窗口。 您可以通过像这样切换到第二个窗口来做到这一点。

driver.switchTo().window(getWindowHandles()[1]);

【讨论】:

  • 我成功切换到正确的窗口唯一的问题是新的谷歌地图窗口没有关闭。
  • 如果我没记错,那么在你的情况下,父窗口正在关闭。
【解决方案3】:

下面的代码将切换新窗口和谷歌地图窗口

for(String winHandle : driver.getWindowHandles())
             {
               driver.switchTo().window(getWindowHandles()[1]);
               driver.close();  // This will close the new open window
             }

【讨论】:

    猜你喜欢
    • 2014-08-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-16
    • 2021-03-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多