打开页面、断言校验及关闭浏览器会话等操作
演示浏览器生命周期管理的 三个核心动作:启动 → 打开页面 → 关闭/退出。多标签、异常中断等场景下有诸多细节需要注意。
三个 API 的本质区别:
driver.get(url):会阻塞,直到浏览器 load 事件触发才返回(包括图片、iframe 子页面、CSS、同步 JS),不是"瞬间打开";如果某张图 404 挂了,可能会卡到超时。⚠️ 但它不等异步加载!fetch/AJAX 请求、JS 动态渲染的元素、React/Vue 组件、懒加载图片、SPA 路由跳转 —— 这些 load 事件之后才发生,driver.get() 返回时它们可能还没出现,需要用显式等待(WebDriverWait)driver.close():只关 当前标签,其他标签继续,driver 仍可用driver.quit():关掉 所有标签 + 杀掉 chromedriver 进程,driver 不可再用⚠️ 常见问题:忘了写 driver.quit(),任务管理器会残留 chromedriver 进程。建议用 try/finally 保证无论成功失败都执行 quit()。
webdriver.Chrome / driver.get() / driver.close() / driver.quit() / driver.current_url
# 快速参考 driver = webdriver.Chrome() driver.get("https://example.com") assert "example.com" in driver.current_url driver.close() # 关闭当前页 driver.quit() # 全部退出
webdriver.Chrome() 启动浏览器,driver.get("https://example.com") 打开页面,断言 current_url 包含 example.comdriver.close() 仅关闭当前标签页,配合 window.open() 多标签场景演示driver.quit() 关闭所有窗口并结束 WebDriver 会话,验证会话结束后再调用 driver API 会抛出异常
操作步骤:
① 使用 webdriver.Chrome() 启动浏览器;
② driver.get("目标URL") 打开页面,断言 driver.current_url 包含预期域名;
③ driver.close() 关闭当前窗口;
④ driver.quit() 结束会话。
# 练习 2 参考答案 from selenium import webdriver import selenium.common.exceptions as se_exc # 启动浏览器 driver = webdriver.Chrome() # ① 打开页面并断言 driver.get("https://example.com") assert "example.com" in driver.current_url print("✅ 页面打开成功:" + driver.current_url) # ② close 关闭当前窗口(多标签场景演示) # 用 JS 打开新标签页 driver.execute_script("window.open('https://autotest-505.pages.dev/','_blank')") # 直接 close 当前标签(默认仍是第一个标签) driver.close() print("✅ driver.close() 执行成功") # ③ quit 关闭全部并结束会话,验证 quit 后再调用会抛异常 driver.quit() print("✅ quit 已执行,验证 quit 后再调用 driver API 会抛异常...") quit_ok = False try: driver.current_url # 会话已结束,应抛异常 except se_exc.NoSuchWindowException: quit_ok = True except se_exc.WebDriverException: quit_ok = True print("✅ 练习 2 完成(quit 后异常已确认)")