当前位置: 首页 > news >正文

软件测试笔记【Web自动化测试篇】:python实现,教学必备

Web自动化测试从零到一:Selenium元素定位、等待机制、鼠标键盘操作全攻略

手工点点点效率太低?回归测试每次都要重复执行?Web自动化测试正是解决这些痛点的利器。本文带你系统掌握Selenium WebDriver的核心知识:浏览器启动、8大元素定位、隐式/显式等待、表单/鼠标/键盘操作、JavaScript执行等


目录

Web自动化测试从零到一:Selenium元素定位、等待机制、鼠标键盘操作全攻略

1. ⭐ 写在前头,行业趋势

Playwright(微软出品)

2. 🌐 Web自动化测试概述

常用工具

3. 🧩 Selenium WebDriver基础

引入Selenium(Python示例)

4. 🎯 元素定位方法(返回 WebElement 对象)

5. ⏱️ 元素等待机制

隐式等待

显式等待

常用等待条件

6. 🖥️ 浏览器操作

窗口管理

页面滚动(执行JavaScript)

浏览器导航

表单操作

下拉菜单处理(Select类)

键盘操作(Keys类)

鼠标操作(ActionChains类)

元素状态判断

7. ⚡ 执行JavaScript

弹窗处理

8. 📖 总结与实践

🔮 系列内容

✨ 写在最后


1. ⭐ 写在前头,行业趋势

虽然Selenium是现在主流必学,但2026年的行业现状——Playwright的采用率已经超过了Selenium,加上AI辅助测试五花八门,让基础薄弱的可以快速上手。

Playwright(微软出品)

无需手动配置驱动自带浏览器驱动,不用再管 ChromeDriver、GeckoDriver
自动智能等待自动处理异步加载、弹窗、iframe,无需写WebDriverWait
执行更快速度比 Selenium 快 3~5 倍,稳定性更高
多场景开箱即用多标签、多浏览器、移动端模拟、视频录制、网络拦截一键搞定
对前端 JS 更友好原生支持page.evaluate()执行复杂 JS,可直接监听网络、控制浏览器底层行为,语法更贴近前端开发习惯

2. 🌐 Web自动化测试概述

Web自动化测试 是通过模拟用户操作对Web应用程序进行自动化验证的过程,主要目的:提高测试效率、保证回归测试质量

常用工具(官网链接)

  • Selenium(目前最常见的开源Web自动化测试框架)

  • Cypress

  • Playwright (全栈轻量级开发新星)


3. 🧩 Selenium WebDriver基础

WebDriver架构

通过浏览器驱动与不同浏览器进行通信,支持 Chrome、Firefox、Edge 等主流浏览器。

浏览器启动与管理

通过WebDriver类启动和管理浏览器会话,可设置浏览器窗口大小、位置等参数。

页面导航

  • get()方法打开指定 URL

  • forward()back()refresh()方法实现页面前进、后退和刷新

引入Selenium(Python示例)

from selenium import webdriver # 以下按需引入 from selenium.webdriver.common.by import By from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC from selenium.webdriver.common.keys import Keys from selenium.webdriver.common.action_chains import ActionChains from selenium.webdriver.support.ui import Select

4. 🎯 元素定位方法(返回 WebElement 对象)

Selenium 提供8种基本元素定位方式,通过By类实现:

driver = webdriver.Chrome() driver.find_element(By.ID, "id值") # id定位 driver.find_element(By.NAME, "name值") # name定位 driver.find_element(By.CLASS_NAME, "class值") # class值定位 driver.find_element(By.CSS_SELECTOR, "css选择器") # css选择器定位 driver.find_element(By.TAG_NAME, "标签名") # 标签名定位 driver.find_element(By.LINK_TEXT, "链接文本") # 链接文本定位 driver.find_element(By.PARTIAL_LINK_TEXT, "部分链接文本") # 部分链接文本定位 driver.find_element(By.XPATH, "xpath表达式") # [XPath]定位

💡提示:优先使用 ID、NAME 等稳定属性,XPATH灵活但维护成本较高。


5. ⏱️ 元素等待机制

隐式等待

设置全局等待时间,在查找元素时如果未立即找到会持续等待直到超时。

driver.implicitly_wait(10) # 等待10秒

显式等待

针对特定元素设置等待条件,更加灵活精准。

from selenium.webdriver.support import expected_conditions as EC WebDriverWait(driver, 10).until( EC.element_to_be_clickable((By.ID, "element_id")) )

常用等待条件

条件说明
element_to_be_clickable元素可点击
presence_of_element_located元素存在于DOM
visibility_of_element_located元素可见
element_to_be_selected元素被选中

6. 🖥️ 浏览器操作

窗口管理

driver.current_window_handle # 获取当前窗口句柄 driver.switch_to.window(handle) # 切换窗口 driver.maximize_window() # 最大化窗口

页面滚动(执行JavaScript)

driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")

浏览器导航

driver.get("https://www.baidu.com") # 访问页面 title = driver.title # 获取页面标题 url = driver.current_url # 获取当前URL driver.forward() # 前进 driver.back() # 后退 driver.refresh() # 刷新

