news 2026/5/1 9:01:46

Python Selenium 超详细新手教程:从零开始掌握浏览器自动化

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Python Selenium 超详细新手教程:从零开始掌握浏览器自动化

以下是Python + Selenium 超详细新手教程(2026 年最新版):从零开始掌握浏览器自动化。

这份教程基于Selenium 4.40+(2026 年 1 月最新稳定版)和Python 3.12/3.13,重点解决新手最痛的几个问题:

  • 驱动安装不再手动下载(Selenium Manager 自动搞定)
  • headless / 无头模式 / 绕过检测
  • 常见元素定位、等待、交互、异常处理
  • 真实项目场景示例(登录、爬取、表单填写、截图等)

0. 为什么 2026 年还在学 Selenium?

  • 动态 JS 页面、复杂交互、文件上传、验证码绕过等场景,Playwright / Puppeteer虽快,但 Selenium 生态最成熟、职位最多、云测试平台支持最好。
  • Selenium Manager(4.6+ 内置)让安装难度大幅降低,新手友好度暴涨。

1. 环境准备(5 分钟搞定)

步骤 1:安装 Selenium(包含 Selenium Manager)

pipinstall--upgrade selenium# 推荐额外安装(方便调试、等待、日志)pipinstallwebdriver-manager# 可选,Selenium Manager 已够用,但有时更稳定

步骤 2:验证安装

fromseleniumimportwebdriverprint(webdriver.__version__)# 应该 ≥ 4.40.0

2026 年关键变化

  • Selenium 4.6+内置 Selenium Manager(Rust 实现),自动下载匹配你浏览器版本的 chromedriver/geckodriver/msedgedriver 等。
  • 不再需要手动去 chromedriver.chromium.org 下载驱动,也不用放 PATH。

2. 第一个程序:打开浏览器 + 访问页面

fromseleniumimportwebdriverfromselenium.webdriver.chrome.optionsimportOptions# ------------------- 方式一:最简单(推荐新手) -------------------driver=webdriver.Chrome()# 自动使用 Selenium Manager 下载驱动driver.get("https://www.python.org")print(driver.title)# Python.org 标题driver.quit()# 必须关闭,否则进程残留

方式二:无头模式(headless)——后台运行,不弹出窗口

options=Options()options.add_argument("--headless=new")# 现代无头模式(Chrome 109+ 推荐)options.add_argument("--disable-gpu")# 部分系统需要options.add_argument("--no-sandbox")# Linux / Docker 常见options.add_argument("--disable-dev-shm-usage")driver=webdriver.Chrome(options=options)driver.get("https://www.google.com")print(driver.page_source[:200])# 输出部分 HTMLdriver.quit()

方式三:加一些防检测参数(爬虫/防反爬常用)

options=Options()options.add_argument("--headless=new")options.add_argument("user-agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/132.0.0.0 Safari/537.36")options.add_experimental_option("excludeSwitches",["enable-automation"])options.add_experimental_option('useAutomationExtension',False)driver=webdriver.Chrome(options=options)

3. 核心概念:元素定位(8 大主流方式)

