Selenium自动化测试完整入门指南
1. Selenium概述与环境搭建1.1 Selenium简介Selenium是一个用于Web应用程序测试的强大工具集支持多种浏览器和操作系统。它主要由三个组件组成Selenium IDE录制和回放工具、Selenium WebDriver浏览器自动化API和Selenium Grid分布式测试。1.2 环境配置步骤Python环境配置# 安装Selenium库 pip install selenium # 或者使用conda安装 conda install selenium浏览器驱动配置Selenium需要对应的浏览器驱动程序来实现浏览器控制。以下是主流浏览器的驱动配置方法浏览器驱动名称下载地址环境变量配置ChromeChromeDriverChrome官网或镜像站添加到系统PATHFirefoxGeckoDriverMozilla官网添加到系统PATHEdgeEdgeDriverMicrosoft官网添加到系统PATH关键配置步骤下载与浏览器版本匹配的驱动程序将驱动文件所在目录添加到系统PATH环境变量或者将驱动文件放在项目目录中2. 基础框架与核心功能2.1 基本浏览器操作from selenium import webdriver from selenium.webdriver.common.by import By import time # 启动Chrome浏览器 driver webdriver.Chrome() # 确保chromedriver在PATH中 # 打开网页 driver.get(https://www.baidu.com) # 获取页面标题 print(页面标题:, driver.title) # 浏览器窗口操作 driver.maximize_window() # 最大化窗口 driver.set_window_size(1024, 768) # 设置窗口大小 # 页面导航 driver.back() # 后退 driver.forward() # 前进 driver.refresh() # 刷新 # 关闭浏览器 driver.quit()2.2 元素定位方法Selenium提供了8种主要的元素定位方法每种方法都有其适用场景和优缺点定位方法语法示例优点缺点ID定位find_element(By.ID, username)速度快唯一性高依赖元素有ID属性Name定位find_element(By.NAME, password)常见且稳定可能不唯一Class定位find_element(By.CLASS_NAME, btn)适用于样式类可能匹配多个元素Tag定位find_element(By.TAG_NAME, input)简单直接通常匹配多个元素Link Textfind_element(By.LINK_TEXT, 登录)精确匹配链接文本只适用于链接Partial Linkfind_element(By.PARTIAL_LINK_TEXT, 登)模糊匹配链接可能匹配多个CSS选择器find_element(By.CSS_SELECTOR, #login)功能强大灵活语法相对复杂XPathfind_element(By.XPATH, //input[iduser])功能最强大性能相对较慢实际应用示例# 百度搜索示例 driver.get(https://www.baidu.com) # 多种定位方式演示 search_box driver.find_element(By.ID, kw) # ID定位 search_box driver.find_element(By.NAME, wd) # Name定位 search_box driver.find_element(By.CSS_SELECTOR, #kw) # CSS选择器 search_box driver.find_element(By.XPATH, //input[idkw]) # XPath定位 # 输入搜索关键词 search_box.send_keys(Selenium自动化测试) # 定位搜索按钮并点击 search_btn driver.find_element(By.ID, su) search_btn.click() # 等待结果加载 time.sleep(3)3. 高级功能与最佳实践3.1 等待机制Selenium提供了三种等待方式确保元素加载完成后再进行操作from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC # 隐式等待 - 全局设置 driver.implicitly_wait(10) # 最多等待10秒 # 显式等待 - 针对特定条件 wait WebDriverWait(driver, 10) element wait.until(EC.presence_of_element_located((By.ID, dynamic-element))) # 固定等待 - 不推荐在生产环境使用 time.sleep(5)3.2 元素操作综合示例def comprehensive_element_operations(): driver webdriver.Chrome() try: driver.get(https://example.com/login) # 输入文本 username driver.find_element(By.ID, username) username.clear() # 清空现有文本 username.send_keys(testuser) # 输入用户名 password driver.find_element(By.ID, password) password.send_keys(testpass) # 复选框操作 remember_me driver.find_element(By.ID, remember) if not remember_me.is_selected(): remember_me.click() # 勾选复选框 # 下拉框选择 from selenium.webdriver.support.ui import Select country_select Select(driver.find_element(By.ID, country)) country_select.select_by_visible_text(China) # 按文本选择 country_select.select_by_value(cn) # 按值选择 country_select.select_by_index(1) # 按索引选择 # 提交表单 login_btn driver.find_element(By.ID, login-btn) login_btn.click() # 验证登录成功 welcome_msg WebDriverWait(driver, 10).until( EC.presence_of_element_located((By.CLASS_NAME, welcome)) ) print(登录成功:, welcome_msg.text) finally: driver.quit()4. 测试框架集成4.1 结合unittest框架使用Python的unittest框架可以更好地组织测试用例import unittest from selenium import webdriver from selenium.webdriver.common.by import By class BaiduSearchTest(unittest.TestCase): def setUp(self): 每个测试用例执行前的准备工作 self.driver webdriver.Chrome() self.driver.implicitly_wait(10) self.base_url https://www.baidu.com def test_search_selenium(self): 测试百度搜索Selenium功能 driver self.driver driver.get(self.base_url) # 定位搜索框并输入关键词 search_box driver.find_element(By.ID, kw) search_box.clear() search_box.send_keys(Selenium自动化测试) # 点击搜索按钮 search_btn driver.find_element(By.ID, su) search_btn.click() # 验证搜索结果 results driver.find_elements(By.CSS_SELECTOR, .result h3 a) self.assertTrue(len(results) 0, 搜索结果为空) # 验证页面标题包含搜索关键词 self.assertIn(Selenium自动化测试, driver.title) def tearDown(self): 每个测试用例执行后的清理工作 self.driver.quit() if __name__ __main__: unittest.main()4.2 测试断言方法unittest提供了丰富的断言方法来验证测试结果断言方法说明使用场景assertEqual(a, b)验证a等于b验证预期结果assertTrue(x)验证x为True验证条件成立assertIn(a, b)验证a在b中验证文本包含assertIsInstance(obj, cls)验证对象类型验证返回类型5. 常见问题与解决方案5.1 浏览器驱动问题问题浏览器版本与驱动不匹配导致启动失败解决方案确保浏览器驱动版本与浏览器版本匹配使用浏览器自动更新关闭功能避免版本冲突考虑使用WebDriver管理器自动下载匹配的驱动5.2 元素定位失败问题动态加载内容导致元素定位失败解决方案使用显式等待代替固定等待结合多种定位策略提高稳定性使用try-except处理定位异常from selenium.common.exceptions import NoSuchElementException, TimeoutException def safe_element_find(driver, by, value, timeout10): 安全地查找元素处理可能的异常 try: wait WebDriverWait(driver, timeout) element wait.until(EC.presence_of_element_located((by, value))) return element except (NoSuchElementException, TimeoutException) as e: print(f元素定位失败: {value}, 错误: {e}) return None5.3 录制工具的使用对于初学者可以使用Katalon Recorder等录制工具快速入门安装浏览器插件版的Katalon Recorder录制用户在浏览器中的操作导出为Selenium代码在IDE中调试和优化生成的代码这种方法可以帮助理解Selenium的工作原理和代码结构。6. 学习路径建议6.1 初学者学习路线第一阶段环境搭建和基础操作1-2周安装配置Python和Selenium学习基本的浏览器操作掌握常用元素定位方法第二阶段进阶功能和框架集成2-3周学习等待机制和异常处理集成unittest测试框架掌握页面对象模型设计模式第三阶段项目实战和优化3-4周完成完整的测试项目学习测试报告生成掌握持续集成集成通过这个系统化的学习路径你可以逐步掌握Selenium自动化测试的核心技能从基础操作到高级应用最终能够独立完成复杂的Web自动化测试项目开发。参考来源2022 JavaMavenKatalon RecorderSelenium 自动化测试开发入门教程Selenium自动化测试入门从零到精通PythonSelenium简单实现Web自动化测试python自动化测试入门教程_seleniumpythonunittest实现自动化测试入门篇selenium自动化测试入门使用 Selenium 库驱动浏览器完整入门指南

