youngTest 发表于 2019-8-14 15:52:05

各位大神帮忙看看,Java +selenium 获取到两个窗口的句柄一样是为什么

      点击页面的链接,打开了新的窗口:

driver.get("https://open.unionpay.com/tjweb/index");
      driver.manage().window().maximize();
//      获取当前窗口的句柄
         String currentWindow = driver.getWindowHandle();
         System.out.println("当前窗口的句柄是:"+currentWindow);
      driver.findElement(By.linkText("服务协议")).click();
      Thread.sleep(2000);
//      打印新窗口句柄
      System.out.println("新窗口的句柄为:"+driver.getWindowHandle());
      Thread.sleep(2000);


打印的日志:
当前窗口的句柄是:CDwindow-9454A0922BCD65DBCBEF3CD8DF979F91
新窗口的句柄为:CDwindow-9454A0922BCD65DBCBEF3CD8DF979F91

为什么两个窗口的句柄一样呢?


玖岚昊 发表于 2019-8-15 11:43:51

个人理解,没有切换到新窗口,焦点还在原来的句柄

清晨一缕阳光 发表于 2019-8-16 10:02:04

2楼正解,代码操作新打开一个窗口,但焦点仍然在原窗口上,需要把焦点切换到新窗口上,然后再获取焦点!

qqq911 发表于 2019-8-16 11:00:07

没切换成功吧

jingzizx 发表于 2019-8-16 12:47:04

是不是就是一个

海海豚 发表于 2019-8-16 15:47:59

焦点

w7956121 发表于 2019-8-28 20:41:27

/**
* 功能: 切换windows窗口
*@param driver
*@param windowTitle
*@return boolean
*/
public boolean switchToNewWindow(WebDriver driver, String windowTitle) {
boolean flag = false;
try {
   String currentHandle = driver.getWindowHandle();
   Set<String> handles = driver.getWindowHandles();
   for (String s : handles) {
    if (s.equals(currentHandle))
   continue;
    else {
   driver.switchTo().window(s);
   if (driver.getTitle().contains(windowTitle)) {
      flag = true;
      System.out.println("Switch to window: " + windowTitle
      + " successfully!");
      break;
   } else
      continue;
    }
   }
} catch (NoSuchWindowException e) {
   System.out.println("Switch to window: " + windowTitle
   + " failed!");
   e.printStackTrace();
   flag = false;
}
return flag;
}

kaithyn 发表于 2019-10-8 16:09:47

看大窗口有几个,有个的只是一个跳转而已,窗口还是同一个大窗口

chengyanyan 发表于 2020-1-3 15:49:28

就是一个句柄

chengyanyan 发表于 2020-1-3 15:50:13

只有一个大窗口 是一个句柄

1005731757@qq.c 发表于 2020-1-7 13:59:04

首先 ,确认点击链接后是否在当前窗口打开,如果是当前窗口打开,则是同一个句柄是对的
若在新窗口打开,则需要将焦点切换到新窗口才能获取新窗口的句柄,你代码里没有转换窗口哦
页: [1]
查看完整版本: 各位大神帮忙看看,Java +selenium 获取到两个窗口的句柄一样是为什么