定位方式语法示例适用场景优先级建议
idfind_element(By.ID, “kw”)最高优先,唯一性强★★★★★
namefind_element(By.NAME, “wd”)表单 input name★★★★☆
class namefind_element(By.CLASS_NAME, “s_ipt”)单个 class★★★☆☆
tag namefind_elements(By.TAG_NAME, “a”)找所有链接/按钮★★☆☆☆
link textfind_element(By.LINK_TEXT, “新闻”)精确匹配超链接文字★★★☆☆
partial link textfind_element(By.PARTIAL_LINK_TEXT, “新”)模糊匹配链接文字★★☆☆☆
css selectorfind_element(By.CSS_SELECTOR, “#kw”)
.s_ipt
input[type=‘text’]
最强大、最快、推荐掌握★★★★★
xpathfind_element(By.XPATH, “//*[@id=‘kw’]”)
//input[@name=‘wd’]
最灵活,但慢、易碎★★★★☆

推荐顺序(2026 年最佳实践):
ID > name > css > xpath(最后用) > class > link text

代码示例(百度搜索)

fromseleniumimportwebdriverfromselenium.webdriver.common.byimportByfromselenium.webdriver.common.keysimportKeysimporttime driver=webdriver.Chrome()driver.get("https://www.baidu.com")# 定位搜索框(多种写法等价)search_box=driver.find_element(By.ID,"kw")# search_box = driver.find_element(By.NAME, "wd")# search_box = driver.find_element(By.CSS_SELECTOR, "#kw")# search_box = driver.find_element(By.XPATH, "//input[@id='kw']")search_box.clear()# 清空search_box.send_keys("Python Selenium 教程")search_box.send_keys(Keys.ENTER)# 回车搜索time.sleep(3)# 粗暴等待(后面学智能等待)print(driver.title)driver.quit()

4. 必须掌握:显式等待(WebDriverWait)——避免 sleep 地狱

fromselenium.webdriver.support.uiimportWebDriverWaitfromselenium.webdriver.supportimportexpected_conditionsasEC wait=WebDriverWait(driver,timeout=10,poll_frequency=0.5)# 每0.5秒检查一次,最多等10秒# 等待元素可见wait.until(EC.visibility_of_element_located((By.ID,"result_logo")))# 等待元素可点击wait.until(EC.element_to_be_clickable((By.CSS_SELECTOR,".btn.btn-primary")))# 等待标题包含某文字wait.until(EC.title_contains("Python"))

常用 EC(expected_conditions)

  • visibility_of_element_located
  • presence_of_element_located(在 DOM 中即可,不必可见)
  • element_to_be_clickable
  • text_to_be_present_in_element
  • title_is / title_contains
  • staleness_of(元素消失)

5. 常见交互操作汇总

element=driver.find_element(By.ID,"su")element.click()# 点击element.send_keys("输入内容")# 输入element.clear()# 清空输入框element.get_attribute("value")# 获取 value 属性element.text# 获取显示文本element.is_displayed()# 是否可见element.is_enabled()# 是否可用element.is_selected()# radio/checkbox 是否选中# 浏览器操作driver.back()driver.forward()driver.refresh()driver.maximize_window()driver.set_window_size(1200,800)driver.save_screenshot("baidu.png")# 截图

6. 窗口/iframe/警报处理

# 切换窗口(多标签)handles=driver.window_handles driver.switch_to.window(handles[1])# 切换到第二个标签# 切换 iframedriver.switch_to.frame("iframe_id_or_name_or_element")driver.switch_to.default_content()# 切回主文档# 处理 alert/confirm/promptalert=driver.switch_to.alert alert.accept()# 确认alert.dismiss()# 取消alert.text# 获取弹窗文字alert.send_keys("输入")# prompt 输入

7. 真实项目小实战:自动登录某网站(伪代码)

driver=webdriver.Chrome()wait=WebDriverWait(driver,15)driver.get("https://example.com/login")wait.until(EC.presence_of_element_located((By.NAME,"username"))).send_keys("your_account")driver.find_element(By.NAME,"password").send_keys("your_pass")driver.find_element(By.CSS_SELECTOR,"button[type='submit']").click()# 等待登录成功(例如个人中心元素出现)wait.until(EC.presence_of_element_located((By.CLASS_NAME,"user-avatar")))print("登录成功!")driver.save_screenshot("login_success.png")

8. 常见报错 & 解决方案(2026 年高频)

错误原因 & 解决办法
NoSuchDriverException浏览器版本与驱动不匹配 → 升级 selenium 或用 webdriver-manager 强制更新
ElementNotInteractableException元素被遮挡/不可见 → 加等待 + scrollIntoView 或 ActionChains 移动鼠标
StaleElementReferenceException页面刷新后元素失效 → 重新定位元素,不要缓存 element
TimeoutException等待超时 → 延长 timeout 或检查 locator 是否正确
SessionNotCreatedException驱动版本错 → Selenium Manager 自动处理,若失败:options.add_argument(“–headless=new”)
undetected-chromedriver 检测网站强反爬 → 用 undetected-chromedriver 库(pip install undetected-chromedriver)

9. 进阶方向建议(学完基础后)

  • Page Object Model(POM)设计模式
  • pytest + selenium 集成(推荐测试框架)
  • 处理验证码(OCR / 人工打码平台)
  • 多线程/分布式(selenium-grid)
  • 结合 Playwright 迁移(未来趋势)
  • headless + proxy + user-agent 随机 → 爬虫防封

一句话总结
2026 年 Selenium 安装几乎零成本(Selenium Manager 功不可没),学会显式等待 + CSS 定位 + POM,你就基本能应对 90% 的浏览器自动化需求。

有哪部分还想再细讲?
例如:

  • 如何处理滑块验证码
  • POM 完整项目模板
  • headless + 绕过 Cloudflare / Akamai
  • pytest + allure 报告

随时告诉我,我继续展开~

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/27 4:29:57

2026年01月20日最热门的开源项目(Github)

本期榜单主要关注于开源项目,尤其是与编码代理、人工智能和开发工具相关的项目。以下是对榜单的详细分析: 1. 项目类型分析 榜单中的项目主要以TypeScript和Python为主。其中,TypeScript项目占据了多数,反映出在前端和后端开发中…

作者头像 李华
网站建设 2026/5/1 5:12:50

基于PSO-GA混合算法的施工进度计划多目标优化,以最小化总成本并实现资源均衡,满足工期约束和资源限制附MATLAB代码

✅作者简介:热爱科研的Matlab仿真开发者,擅长数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。🍎 往期回顾关注个人主页:Matlab科研工作室👇 关注我领取海量matlab电子书和数学建模资料 &#x1f34…

作者头像 李华
网站建设 2026/5/1 2:28:54

AI软件工程落地:IQuest-Coder-V1开源模型实战指南

AI软件工程落地:IQuest-Coder-V1开源模型实战指南 你是否还在为复杂的代码调试、低效的开发流程或难以维护的项目结构而头疼?有没有一种AI模型,能真正理解代码的“演化逻辑”,而不仅仅是静态地补全几行函数?现在&…

作者头像 李华
网站建设 2026/5/1 8:07:50

基于ModelScope的unet部署教程:快速搭建AI画师系统

基于ModelScope的unet部署教程:快速搭建AI画师系统 1. 教程目标与前置准备 你是否也想拥有一个能自动把真人照片变成卡通头像的小工具?今天我们就来手把手教你,如何用阿里达摩院 ModelScope 上的 cv_unet_person-image-cartoon 模型&#x…

作者头像 李华
网站建设 2026/5/1 6:39:17

GPEN浏览器兼容性指南:Chrome/Edge/Firefox最佳实践

GPEN浏览器兼容性指南:Chrome/Edge/Firefox最佳实践 1. 引言:为什么浏览器选择如此重要? 你是不是也遇到过这种情况:在一台电脑上GPEN运行流畅,换台设备却卡顿、加载失败,甚至界面错乱?问题很…

作者头像 李华
网站建设 2026/5/1 4:43:41

学霸同款10个AI论文网站,助你轻松搞定本科毕业论文!

学霸同款10个AI论文网站,助你轻松搞定本科毕业论文! 论文写作的“秘密武器”,你真的了解吗? 在本科毕业论文的写作过程中,很多同学都曾陷入过“写不下去”“思路混乱”“查重压力大”的困境。尤其是随着AI技术的广泛…

作者头像 李华