写点什么

软件测试面试真题 | web 自动化关闭浏览器,quit() 和 close() 的区别

作者:测试人
  • 2022-12-28
    北京
  • 本文字数:1113 字

    阅读完需:约 4 分钟

获取更多面试真题


面试官问:在 UI 自动化中怎样进行浏览器的关闭操作?使用 driver 调用 quit()和调用 close()的区别是什么?


考察点


  • 是否用过 Selenium 框架

  • 是否编写过对应浏览器退出的测试用例


技术点


  • Selenium API

  • driver.quit()

  • driver.close()


总结

quit()

  • 退出当前所有的窗口;


close()

  • 关闭当前的标签页,其他窗口不退出


关闭所有的浏览器窗口,销毁 driver 操作,则需要使用的是 quit 方法;当打开了多个窗口,只想要关闭非最后一个窗口的时候,使用的是 close 方法。


演示代码

quit()

quit():所有的浏览器窗口退出


@Testpublic void quit() throws InterruptedException {    WebDriver webDriver = WebDriverManager.chromedriver().create();    webDriver.get("https://www.baidu.com/");    webDriver.findElement(By.linkText("新闻")).click();    sleep(5000);    //输出当前的窗口    Set<String> windowHandles = webDriver.getWindowHandles();    System.out.println(windowHandles);    sleep(3000);    //切换到第一个窗口    webDriver.switchTo().window(windowHandles.stream().findFirst().get());
sleep(2000); System.out.println(webDriver.getWindowHandle()); //Quits this driver, closing every associated window. webDriver.quit(); sleep(6000);
}
复制代码


close()

close():只关闭当前的浏览器标签页,如果当前浏览器标签页剩下最后一个,则所有标签页面退出

@Testpublic void close() throws InterruptedException {        WebDriver webDriver = WebDriverManager.chromedriver().create();        webDriver.get("https://www.baidu.com/");        String mainHandle = webDriver.getWindowHandle();        webDriver.findElement(By.linkText("新闻")).click();        sleep(2000);        //切换到第一个窗口        webDriver.switchTo().window(mainHandle);        sleep(2000);        webDriver.findElement(By.linkText("图片")).click();        sleep(2000);        webDriver.close();//关闭第一个窗口        System.out.println("浏览器关闭第一个窗口");        sleep(6000);        //切换到最后一个窗口关闭        Set<String> handles = webDriver.getWindowHandles();        ArrayList<String> hanleList = new ArrayList<>(handles);        String endHandle = hanleList.get(hanleList.size() - 2);        webDriver.switchTo().window(endHandle);        sleep(2000);        webDriver.close();        System.out.println("浏览器关闭最后一个标签页");        sleep(6000);        }
复制代码


获取更多面试真题

发布于: 刚刚阅读数: 3
用户头像

测试人

关注

还未添加个人签名 2022-08-29 加入

还未添加个人简介

评论

发布
暂无评论
软件测试面试真题 | web自动化关闭浏览器,quit()和close()的区别_软件测试_测试人_InfoQ写作社区