相关新闻

编辑器处理Word截图粘贴的格式兼容技巧?

编辑器处理Word截图粘贴的格式兼容技巧?

【技术宅の毕业求生指南】CMS系统Word一键转存功能开发实录(附代码红包群安利) 背景 作为新疆某高校软件工程大三狗,最近被导师逼着给CMS系统升级"Word图片一键转存"功能。要求支持Word/Excel/PPT/PDF导入、公式高清显示、跨终端…

2026/5/17 9:26:42 阅读更多 →
2026 项目管理软件选型指南:12 款工具优缺点与适用规模对照表

2026 项目管理软件选型指南:12 款工具优缺点与适用规模对照表

本文将深入对比 12 款热门项目管理工具:PingCode、Jira Confluence、Asana、monday.com、ClickUp、Wrike、Smartsheet、Microsoft Project、Azure DevOps、GitLab、Zoho Projects、Worktile。一、2026 项目管理系统选型要点与对比总览企业选型最容易踩的坑&#xf…

2026/5/17 9:26:40 阅读更多 →
车牌识别这玩意儿听起来高大上,其实拆解开来就是个暴力流程。今天咱们用Matlab从实战角度搞个能跑通的方案,重点看看怎么用阈值分割搞定车牌定位

车牌识别这玩意儿听起来高大上,其实拆解开来就是个暴力流程。今天咱们用Matlab从实战角度搞个能跑通的方案,重点看看怎么用阈值分割搞定车牌定位

