浏览器操作练习 · 页面导航

前进、后退、刷新等页面导航操作

首页 浏览器操作导航

页面导读 · 页面导航

演示浏览器 历史栈(History Stack) 的导航操作。get / back / forward / refresh 四个方法看似简单,但底层依赖同一个历史记录数据结构。

历史栈原理:

💡 容易踩坑:新开标签(window.open)在新标签里调 back() 没用 —— 每个标签的历史栈是独立的。

参数配置 打开关闭 页面导航 窗口控制 页面信息 元素交互 Cookie操作 截图保存 超时等待

练习 3 · 页面导航(get/back/forward/refresh)

📋 练习要求 · 页面导航
概念 浏览器维护导航历史栈,get 压栈、back/forward 在栈内移动指针
Selenium API driver.get / driver.back / driver.forward / driver.refresh / driver.title / driver.current_url
练习要点
  • driver.get(url) 后断言 driver.title 包含预期文案
  • 依次访问 A → B,再 back() 回 A、forward() 再到 B,每步断言 current_url
  • driver.refresh() 刷新当前页,断言页面可正常渲染(无异常)
# 快速参考
driver.get("https://example.com")
assert "Example" in driver.title
driver.get("https://selenium.dev")
driver.back()
assert "example.com" in driver.current_url
driver.forward()
driver.refresh()
📋 本节练习清单
  • ✅ 练习目标 1:get 打开并断言 title — driver.get() 打开本页,断言 title 包含「浏览器操作练习」、current_url 以 .html 结尾
  • ✅ 练习目标 2:back / forward 历史导航 — 依次点击进入子页面 A → B,driver.back() 回 A 并断言标题与 URL,driver.forward() 再到 B 并断言
  • ✅ 练习目标 3:refresh 刷新页面 — driver.refresh() 刷新当前页,断言刷新后 title、current_url 非空且页面正常渲染
3 练习目标:页面跳转、前进后退、刷新并断言 title / current_url

操作步骤:
① 使用 driver.get() 加载本页,断言 title 包含「浏览器操作练习」,current_url 以 .html 结尾。
② 通过模拟点击「子页面 A → 子页面 B」观察 URL 变化,再使用 back() 回退、forward() 前进,每步都断言地址栏与页面标题的显示值同步变化。
③ 最后使用 refresh() 刷新页面,断言「刷新次数」面板值每次增加(可调用多次验证)。

关于我们

Python 自动化测试学习平台是一个面向软件测试工程师、开发人员及在校学生的交互式在线学习平台,专注于 Selenium WebDriver 与 Python unittest 自动化测试技能的教学与实践。

我们以"理论 + 实战 + 可交互演示"为核心特色,将八种常规元素定位和Javascript定位、元素操作、自动化测试工具、单元测试、测试模型等知识体系拆分为模块化课程,每个模块都配有可点击、可输入、可运行的模拟练习页面。

平台致力于降低自动化测试的入门门槛,让学习者从"看懂代码"到"动手实操",逐步掌握企业级自动化测试框架的设计与落地能力。

联系方式

📧邮箱:lq@selenium-auto-test.com

📞电话:0755-12345678

📍地址:深圳

💬微信公众号:Selenium自动化测试

🐙GitHub:github.com/selenium-auto-test

免责声明

1. 本平台所有示例代码、演示页面及教程内容均仅供学习交流使用,不构成任何商业推广或技术服务承诺。

2. 平台中的 Selenium API 描述、Python 语法说明均以官方文档为准,如有版本差异请以对应官方文档为准。

3. 学习者在实际项目中应用平台所学内容时,应结合自身项目环境进行充分测试,本平台不对因直接使用示例代码而产生的任何直接或间接损失承担责任。

4. 本平台所引用的第三方库(Selenium、ChromeDriver、unittest 等)版权归其各自作者及维护者所有。

5. 如涉及版权问题或内容建议,请及时通过联系方式与我们沟通,我们将第一时间处理。

查看参考答案(Python Selenium)
# 练习 3 参考答案
import time
from selenium.webdriver.common.by import By

# 1. get 打开页面并断言 title / current_url
driver.get("file:///f:/autotest_project/browser_op_practice.html")
assert "浏览器操作练习" in driver.title
assert driver.current_url.endswith(".html")
print(f"title={driver.title}")
print(f"url={driver.current_url}")

# 2. 模拟点击:首页 -> 子页面 A -> 子页面 B(通过点击页面链接,真实场景下是 driver.get 新 URL)
links = driver.find_elements(By.CLASS_NAME, "nav-link")
# 先点第一个(子页面 A)
links[0].click()
time.sleep(0.5)
assert "个人中心" in driver.find_element(By.ID, "nav_title_text").text

# 当前页面上再点「前往 B」(需要重新获取链接)
driver.find_element(By.XPATH, "//span[contains(text(),'继续前往 子页面 B')]").click()
time.sleep(0.5)
assert "购物车" in driver.find_element(By.ID, "nav_title_text").text

# 3. back() 回退到 A
driver.back()
time.sleep(0.5)
# 使用面板断言(真实场景应使用 driver.title / current_url)
assert "个人中心" in driver.find_element(By.ID, "nav_title_text").text

# 4. forward() 前进到 B
driver.forward()
time.sleep(0.5)
assert "购物车" in driver.find_element(By.ID, "nav_title_text").text

# 5. refresh() 多次,断言刷新计数增加
before = int(driver.find_element(By.ID, "refresh_count").text)
driver.refresh()
# 注意:refresh() 会重载整个页面,面板值会清零;真实场景下刷新计数需要结合 URL 参数或 Cookie 保持
# 更稳妥的方式:用 driver.refresh() + title/current_url 非空断言
assert driver.title != ""
assert driver.current_url != ""