51Testing软件测试论坛

标题: 各位大神帮忙看看,Java +selenium 获取到两个窗口的句柄一样是为什么 [打印本页]

作者: youngTest    时间: 2019-8-14 15:52
标题: 各位大神帮忙看看,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
个人理解,没有切换到新窗口,焦点还在原来的句柄
作者: 清晨一缕阳光    时间: 2019-8-16 10:02
2楼正解,代码操作新打开一个窗口,但焦点仍然在原窗口上,需要把焦点切换到新窗口上,然后再获取焦点!
作者: qqq911    时间: 2019-8-16 11:00
没切换成功吧
作者: jingzizx    时间: 2019-8-16 12:47
是不是就是一个
作者: 海海豚    时间: 2019-8-16 15:47
焦点
作者: w7956121    时间: 2019-8-28 20:41
/**
  * 功能: 切换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
看大窗口有几个,有个的只是一个跳转而已,窗口还是同一个大窗口
作者: chengyanyan    时间: 2020-1-3 15:49
就是一个句柄
作者: chengyanyan    时间: 2020-1-3 15:50
只有一个大窗口 是一个句柄
作者: 1005731757@qq.c    时间: 2020-1-7 13:59
首先 ,确认点击链接后是否在当前窗口打开,如果是当前窗口打开,则是同一个句柄是对的
若在新窗口打开,则需要将焦点切换到新窗口才能获取新窗口的句柄,你代码里没有转换窗口哦





欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) Powered by Discuz! X3.2