51Testing软件测试论坛

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

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 18255|回复: 22
打印 上一主题 下一主题

页面A跳转至页面B操作出现问题,selenium无法定位页面B上的元素

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2014-8-6 09:42:36 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
因为环境特殊,无法将代码拷出,所以只能描述,见谅下。

有一个页面A,上面实现了一个登录的功能,通过submit方法提交后,触发了登录,然后A页面旁边弹出了一个B页面(类似IE的在新窗口中打开),加Url地址给B页面
通过lr录制的脚本发现,有一个重定向的url(redirectURL.jsp),还有一个关闭页面的url(close.html),然后再请求了一个main.xhtml
我自己尝试过把重定向的url直接去浏览器访问,应该出了跨域的问题,登录不成功,也考虑过打印页面的句柄,通过handle去跳转到新窗口,但是发现submit后,所有的操作,selenium多会报错,有没人可以帮忙给个思路
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

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

    连续签到: 1 天

    [LV.9]测试副司令

    2#
    发表于 2014-8-6 11:28:17 | 只看该作者
    打开新页面时焦点还是停留在原来页面的。。如果想定位新页面上的元素需要switchto新页面
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    3#
     楼主| 发表于 2014-8-6 13:04:48 | 只看该作者
    回复 2# joykao


        这个多知道,问题是没办法找到那个新页面,我通过handle和句柄多找过了,就是单纯的window,open()打开的一个空白页
    回复 支持 反对

    使用道具 举报

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

    连续签到: 1 天

    [LV.9]测试副司令

    4#
    发表于 2014-8-6 13:29:58 | 只看该作者
    回复 3# zoo4778362


        你是怎么找的呢?
             
                    //Switch to new window opened  
                    for(String winHandle : driver.getWindowHandles()){  
                                driver.switchTo().window(winHandle);  
                                }
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    5#
     楼主| 发表于 2014-8-6 23:29:05 | 只看该作者
    回复 4# joykao


        username.submit();   Set<String>  handles=driver.getWindowhandles();

    Iterator<String> it = handles.iterator();

    然后通过it.next 去判断, 思路应该没问题,主要是是现在生成B页面的同时 把A页面关闭了。这样我们后面的所有操作不是多失去焦点了,方便的话加个QQ把,我详细和你说下
    回复 支持 反对

    使用道具 举报

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

    连续签到: 1 天

    [LV.9]测试副司令

    6#
    发表于 2014-8-7 17:16:02 | 只看该作者
    我没试过你这样的方法。。。思路没问题,但是我不知道it.next是否真的去切换了窗口,还是只是取到了下一个窗口句柄的值却没有做switch。。。。你在A 的基础上打开了B,无论A 存不存在了,你都需要做一个switch把焦点从A 上转到B上。。。重点是需要switchto而不是我要必须清楚每个窗口的句柄或者title或者name
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    7#
     楼主| 发表于 2014-8-11 13:56:29 | 只看该作者
    回复 6# joykao


        但是你如果在触发click的同时,这个页面关闭了。肯定不能switchTo的,其实应该说是不能操作已经关闭的页面上的任何元素
    回复 支持 反对

    使用道具 举报

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

    连续签到: 1 天

    [LV.9]测试副司令

    8#
    发表于 2014-8-11 15:30:34 | 只看该作者
    回复 7# zoo4778362


        你自己试过了吗?被你搞糊涂了。。你到底是要操作新页面的上的元素还是原来已消失页面上的元素?。。。如果是新页面。。即使在你点击原来页面上的元素后原页面消失了,也是可以switchto新的页面的。。而且也必需switchto,但是如果你整个的driver都quit了。。那当然没办法switch了。。因为driver都不存在了。。。session已经结束了还搞毛 啊
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    9#
     楼主| 发表于 2014-8-11 23:17:07 | 只看该作者
    回复 8# joykao


        就是整个会话多被关闭了,A页面submit方法,window.open打开一个页面,然后把重定向的url传进去,打开一个新页面B,然后A页面关闭,这样不是我就完全无法操作B页面上的元素了,因为压根不能switchTo,所以现在不知道如何解决
    回复 支持 反对

    使用道具 举报

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

    连续签到: 1 天

    [LV.9]测试副司令

    10#
    发表于 2014-8-12 10:47:34 | 只看该作者
    回复 9# zoo4778362


       试过了?因为我个人之前为一个项目调试过代码,情况和你这个很类似吧。。。开始打开一个initial的页面,然后输入一些信息提交会打开一个新页面,而且有明显的先关掉原先页面后打开现在页面,但是switchto是成功的。。。就是在submit后切换。。。

    用的switchto方法就是上面我提供的。。。因为你用driver打开了一个新页面,即使原来页面关掉了还是有一个新页面的driver是活着的。。。肯定是可以switch的。。。除非你所有的driver全退出了。。。
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    11#
     楼主| 发表于 2014-8-12 14:01:05 | 只看该作者
    回复 10# joykao

    你有QQ吗。我QQ4778362.加下好友交流下。。。唉。表示不科学呀
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    12#
     楼主| 发表于 2014-8-13 14:43:12 | 只看该作者
    回复 10# joykao


        用你的方法已经解决了。我把浏览器的设置还原到默认就可以了...但是你那段代码的意思我不太理解,因为在submit后,我也尝试过取到hanle,但是只有一个,有点不懂你这个是如何切换过去的
    回复 支持 反对

    使用道具 举报

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

    连续签到: 1 天

    [LV.9]测试副司令

    13#
    发表于 2014-8-13 15:20:59 | 只看该作者
    回复 12# zoo4778362

    在submit后取到一个handle是对的。因为只有一个窗口存在。。那段代码的意思简单理解是就是只要当前有driver触发的窗口就switch到那个窗口。。。
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    14#
     楼主| 发表于 2014-8-14 09:39:38 | 只看该作者
    回复 13# joykao


        有点明白了。只要是个新窗口,就会切换过去,应该是这样一个意思把
    回复 支持 反对

    使用道具 举报

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

    连续签到: 1 天

    [LV.9]测试副司令

    15#
    发表于 2014-8-14 13:31:36 | 只看该作者
    回复 14# zoo4778362


        是的
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    16#
     楼主| 发表于 2014-8-14 15:36:08 | 只看该作者
    回复 15# joykao


        谢了哈,在调试脚本的时候碰到一个新的问题,我一个初始页面,父页面上有个按钮,点击这个按钮能弹出一个固定大小的窗口页面,子窗口里面有一堆选择的东西,我按F12跳不到开发者工具,页面右键也不行,那这个页面的元素如何去定位,页面已经切过去了,找到了handle有两个
    回复 支持 反对

    使用道具 举报

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

    连续签到: 1 天

    [LV.9]测试副司令

    17#
    发表于 2014-8-15 09:05:13 | 只看该作者
    你可以直接访问那些小窗口的URL试试。。自己手动的打开那些窗口然后看看可以检查元素属性吗?没理由不能检查元素的
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    18#
    发表于 2014-8-15 11:18:06 | 只看该作者
    回复 12# zoo4778362


        你好,我这里跟你存在的问题一样,可否发下你的代码,谢谢!
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    19#
     楼主| 发表于 2014-8-15 13:30:08 | 只看该作者
    回复 18# gaspar1986


        上面的大神已经被代码发出来了。。。。你试试看,不行把你那边的情况描述下。我看下是不是一样
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    20#
     楼主| 发表于 2014-8-15 13:31:46 | 只看该作者
    回复 17# joykao


        嗯的。我昨天用Lr去把弹窗的url捕获,然后直接新页面打开了。。但是每次多这样感觉不科学
    回复 支持 反对

    使用道具 举报

    本版积分规则

    关闭

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

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

    GMT+8, 2024-11-23 12:58 , Processed in 0.078797 second(s), 24 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

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