写点什么

软件面试|driver 调用 quit 方法和调用 close 方法的区别?

  • 2023-08-02
    北京
  • 本文字数:1100 字

    阅读完需:约 4 分钟

问题

  • 在 UI 自动化中怎样进行浏览器的关闭操作?

  • 使用 driver 调用 quit 和调用 close 的区别是什么?

考察点

  • 是否用过 Selenium 框架

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

技术点

  • Selenium API

  • driver.quit()

  • driver.close()

回答

quit()

  • 退出当前所有的窗口;

close()

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

场景

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

演示代码

  • 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:只关闭当前的浏览器标签页,如果当前浏览器标签页剩下最后一个,则所有标签页面退出


@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);        }
复制代码


获取更多技术资料,请点击!

用户头像

社区:ceshiren.com 微信:ceshiren2021 2019-10-23 加入

微信公众号:霍格沃兹测试开发 提供性能测试、自动化测试、测试开发等资料,实时更新一线互联网大厂测试岗位内推需求,共享测试行业动态及资讯,更可零距离接触众多业内大佬。

评论

发布
暂无评论
软件面试|driver调用quit方法和调用close方法的区别?_霍格沃兹测试开发学社_InfoQ写作社区