51Testing软件测试论坛

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

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 1653|回复: 1
打印 上一主题 下一主题

Selenium里WebDriver中窗口的close()与quit()

[复制链接]
  • TA的每日心情
    无聊
    前天 09:06
  • 签到天数: 530 天

    连续签到: 2 天

    [LV.9]测试副司令

    跳转到指定楼层
    1#
    发表于 2018-12-12 17:52:45 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
    在使用webdriver操作时,点击主窗口的链接,会弹出子窗口。此时就会有两个窗口,如主窗口为mainWindow,子窗口为detailWindow。

    1、使用detailWindow = mainWindow.switchTo().window(detailWindowHandle); 切换并定位到子窗口中。

    2、然后关闭子窗口,调用detailWindow.quit(),

    3、mainWindow.switchTo().window(mainWindowHandle); 切换回到父窗口

    4、mainWindow.quit();关闭父窗口

    程序执行到第四步时,出错了,提示类似“no a session ……”错误信息,

    查了一下网上的webdreiver 的 api,才发现,

    quit()详细信息:  “Quits this driver, closing every associated window”,执行这个方法后,driver会关闭所有关联窗口。

    close()详细信息:Close the current window, quitting the browser if it's the last window currently open  ,此方法是关闭当前窗口,或最后打开的窗口。



    部分代码如下:
    1. //   author: aerchi, aerchi@gmail.com
    2.                                          Set<String> handles = mainWindow.getWindowHandles();
    3.                                          Out.println(handles);
    4.                                                         
    5.                                          Out.println("Change to detail page");
    6. //                                         detailWindow=WindowUtil.getPopupWindow(mainWindow);
    7.                                          Iterator<String> itWin = handles.iterator();
    8.                                           while(itWin.hasNext()) {
    9.                                             String key = itWin.next();
    10.                                             if (mainWindowHandle.equals(key)) {
    11.                                                 continue;
    12.                                             }
    13.                                             detailWindowHandle = key;
    14.                                          }
    15. //   author: aerchi, aerchi@gmail.com
    16.                                          detailWindow = mainWindow.switchTo().window(detailWindowHandle);                                         
    17. //                                         detailWindowHandle = WindowUtil.getWindowHandle(detailWindow);       
    18.                                        
    19.                                          detailWindow.close();
    20.                                          handles.remove(detailWindowHandle);
    21.                                          
    22.                                          //切换到主窗口
    23.                                          mainWindow = mainWindow.switchTo().window(mainWindowHandle);
    复制代码
    • 1. webDriver.Close() - Close the browser window that the driver has focus of //关闭当前焦点所在的窗口
    • 2. webDriver.Quit() - Calls dispose //调用dispose方法
    • 3. webDriver.Dispose() Closes all browser windows and safely ends the session 关闭所有窗口,并且安全关闭session


    弄明白了,这两个方法的不同,以上错误信息就能迎刃而解了。
    大功造成,特此记录一下。


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

    使用道具 举报

    本版积分规则

    关闭

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

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

    GMT+8, 2024-11-23 11:59 , Processed in 0.066747 second(s), 22 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

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