无法关闭所有打开的Windows

时间:2018-06-20 10:49:49

标签: java selenium-webdriver

我有一个打开两个Windows A和B的情况。从窗口A中的按钮打开窗口B。运行代码后,我希望使用Webdriver关闭两个Windows。不出所料,在运行代码后,仅窗口A无法关闭。这是用于执行此操作的代码。

admin.ModelAdmin

此外,错误消息还指出,尽管它指出了正确的句柄,但它找不到窗口A。

2 个答案:

答案 0 :(得分:1)

要关闭所有窗口(以任意顺序),请使用以下代码:

      for (String handle : allhandles) { 
        driver.switchTo().window(handle);
        driver.close();   
      }

您的代码中存在一些缺陷:

  if(!all_handles.equals(window_B)){
    driver.close(); //close Window B
  }

除非窗口B恰好是活动窗口(但在这种情况下if语句没有用),否则它不会关闭窗口B(如注释所示)。而且,变量名all_handles令人误解,因为它只是allhandles集中的一个句柄。

此行

String window_A = driver.getWindowHandles().toString();

不返回窗口A的名称(如可变名称所示),而是返回Set<java.lang.String>对象的字符串表示形式。这是一个巨大的差异,切换到该位置将不可避免地导致错误(例如说“不存在窗口”之类的东西)。

答案 1 :(得分:0)

您可以使用以下方法杀死进程 示例调用方法:killProcess(“ firefox”)

public static void killProcess(String processName) throws IOException {

    Runtime.getRuntime().exec("taskkill /f /im " + processName + ".exe");
}