如何使用Selenium WebDriver与Java关闭特定窗口?

我使用Selenium WebDriver。 我打开第一页然后打开第二页 – 执行一些操作并返回第一页。 在我想关闭第二页之前,我使用命令driver.close(); ,但它会关闭第一页而不是第二页。 如何让Selenium关闭特定的窗口?

部分代码

 String HandleBefore = driver.getWindowHandle(); driver.findElement(By.xpath("...")).click(); for (String twohandle : driver.getWindowHandles()) { driver.switchTo().window(twohandle); } driver.findElement(By.linkText("001")).click(); driver.close(); 

  String base = driver.getWindowHandle(); Set  set = driver.getWindowHandles(); set.remove(base); assert set.size()==1; driver.switchTo().window(set.toArray(new String[0])); driver.close(); driver.switchTo().window(base); 

这对我有用……

在Python中

 default_handle = driver.current_window_handle handles = list(driver.window_handles) assert len(handles) > 1 handles.remove(default_handle) assert len(handles) > 0 driver.switch_to_window(handles[0]) # do your stuffs driver.close() driver.switch_to_window(default_handle) 

您可以通过标题关闭特定窗口或标识该窗口的特定唯一元素。

 private void SwitchTabandClose() { Set  windows = driver.getWindowHandles(); String mainwindow = driver.getWindowHandle(); for (String handle: windows) { driver.switchTo().window(handle); System.out.println("switched to "+driver.getTitle()+" Window"); String pagetitle = driver.getTitle(); if(pagetitle.equalsIgnoreCase("XYZ Title")) { driver.close(); System.out.println("Closed the '"+pagetitle+"' Tab now ..."); } } driver.switchTo().window(mainwindow); } 

Ramnarayan的解决方案很有效。 为了重新安排,修改了一下:

 public static String switchToWindowByTitle(WebDriver driver, String windowTitle) { Set handles = driver.getWindowHandles(); String currentHandle = driver.getWindowHandle(); for (String handle : handles) { driver.switchTo().window(handle); if (windowTitle.equalsIgnoreCase(driver.getTitle())) { break; } } return currentHandle; } // How to use method String currentHandle = SeleniumUtil.switchToWindowByTitle(driver, WINDOW_TITLE); driver.close(); // Close WINDOW_TITLE page or do other things driver.switchTo().window(currentHandle); // Return to current page