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

公众号搜索:TestingStudio 霍格沃兹的干货都很硬核

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

考察点

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

技术点

  • Selenium API
  • driver.quit()
  • driver.close()

总结

quit()

  • 退出当前所有的窗口;

close()

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

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

演示代码

quit()

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

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

@Test
public 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);
        }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值