目标窗口在硒中关闭

Posted

技术标签:

【中文标题】目标窗口在硒中关闭【英文标题】:Target window closed in selenium 【发布时间】:2017-01-24 16:52:31 【问题描述】:

在随附的屏幕截图中,我想单击新建浏览器窗口。 我想关闭浏览器窗口并单击“新消息”窗口。 我关闭了浏览器窗口。 但我得到了例外

org.openqa.selenium.NoSuchWindowException: no such window: target window already closed

截图

以下是详细信息 Screenshot

下面是代码

@Test
public void testing()

    driver.manage().window().maximize();
    driver.get("http://www.seleniumframework.com/Practiceform/");
    driver.findElement(By.id("button1")).click();
    Set<String> handle=driver.getWindowHandles();
    for(String handles:handle)
       try
          String text=driver.switchTo().window(handles).getPageSource();
          if(text.contains("Agile Testing and ATDD Automation"))
              System.out.println("Text found");
              driver.close();
              break;
          
       catch(Exception e)
    
    driver.switchTo().defaultContent();
    driver.findElement(By.xpath("//button[contains(text(),'New Message Window')]")).click();
    driver.quit();

【问题讨论】:

How to switch to the new browser window, which opens after click on the button的可能重复 【参考方案1】:

我猜您尝试使用 driver.switchTo().defaultContent(); 返回原始窗口?这不是正确的方法。

你应该:

    在测试开始时存储原始窗口:

String winHandleBefore = driver.getWindowHandle();

    点击按钮,切换窗口,做任何事

    回到原来的窗口使用:

driver.switchTo().window(winHandleBefore);

答案基于:https://***.com/a/9597714/4855333

【讨论】:

Python 语法:***.com/questions/10629815/…【参考方案2】:

在您的代码中,Set&lt;String&gt; handle=driver.getWindowHandles(); 将包含来自浏览器的句柄列表。这还将在其第一个位置包含当前选项卡的窗口句柄。

所以当你第一次执行循环时,焦点将只在当前窗口上。所以当你的代码执行时它会关闭当前窗口。

您需要先获取当前窗口句柄,然后在切换到任何窗口之前检查您需要切换的窗口是否不是当前窗口句柄。

看下面的例子。

String mainwindow = driver.getWindowHandle();
Set<String> handle=driver.getWindowHandles();
for(String handles:handle)

   if(!mainwindow.equals(handles))
      try
    
         String text=driver.switchTo().window(handles).getPageSource();
         if(text.contains("Agile Testing and ATDD Automation"))
            
               System.out.println("Text found");
               driver.close();
               break;
             
   catch(Exception e)
      

      
   

【讨论】:

以上是关于目标窗口在硒中关闭的主要内容,如果未能解决你的问题,请参考以下文章

如何阻止用户在 Javascript 中关闭窗口?

在tkinter中关闭窗口之前执行某个命令[重复]

如何在 IronPython 中关闭 WPF 窗口而不关闭 .NET 应用程序

Windows处理如果我尝试在python中关闭当前窗口,则关闭整个浏览器

winform中关闭退出和打开新窗口的几种方式

在 Qt 中关闭新的非子窗口