Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/320.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用SeleniumWebDriver和Java关闭特定窗口?_Java_Selenium_Selenium Webdriver_Webdriver_Window - Fatal编程技术网

如何使用SeleniumWebDriver和Java关闭特定窗口?

如何使用SeleniumWebDriver和Java关闭特定窗口?,java,selenium,selenium-webdriver,webdriver,window,Java,Selenium,Selenium Webdriver,Webdriver,Window,我使用SeleniumWebDriver。我打开第一页,然后打开第二页-执行一些操作并返回第一页。在关闭第二页之前,我使用命令driver.close(),但它会关闭第一页而不是第二页。如何使Selenium关闭特定窗口 部分代码 String HandleBefore = driver.getWindowHandle(); driver.findElement(By.xpath("...")).click(); for (String twohandle : driver.getWind

我使用SeleniumWebDriver。我打开第一页,然后打开第二页-执行一些操作并返回第一页。在关闭第二页之前,我使用命令
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=driver.getWindowHandles();
设置。移除(底座);
断言set.size()==1;
driver.switchTo().window(set.toArray(新字符串[0]);
driver.close();
driver.switchTo().窗口(基础);

这对我有用…

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

private void SwitchTabandClose()
{
    Set <String> 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);
 }
private void开关tabandclose()
{
设置windows=driver.getWindowHandles();
字符串mainwindow=driver.getWindowHandle();
用于(字符串句柄:windows)
{
driver.switchTo().窗口(手柄);
System.out.println(“切换到”+driver.getTitle()+“窗口”);
字符串pagetitle=driver.getTitle();
if(pagetitle.equalsIgnoreCase(“XYZ标题”))
{
driver.close();
System.out.println(“现在关闭了''+pagetitle+''选项卡…”);
}
}
driver.switchTo()窗口(主窗口);
}
在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)

Ramnarayan的解决方案非常有效。为便于重用,对其进行了一些修改:

public static String switchToWindowByTitle(WebDriver driver, String windowTitle) {
  Set<String> 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
public静态字符串切换到indowbytitle(WebDriver驱动程序,字符串窗口标题){
Set handles=driver.getWindowHandles();
字符串currentHandle=driver.getWindowHandle();
for(字符串句柄:句柄){
driver.switchTo().窗口(手柄);
if(windowTitle.equalsIgnoreCase(driver.getTitle())){
打破
}
}
返回电流手柄;
}
//如何使用这种方法
字符串currentHandle=SeleniumUtil.switchToWindowByTitle(驱动程序,窗口标题);
driver.close();//关闭窗口标题页或执行其他操作
driver.switchTo().window(currentHandle);//返回到当前页面

单击是否发生在右侧(第二个)窗口中?代码可读性不强。您在
之前不使用存储的
把手,然后将
切换到()
循环中的所有窗口。我猜最后一个
切换到
会让您进入第一个窗口,而不是第二个窗口。我建议您重新开始,阅读的javadocs。您必须使用窗口句柄在父窗口和子窗口之间切换。我的代码工作正常,只是关闭顺序有点问题window@Khris一个是
java.util
package.Franz,我正在使用intellij和'driver.switchTo().window(set.toArray(String[0]);'第行显示“expression expected”这是什么意思?只需输入数组声明的新关键字,相应地编辑我的答案,sry
public static String switchToWindowByTitle(WebDriver driver, String windowTitle) {
  Set<String> 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