Matlab基于阈值分割的车牌定位识别。 车牌识别主要包括以下三个主要步骤:车牌区域定位、车牌字符分割、车牌字符识别。 通过对采集的车牌图像进行灰度变换、边缘检测、腐蚀及平滑等过程来进行车牌图像预处理,并由此得到一种基于车牌颜色纹理特征的车牌定…

2026/7/5 21:30:26 阅读更多 →

最新新闻

AI进入下半场:模型不再稀缺,真正稀缺的是算力、场景和信任

AI进入下半场:模型不再稀缺,真正稀缺的是算力、场景和信任

过去一年,AI行业最显著的变化,是判断AI进展的方式变了。过去一年,AI行业最显著的变化,是判断AI进展的方式变了。 在更长一段时间里,外界习惯用参数规模、榜单排名、融资金额和产品发布节奏来理解AI。但进入2025年后&a…

2026/7/6 14:13:10 阅读更多 →
踩坑半年总结:C#部署YOLO最容易忽略的8个工业级细节

踩坑半年总结:C#部署YOLO最容易忽略的8个工业级细节

前言 网上关于C#部署YOLO的教程铺天盖地,但90%都停留在“跑通Demo”的阶段。真正把模型塞进产线、扛住724小时运行、应对各种边缘Case后,你才会发现:能跑和能用之间,隔着一整条护城河。 本文不讲基础环境搭建,只聊我在过去半年工业落地中用血泪换来的8个细节。每一个都是深…

2026/7/6 14:11:07 阅读更多 →
【VTG】T2SGrid: Temporal-to-Spatial Gridification for VTG

【VTG】T2SGrid: Temporal-to-Spatial Gridification for VTG

note T2SGrid 的最大贡献在于范式创新:它没有直接设计复杂的时间模块,而是巧妙地借用了视觉大模型原生的空间注意力机制,将时间流转化为空间网格。把视频多帧拼成一张网格图(把视频 clip 拼成网格图),让普…

2026/7/6 14:11:07 阅读更多 →
Auto memory,把 Claude Code 从临时搭档变成项目老同事

Auto memory,把 Claude Code 从临时搭档变成项目老同事

最近在研究 Claude Code 的记忆机制时,我一直觉得 Auto memory 这个功能被低估了。很多人把 Claude Code 当成一个会写代码、能跑命令、能改文件的终端助手,但真正把它和普通聊天式编程助手拉开距离的地方,不只是它能操作代码仓库,而是它可以在一次次会话之间沉淀项目经验。…