表单操作

element.clear() # 清空输入框 element.send_keys("文本内容") # 输入文本 element.submit() # 直接提交表单 element.send_keys(Keys.ENTER) # 模拟回车键

下拉菜单处理(Select类)

from selenium.webdriver.support.ui import Select select = Select(driver.find_element(By.ID, "dropdown")) select.select_by_index(1) # 通过索引选择 select.select_by_value("value") # 通过值选择 select.select_by_visible_text("文本") # 通过可见文本选择

键盘操作(Keys类)

element.send_keys(Keys.CONTROL + 'a') # 全选 element.send_keys(Keys.TAB) # 切换焦点

鼠标操作(ActionChains类)

from selenium.webdriver.common.action_chains import ActionChains actions = ActionChains(driver) actions.move_to_element(element).perform() # 鼠标悬停 actions.double_click(element).perform() # 双击 actions.context_click(element).perform() # 右键点击 actions.drag_and_drop(source, target).perform() # 拖放

元素状态判断

方法说明
element.is_displayed()是否可见
element.is_selected()是否被选中(用于单选/复选框)
element.is_enabled()是否可用
find_elements(By.xxx, "value")列表长度判断

7. ⚡ 执行JavaScript

driver.execute_script("arguments[0].click();", element) # 通过JS点击元素 driver.execute_script("return document.title;") # 获取页面标

弹窗处理

alert = driver.switch_to.alert # 获取弹窗 alert.accept() # 确认 alert.dismiss() # 取消

8. 📖 总结与实践

知识点关键要点
元素定位优先ID/NAME,XPATH作为补充
等待机制隐式等待设置全局超时,显式等待针对特定条件
表单操作clear()、send_keys()、Select类处理下拉框
鼠标键盘ActionChains + Keys 模拟复杂交互
JavaScript用于滚动、点击隐藏元素等原生方法无法完成的场景

案例需求:

1、打开在百度搜索主页(https://www.baidu.com/)

2、鼠标指向设置按钮,选择高级搜索

3、在高级搜索上的文档格式选项中选择PDF,在搜索结果包含全部关键词中输入“测试”,点击高级搜索按钮

代码实现:


🔮 系列内容

系列文章链接(持续更新中)

  • 上一篇 白盒测试
  • 下一篇 接口测试(python版)
  • 还有更多…

关注我,第一时间获取更新


✨ 写在最后

如果本文对你有帮助,欢迎点赞收藏评论转载引用请私信作者本人(╹ڡ╹ )~

http://www.jsqmd.com/news/867097/

相关文章:

  • 从感知机到万能逼近:神经网络表达能力跃迁的底层逻辑
  • 700万参数TRM模型如何在几何推理任务中超越大模型
  • 2026年,国内外有哪些值得关注的开源商城系统?
  • Donut端到端票据识别:小票图像直出结构化JSON
  • python旅游分享点评网系统
  • EditThinker
  • 医疗AI可靠性工程:基于心脏病数据集的可解释堆叠建模实践
  • 如何快速掌握MelonLoader:Unity游戏模组加载器的完整指南
  • 通过Taotoken的CLI工具一键配置Python开发环境
  • 校招数据EDA与分类建模实战:从简历混沌中识别能力信号
  • 如何5分钟批量添加专业摄影水印:semi-utils完整指南
  • OOMAO:MATLAB自适应光学仿真工具箱完全指南
  • 如何用3分钟制作专业AI翻唱:开源神器AICoverGen完全指南
  • 别再死磕 SEO 了!GEO 才是 AI 时代品牌营销的必答题 - 商业科技观察
  • AI Agent预测式防御:毫秒级故障预判与柔性干预
  • GPT-5.3-Codex自构建机制:AI如何实现自我诊断与代码修正
  • KAG增强生成、AlphaMath推理与Offloading协同架构
  • 3种终极方法破解Navicat Mac版试用限制:一键无限重置教程
  • 正规的 x 光机厂家推荐:多科智能装备有限公司资质齐全 - 17322238651
  • 广州搬家公司哪家好:大黄蜂搬家品质上乘 - 17329971652
  • 如何在Linux系统上安装和运行SOLIDWORKS:完整免费指南
  • 好用还专业!盘点2026年口碑爆棚的的降AI率网站
  • Java 中 ArrayDeque 与 LinkedList 作为栈使用的性能对比
  • 如何快速掌握Topit:macOS窗口置顶工具的终极指南
  • 2026年软考算法知识点—计算机等级考试—软件设计师考前备忘录—东方仙盟
  • Windows热键冲突智能诊断:Hotkey Detective技术深度解析
  • 2026年杭州临平奢侈品回收标杆:杭州名家奢侈品,临平本地回收价高、口碑可靠的TOP1之选商家 - 人间半盏茶
  • 靠谱的 x 光机厂家推荐:多科智能装备有限公司诚信为本 - 13425704091
  • 为什么92%的浙江话语音项目在ElevenLabs上失败?——资深方言NLP工程师20年踩坑复盘
  • 5分钟免费备份QQ空间所有历史记录:GetQzonehistory终极指南