51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 6986|回复: 23
打印 上一主题 下一主题

打开新窗口前后分别执行获得所有窗口的句柄。居然一次可以执行,一次不可以。。

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2013-12-31 15:11:22 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 Cris@Kaka 于 2014-1-10 13:33 编辑


经过测试,在点击新建,弹出新窗口前后分别执行下面语句:
Set<String> handles = driver.getWindowHandles();
没有新窗口前可以执行,弹出新窗口后执行就一直卡在那一句了。。
什么情况啊


最新进展:脚本回放过程中手动把新窗口关闭,然后再打开,于是就可以定位到新窗口上了。。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?(注-册)加入51Testing

x
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

该用户从未签到

2#
 楼主| 发表于 2014-1-2 13:29:58 | 只看该作者
没人解答吗?
回复 支持 反对

使用道具 举报

  • TA的每日心情
    无聊
    2020-12-8 11:20
  • 签到天数: 605 天

    连续签到: 1 天

    [LV.9]测试副司令

    3#
    发表于 2014-1-2 14:02:24 | 只看该作者
    哪来的这么多问题。。。难道是你的多frame问题再加上现在多窗口问题。。。彻底冲突了。。。普通多窗口问题没问题吧。。。是不是还要把多frame再切回去啊?。。。系统架构还真复杂。。。
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    4#
     楼主| 发表于 2014-1-2 14:13:00 | 只看该作者
    回复 3# joykao


        frame跟窗口之间不会有冲突吧。。关键是点击新建前还可以获得所有窗口句柄,虽然这时只有一个,但是点击新建,弹出窗口之后就不能执行了。。这中间是什么原因呢,帮我分析分析吧。。有经验人士
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    无聊
    2020-12-8 11:20
  • 签到天数: 605 天

    连续签到: 1 天

    [LV.9]测试副司令

    5#
    发表于 2014-1-2 15:36:45 | 只看该作者
    回复 4# Cris@Kaka


      我完全不懂,我只是个打酱油的,如果其他网站简单的多窗口切换没问题,那应该会有冲突吧,你也不一定要用句柄去操控,可以试试用driver.switchTo().window("HelpWindow");直接填name或者title,其实都是driver惹得祸哇,代码不知道driver的领导是什么,所以不会工作了。。。哎。。。好复杂的web应用啊。。。有机会真想见识下。。。
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    6#
     楼主| 发表于 2014-1-2 17:55:42 | 只看该作者
    回复 5# joykao


        好像是打开新窗口,之前的窗口就死了。。T_T
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    无聊
    2020-12-8 11:20
  • 签到天数: 605 天

    连续签到: 1 天

    [LV.9]测试副司令

    7#
    发表于 2014-1-3 09:22:41 | 只看该作者
    回复 6# Cris@Kaka


        还有这么一说,打开新窗口如果你不切换窗口的话还是在原窗口啊。。。怎么会死掉呢。。。
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    8#
     楼主| 发表于 2014-1-3 10:49:23 | 只看该作者
    回复 7# joykao


        新窗口右下角的webdriver字体是黑的,原先的窗口变成红的了。。像上面的附图那样
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    无聊
    2020-12-8 11:20
  • 签到天数: 605 天

    连续签到: 1 天

    [LV.9]测试副司令

    9#
    发表于 2014-1-3 12:36:04 | 只看该作者
    回复 8# Cris@Kaka


    红的是代表当前活动的窗口。。。黑色的是不活动的。。。
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    10#
     楼主| 发表于 2014-1-10 13:31:57 | 只看该作者
    回复 9# joykao


        脚本回放过程中我手动把新窗口关闭又快速打开,然后就可以定位到新窗口了额。。
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    无聊
    2020-12-8 11:20
  • 签到天数: 605 天

    连续签到: 1 天

    [LV.9]测试副司令

    11#
    发表于 2014-1-10 13:59:55 | 只看该作者
    回复 10# Cris@Kaka


        我去。。妹纸你这个手工自动化么?好吧。。。推荐本书你去看看吧。。。你遇到的大多数问题那里应该都可以找到答案。。。Packt.Selenium.Testing.Tools.Cookbook。。。Selenium私房菜。。
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    12#
     楼主| 发表于 2014-2-11 17:57:13 | 只看该作者
    没人能解。。
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    13#
    发表于 2014-2-15 17:45:12 | 只看该作者
    你没有切换窗口,要操作哪个窗口,都必须先切换到那个窗口上
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    14#
     楼主| 发表于 2014-2-18 15:31:19 | 只看该作者
    回复 13# maomao121


        我有喔。
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    15#
    发表于 2014-2-18 20:26:28 | 只看该作者
    你把你点击前后几步的step都贴出来吧, 还有就是哪怕停在那步的话,最后总要有一个error 信息的, 这个error信息也贴一下吧,
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    16#
     楼主| 发表于 2014-2-28 09:47:24 | 只看该作者
    回复 15# maomao121
    只是卡住不动而已,确确实实没有报错。。
    代码如下:

            //得到当前窗口的句柄
        String currentWindow = driver.getWindowHandle();
          //System.out.println(currentWindow);
          driver.findElement(By.xpath("//a[@title='新建']")).click();
          waitForPageToLoad(3000);//等待页面载入
        //得到所有窗口的句柄
        Set<String> handles = driver.getWindowHandles();
         //System.out.println(handles.size());
        //不包括当前窗口
        handles.remove(currentWindow);
        //存在窗口
        System.out.println(handles.size());
          if (handles.size() > 0) {
                    try{
              //定位窗口
              driver.switchTo().window(handles.iterator().next());
              }catch(Exception e){
                             System.out.println(e.getMessage());
                   }
              }
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    17#
    发表于 2014-3-1 05:46:40 | 只看该作者
    你debug的话,是停在这句吗          driver.switchTo().window(handles.iterator().next());?
    那时候,handles里有几个值啊,handles.iterator().next()的值是多少呢
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    18#
     楼主| 发表于 2014-3-3 17:21:54 | 只看该作者
    本帖最后由 Cris@Kaka 于 2014-3-3 17:23 编辑

    回复 17# maomao121


        debugger到点击新建就如附图了,不能再往下执行,所以不知道那些值是什么。

    新窗口是有跳出来,然后手动关闭再打开,debugger又可以执行下一步了。。

    本帖子中包含更多资源

    您需要 登录 才可以下载或查看,没有帐号?(注-册)加入51Testing

    x
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    19#
    发表于 2014-3-4 07:00:37 | 只看该作者
    看起来waitForPageToLoad(3000)满可疑的,你们重写过这个方法吗,干脆comment掉这句,再debug试试看
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    20#
     楼主| 发表于 2014-3-4 16:08:14 | 只看该作者
    回复 [url&#61;http://bbs.51testing.com/redirect.php?goto&#61;findpost&pid&#61;3233765&ptid&#61;1000210]19#[/url] maomao121


      public void waitForPageToLoad&#40;long time) {
          try {
              Thread.sleep&#40;time);
          } catch &#40;Exception e) {
          }
      }   
    注释了  还是卡着
    回复 支持 反对

    使用道具 举报

    本版积分规则

    关闭

    站长推荐上一条 /1 下一条

    小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

    GMT+8, 2024-10-1 07:45 , Processed in 0.110880 second(s), 30 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

    快速回复 返回顶部 返回列表