2026/7/6 14:09:05 阅读更多 →
多设备传动改造:盖茨工业皮带的工程应用经验复盘

多设备传动改造:盖茨工业皮带的工程应用经验复盘

摘要工厂多类型设备同步开展传动系统技改时,普遍存在工况混杂、传动结构差异化大、原有传动故障根源复杂、改造标准不统一等工程难题。大量现场技改数据统计,85% 以上改造后皮带仍短期失效,并非配件本体性能不足,而是前期故障诊断…

2026/7/6 14:09:05 阅读更多 →
CP-ABE代理重加密与混合检测技术构建动态数据安全闭环

CP-ABE代理重加密与混合检测技术构建动态数据安全闭环

1. 项目概述:当数据安全遇上智能防御 最近在梳理一些前沿的数据安全与网络防御方案时,一个组合技术方案引起了我的注意,那就是“密文策略属性基代理重加密”与“应用层攻击混合检测技术”的结合。这听起来像是一串复杂的技术名词堆砌&#xf…

2026/7/6 14:07:03 阅读更多 →

日新闻

H2 与 MySQL 单元测试兼容性:5 个关键 SQL 语句差异与规避方案

H2 与 MySQL 单元测试兼容性:5 个关键 SQL 语句差异与规避方案

H2与MySQL单元测试兼容性:5个关键SQL语句差异与规避方案1. 单元测试中的数据库兼容性挑战在Java开发领域,单元测试是保证代码质量的重要环节。当应用涉及数据库操作时,测试环境的搭建往往成为开发者的痛点。H2数据库因其轻量级、内存模式和快…

2026/7/6 0:01:17 阅读更多 →
Windows任务栏终极清理指南:用RBTray一键隐藏窗口到系统托盘

Windows任务栏终极清理指南:用RBTray一键隐藏窗口到系统托盘

Windows任务栏终极清理指南:用RBTray一键隐藏窗口到系统托盘 【免费下载链接】rbtray A fork of RBTray from http://sourceforge.net/p/rbtray/code/. 项目地址: https://gitcode.com/gh_mirrors/rb/rbtray 你是否厌倦了Windows任务栏上密密麻麻的图标&…

2026/7/6 0:01:17 阅读更多 →
Visual C++ 运行时库一键安装终极指南:告别DLL缺失烦恼

Visual C++ 运行时库一键安装终极指南:告别DLL缺失烦恼

Visual C 运行时库一键安装终极指南:告别DLL缺失烦恼 【免费下载链接】vcredist AIO Repack for latest Microsoft Visual C Redistributable Runtimes 项目地址: https://gitcode.com/gh_mirrors/vc/vcredist 你是否曾经遇到过这样的情况:下载了…

2026/7/6 0:05:19 阅读更多 →

周新闻

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容 【免费下载链接】BiliTools A cross-platform bilibili toolbox. 跨平台哔哩哔哩工具箱,支持下载视频、番剧等等各类资源 项目地址: https://gitcode.com/GitHub_Trending/bilit/BiliTools …

2026/7/6 8:11:50 阅读更多 →
威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型的陌生现状在忙碌疲惫的一天里,参与了关于混合后量子密码学的讨论,应付端点攻击找茬的人,还参与留言板讨论后,发现“威胁模型”对多数人仍是陌生概念,且多被当作时髦用语。有趣的相关画作有一幅由 Embyr 创作的…

2026/7/6 8:11:52 阅读更多 →
渗透测试入门指南:从零基础到实战环境搭建

渗透测试入门指南:从零基础到实战环境搭建

1. 从“看热闹”到“入门”:我理解的渗透测试到底是什么?每次看到新闻里说某个大公司的数据被“黑”了,或者某个网站被攻击导致服务瘫痪,你是不是和我一样,心里会冒出两个念头:一是“这黑客真厉害”&#x…

2026/7/6 6:52:56 阅读更多 →

月新闻